openstack keystone 总结
1.OpenStack组件
OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack是一个不断发展的系统,在它的发展历程之中,它的组件个数在增加,服务质量在提升。下图为OpenStack的核心组件:

OpenStack核心组件的作用:
Nova:管理VM的生命周期,是OpenStack的最核心服务。
Neutron:提供网络连接服务。
Glance:管理VM的启动镜像。
Cinder:为VM提供块存储服务。
Swift:提供对象存储服务。
Keystone:为OpenStack提供认证与权限管理服务。
Horizon:为OpenStack用户提供一个Web自服务Portal。
2.Keystone功能
Keystone是 OpenStack 框架中负责管理身份验证、服务规则和服务令牌功能的模块。用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过 Keystone 来处理。
在图2中,我们可以看到OpenStack中的每一个组件的运作都离不开Keystone的身份认证与权限管理。用户每一次向系统发送请求的时候,在发送信息中,都会加上token。而每一个组件,在提供相应的服务之前,都会把token发给keystone确认,只要在keystone确认了token的真实性之后,才会给用户提供相应的服务。所以说其请求都需要经过Keystone的认证,才能得到相应的权限。

3.keystone管理的相关概念
Keystone 中主要涉及到如下几个概念:User、Project、Role、Token、Domain、Group。下面对这几个概念进行简要说明。
3.1User:用户
顾名思义就是使用服务的用户,可以是人、服务或者是系统,只要是使用了 Openstack 服务的对象都可以称为用户。一个项目可以有多个用户,一个用户也可以属于一个或多个项目。
用户对项目的操作权限由用户在项目中承担的角色来决定。
3.2Project:项目
它是各个服务中的一些可以访问的资源集合或者说叫资源组。它是一个容器,用于组织和隔离资源,或标识对象。
3.3Token:令牌
Token即是信物、令牌,用户通过用户名和密码获取在某个项目下的token,通过token,可以实现单点登录。
令牌是用来访问资源的任意比特的文本。每个令牌有一个访问范围。令牌可在任意时间收回,并在一个有限的时间内有效。在长时间没有进行操作的时候,我们常需要重新登陆获取新的token才能进行访问。
3.4Role:角色
Role的本质就是一堆ACL的集合,用于划分权限。
它代表一组用户可以访问的资源权限,例如Nova中的虚拟机、Glance中的镜像可执行特定系列操作的用户特性。角色包括一系列权利和特权。用户可继承其所属角色的权利和特权。在身份服务中,颁发给用户的令牌包括用户能承担的角色列表。这个用户调用的服务决定他们怎样解释这个用户所属的角色,以及每个角色授予访问的操作和资源。
角色可以被指定给用户,使得该用户获得角色对应的操作权限。
role 的名称没有意义,其意义在于 policy.json 文件根据 role 的名称所指定的允许进行的操作。系统默认使用管理Role admin和成员Role user(过去的普通用户角色是:_member_)。所以最简单地情况就是,role只有 admin 和user(member)两个,前者表示管理员,后者表示普通用户。
3.5Domain:域
V3 利用 Domain 实现真正的多租户(multi-tenancy)架构,Domain 担任 Project 的高层容器。云服务的客户是 Domain 的所有者,他们可以在自己的 Domain 中创建多个 Projects、Users、Groups 和 Roles。通过引入 Domain,云服务客户可以对其拥有的多个 Project 进行统一管理,而不必再向过去那样对每一个 Project 进行单独管理。
3.6 Group:组
Group 是一组 Users 的容器,可以向 Group 中添加用户,并直接给 Group 分配角色,那么在这个 Group 中的所有用户就都拥有了 Group 所拥有的角色权限。通过引入 Group 的概念,Keystone V3 实现了对用户组的管理,达到了同时管理一组用户权限的目的。这与 V2 中直接向 User/Project 指定 Role 不同,使得对云服务进行管理更加便捷。
Group与Domain是在keystoneV3版本才引进的新概念。
4.身份管理层次

如图中所示,在一个 Domain 中包含 3 个 Projects,可以通过 Group1 将 Role Sysadmin直接赋予 Domain,那么 Group1 中的所有用户将会对 Domain 中的所有 Projects 都拥有管理员权限。也可以通过 Group2 将 Role Engineer 只赋予 Project3,这样 Group2 中的 User 就只拥有对 Project3 相应的权限,而不会影响其它 Projects。
4.1 domain、project、group、user层次
4.1.1 user与group

User用户和group组是包含关系,但是却不是一定的上下级,用户可以是组中成员,也可以是单独的一个用户,就如上图中的user2、user3、user4,他是系统中的用户,但是它不属于任何一个组。他可以直接属于某一个项目,对于项目存在管理权。User只有在直接或者间接的与某一个项目存在对应关系,才能登陆Openstack系统。
4.1.2 group与project
Group组与project之间,我们可以选择赋予group组对应project的权限,就如上图中,我们赋予group1对project1、project2这俩个项目的管理权限,在此同时,我们也可以把project1和project2的管理权限赋予group2,这样的话,group1和group2两组同时都拥有了project1和project2的管理权。从这个管理权限的赋予关系上,我们可以看到,group组与project项目之间的是一个多对多的关系。
4.1.3 project与domain
Project与domain之间也是包含关系,Domain 担任 Project 的高层容器。云服务的客户是 Domain 的所有者,他们可以在自己的 Domain 中创建多个 Projects、Users、Groups 和 Roles。通过引入 Domain,云服务客户可以对其拥有的多个 Project 进行统一管理,而不必再向过去那样对每一个 Project 进行单独管理。
4.2 role、project、user层次

