keystone组件
引: 什么是keystone
为何要有keystone
keystone的功能
keystone概念详解
keystone与openstack其他组件关系
keystone与其他组件协同工作流程
keystone工作流程详解
一、什么是keystone
keystone是 OpenStack Identity Service 的项目名称,是一个负责身份管理与授权的组件。
主要功能:实现用户的身份认证,基于角色的权限管理,及openstack其他组件的访问地址和安全策略管理。
二 、为何要有keystone
Keystone项目的主要目的是给整个openstack的各个组件(nova,cinder,glance...)提供一个统一的验证方式:
openstack是由众多组件构成的一套系统,该系统的功能是对外提供服务,因而我们可以将其定义为一个‘庞大的软件’,没有软件不考虑安全因素,Keystone对于通常的应用场景所不同的是他要解决分布式环境下的统一认证。
三、keystone的功能
openstack是一个SOA(面向服务的体系结构,是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来)架构,理论上各子项目独立提供相关服务,互不依赖。如nova提供计算服务,glance提供镜像服务等。
实际上所有的组件都依赖keystone,它有两个功能:
(1)用户管理:验证用户身份的合法性。
(2)服务目录管理:提供服务目录(ServiceCatalog:包括service和endpoint)服务,类似于UDDI服务的概念,用户(无论是Dashboard, APIClient)都需要访问Keystone获取服务列表,以及每个服务的地址(Openstack中称为Endpoint)
四、 keystone概念详解
User:
使用 OpenStack Service 的的对象被称为用户,这里的用户可以是人、服务、系统。
Credentials:
用于确认用户身份的凭证,
具体可以是:
1、用户名和密码
2、用户名和API key
3、一个 Keystone 分配的身份token
Authentication:
确定用户身份的过程。
1、是验证用户身份的过程。Keystone 服务通过检查用户的 Credential 来确定用户的身份。
2、最开始,使用用户名/密码或者用户名/API key作为credential。当用户的credential被验证后,Kestone 会给用户分配一个 authentication token 供该用户后续的请求使用。
3、Keystone中通过Policy(访问规则)来做到基于用户角色(Role)的访问控制。
Token:
1、令牌,使用一个字符串表示。
2、Token一般被用户持有,Token包含了在指定范围和有效时间内可以被访问的资源。在Nova中一个tenant可以是一些虚拟机,在Swift和Glance中一个tenant可以是一些镜像存储,在Network中一个tenant可以是一些网络资源。
Role:
1、本质就是一堆ACL的集合,用于划分权限
2、可以通过给User指定Role,使User获得Role对应的操作权限。
3、Keystone返回给User的Token包含了Role列表,被访问的Services会判断访问它的User和User提供的Token中所包含的Role,及每个role访问资源或者进行操作的权限。
4、系统默认使用管理Role admin和成员Role _member_ 。
5、user验证时必须带有Project(Tenant)
Policy:
1、对于Keystone service来说,Policy就是一个JSON文件,默认是/etc/keystone/policy.json。通过配置这个文件,Keystone实现了对User基于Role的权限管理。
2、OpenStack对User的验证除了OpenStack的身份验证以外,还需要鉴别User对某个Service是否有访问权限。Policy机制就是用来控制User对Project(Tenant)中资源的操作权限。
Service:
指Openstack中运行的组件服务。
Endpoint:
1、是一个可以通过网络来访问和定位某个Openstack service的地址,通常是一个URL
2、不同的region有不同的endpoint(我们可以通过endpoint的region属性去定义多个region)。
3、当Nova需要访问Glance服务去获取image 时,Nova通过访问Keystone拿到Glance的endpoint,然后通过访问该endpoint去获取Glance服务。
4、Endpoint 分为三类:
admin url –> 给admin用户使用,Port:35357
internal url –> OpenStack内部服务使用来跟别的服务通信,Port:5000
public url –> 其它用户可以访问的地址,Port:5000
V3新增的概念:
Tenant 重命名为 Project
添加了 Domain 的概念
添加了 Group 的概念
keystone管理和保存了user信息,管理user相关的tenant,role,group和domain等;用户credential的存放,验证,token管理,下图是各部分关系

| User | 住宾馆的人 |
| Credentials | 开启房间的钥匙 |
| Authentication | 宾馆为了拒绝不必要的人进出宾馆,专门设置的机制,只有拥有钥匙的人才能进出 |
| Token | 口令 |
| Tenant(project) | 宾馆 |
| Service | 宾馆可以提供的服务类别,比如,饮食类,娱乐类 |
| Endpoint | 具体的一种服务 |
| Role | VIP 等级,VIP越高,享有越高的权限 |
五、keystone与openstack其他组件关系

当用户从keystone获取token后,用该token访问其他服务时,该service会再一次用该token去访问keystone来验证token的正确性。
六、keystone与其他组件协同工作流程

七、 keystone工作流程详解
(1) User从Keystone获取令牌以及服务列表;
(2) User访问服务时,亮出自己的令牌。
(3)相关的服务向Keystone求证令牌的合法性。