每一个user都会对某一些project存在管理权,如果没有管理权的话,user将会无法正常登陆Openstack系统。同时,每一个用户都会有一个对应的角色,这个角色就是ACL的集合。在系统默认中,存在俩个角色,admin-管理员与user(member)普通用户。
5.keystone 的访问流程
下面通过本文上面的图2来说明 Keystone 和其它 OpenStack 服务之间是如何交互和协同工作的。首先用户向 Keystone 提供自己的身份验证信息,如用户名和密码。Keystone 会从数据库中读取数据对其验证,如验证通过,会向用户返回一个 token,此后用户所有的请求都会使用该 token 进行身份验证。如用户向 Nova 申请虚拟机服务,nova 会将用户提供的 token 发给 Keystone 进行验证,Keystone 会根据 token 判断用户是否拥有进行此项操作的权限,若验证通过那么 nova 会向其提供相对应的服务。其它组件和 Keystone 的交互也是如此。
6.界面说明
openstack keystone 总结的更多相关文章
- OpenStack Keystone安装部署流程
之前介绍了OpenStack Swift的安装部署,采用的都是tempauth认证模式,今天就来介绍一个新的组件,名为Keystone. 1. 简介 本文将详细描述Keystone的安装部署流程,并给 ...
- OpenStack Keystone架构
一. Keystone简介 1. OpenStack Keystone简介 2. Keystone安装与部署 2.1 包安装Keystone 2.2 源码安装源码安装 3 配置运行Keystone 3 ...
- Ubuntu 14.04 LTS 安装 Juno 版 OpenStack Keystone
本文介绍如何在Ubuntu 14.04 LTS 上安装Juno版的Keystone, 我们采用的是手动安装的方式, 同时仅针对OpenStack的身份与访问管理系统Keystone. 事实上OpenS ...
- Openstack keystone组件详解
OpenStack Keystone Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证.服务规则和服务令牌功能的模块.用户访问资源 ...
- Openstack Keystone 认证服务(四)
Openstack Keystone 认证服务(四) keystone 的安装完全依赖ocata的源, 如果没有建议自己搭建. 否则用的源不对会产生各种奇葩问题. 创建keystone库和用户: ## ...
- OpenStack Keystone v3 API新特性
原连接 http://blog.chinaunix.net/uid-21335514-id-3497996.html keystone的v3 API与v2.0相比有很大的不同,从API的请求格式到re ...
- openstack Keystone验证服务集群
#Keystone验证服务群集 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##.Keystone验证服务集群 ...
- 二、OpenStack—keystone组件介绍与安装
一.Keystone介绍 keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证.令牌的发放和校验.服务列表.用户权限的定义等等 ...
- OpenStack keystone节点搭建(官方2018年4月份文档)
参考文档:https://docs.openstack.org/install-guide/common/conventions.html https://docs.openstack.org/mit ...
- [转]OpenStack Keystone V3
Keystone V3 Keystone 中主要涉及到如下几个概念:User.Tenant.Role.Token.下面对这几个概念进行简要说明. User:顾名思义就是使用服务的用户,可以是人.服务或 ...
随机推荐
- 不用图片做的三角语言框效果,纯样式编写,css三角样式写法
2010-07-05 19:57:28 博主 回复 用户昵称 在秋日真的有轻柔吧. 上边效果与理想的有误差,代码布不上去,下边是源代码,另行保存后查看真正效果,下图是真正效果,区别在三角处,里面颜 ...
- First-class function
https://en.wikipedia.org/wiki/First-class_function In computer science, a programming language is sa ...
- Python爬虫 | xpath的安装
错误信息:程序包无效.详细信息:“Cannot load extension with file or directory name . Filenames starting with "& ...
- Spring和MyBatis整合(注解版)
1.导入所需要的依赖 <!--MyBatis和Spring的整合包 由MyBatis提供--> <dependency> <groupId>org.mybatis& ...
- 数据库MySQL调优实战经验总结<转>
数据库MySQL调优实战经验总结 MySQL 数据库的使用是非常的广泛,稳定性和安全性也非常好,经历了无数大小公司的验证.仅能够安装使用是远远不够的,MySQL 在使用中需要进行不断的调整参数或优化设 ...
- 【小盘子看源码-MyBatis-1】MyBatis配置文件的加载流程
众所周知,Mybatis有一个全局的配置,在程序启动时会加载XML配置文件,将配置信息映射到org.apache.ibatis.session.Configuration类中,例如如下配置文件. &l ...
- Delphi XE7并行编程: 并行For循环
从Delphi XE7开始,引入了全新的并行编程库用于简化并行编程,它位于System.Threading单元中. 下面是一个判断素数的简单例子:function IsPrime (N: Intege ...
- java和vue2.0
1 java中的el表达式${对象.属性}和vue中的双向数据绑定{{mode.xx}}感觉有点类似 2 java中 request.setAttribute("hots", l ...
- TFS变更地址
本文链接:https://blog.csdn.net/qq_31117007/article/details/78044381 1: 今天公司服务器换了IP地址,然后发现tfs的服务器删除不了,也添加 ...
- JVM探究之 —— 垃圾回收(一)
垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物.事实上,GC的历史比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和 ...