1、用户登录keystone系统(password或者token的方式),获取一个临时的token和catalog服务目录(v3版本登录时,如果没有指定scope,project或者domain,获取的临时token没有任何权限,不能查询project或者catalog)。
2、用户通过临时token获取自己的所有的project列表。
3、用户选定一个project,然后指定project重新登录,获取一个正式的token,同时获得服务列表的endpoint,用户选定一个endpoint,在HTTP消息头中携带token,然后发送请求(如果用户知道project name或者project id可以直接第3步登录)。
4、消息到达endpoint之后,由服务端(nova)的keystone中间件(pipeline中的filter:authtoken)向keystone发送一个验证token的请求。(token类型:uuid需要在keystone验证token,pki类型的token本身是包含用户详细信息的加密串,可以在服务端完成验证)
5、keystone验证token成功之后,将token对应用户的详细信息,例如:role,username,userid等,返回给服务端(nova)。
6、服务端(nova)完成请求,例如:创建虚拟机。
7、服务端返回请求结果给用户。
keystone组件的更多相关文章
- 二、OpenStack—keystone组件介绍与安装
一.Keystone介绍 keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证.令牌的发放和校验.服务列表.用户权限的定义等等 ...
- openstack项目【day23】:keystone组件基础
本节内容 一 什么是keystone 二 为何要有keystone 三 keystone的功能 四 keystone概念详解 五 keystone内包含的组件 六 keystone与openstack ...
- openstack项目【day23】:keystone组件网关协议
本节内容 一 静态页面和动态页面 二 什么是web server 三 什么是网关协议 3.1 引子 3.2 网关协议 四 网关协议CGI.FastCGI.WSGI.UWSGI 五 网关协议与keyst ...
- Openstack keystone组件详解
OpenStack Keystone Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证.服务规则和服务令牌功能的模块.用户访问资源 ...
- openstack项目【day23】:keystone组件HTTP协议
阅读目录 一 为何要学习HTTP协议 二 用户上网过程 三 HTTP协议 part1 http协议概述 part2 请求协议 part3 响应协议 四 抓包分析HTTP协议 一 为何要学习HTTP协议 ...
- openstack中Keystone组件简解
一.Keystone服务概述 在Openstack框架中,keystone(Openstack Identity Service)的功能是负责验证身份.校验服务规则和发布服务令牌的,它实现了Opens ...
- Openstack组件部署 — keystone(domain, projects, users, and roles)
目录 目录 前文列表 Create a domain projects users and roles domain projects users and roles的意义和作用 Create the ...
- Openstack组件部署 — Keystone Install & Create service entity and API endpoints
目录 目录 前文列表 Install and configure Prerequisites 先决条件 Create the database for identity service 生成一个随机数 ...
- Openstack组件部署 — Keystone功能介绍与认证实现流程
目录 目录 前文列表 Keystone认证服务 Keystone认证服务中的概念 Keystone的验证过程 简单来说 前文列表 Openstack组件部署 - Overview和前期环境准备 Ope ...
随机推荐
- 11-THREE.JS 相机始终朝向某个物体
<!DOCTYPE html> <html> <head> <title></title> <script src="htt ...
- 08-THREE.JS 点面创建物体,克隆物体,多材质物体
<!DOCTYPE html> <html> <head> <title></title> < <script src=&quo ...
- python--基本代码规范
python代码规范:一.标识符 所谓的标识符就是对变量.常量.函数.类等对象起的名字 python语言在任何场景都严格区分大小写!!! python对于标识符的命名有如下规定: 第一个字符必须是字母 ...
- MySQL 事物和数据库锁
1.数据库事物 1. 什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一 ...
- sql server 纵横表的转换
在平常的工作中或者面试中,我们可能有遇到过数据库的纵横表的转换问题.今天我们就来讨论下. 1.创建表 首先我们来创建一张表. sql语句: --1. 创建数据表 if OBJECT_ID('Score ...
- 【整理】2-SAT
2-satisfiability,我们一般将其缩写为 2-sat. 了解全名有助于我们对这个算法的理解. 百度翻译:‘satisfiability’---“可满足性,适定性”. “合取范式可满 ...
- HihoCoder1329 平衡树·Splay(附STL版)
输入 第1行:1个正整数n,表示操作数量,100≤n≤200,000 第2..n+1行:可能包含下面3种规则: 1个字母'I',紧接着1个数字k,表示插入一个数字k到树中,1≤k≤1,000,000, ...
- 【bzoj4987】Tree 树形背包dp
题目描述 从前有棵树. 找出K个点A1,A2,…,Ak. 使得∑dis(AiAi+1),(1<=i<=K-1)最小. 输入 第一行两个正整数n,k,表示数的顶点数和需要选出的点个数. 接下 ...
- 二、python沉淀之路~~字符串属性(str)
1.capitalize的用法:即将输出字符串首字母大写 test = "heLLo" v = test.capitalize() print(v) 结果:Hello. 2.cas ...
- 理解SQL查询的底层原理
阅读目录 一.SQL Server组成部分 二.查询的底层原理 本系列[T-SQL]主要是针对T-SQL的总结. T-SQL基础 [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...