1、简介
定位:Keystone属于共享服务层,为OpenStack其他项目提供认证
交互关系:没有依赖服务
基本概念:
2、作用6个
Keystone作为OpenStack中一个独立的提供安全认证的模块,主要负责OpenStack用户的身份认证、令牌管理、提供访问资源的服务目录,以及基于用户角色的访问控制用户访问系统的用户名和密码是否正确,令牌的发放,服务端点的注册,以及该用户是否具有访问特定资源的权限等都离不开Keystone服务的参与。
ldentity: 身份服务,提供身份验证凭证及有关用户和用户组数据
Token: 令牌,Keystone在确认用户的身份后,会给用户提供一个核实身份且可以用于后续资源请求的令牌。
Catalog: 对外提供一个服务的查询目录,服务目录存储了OpenStack所有服务的Endpoint信息。
Policy: 安全策略或者访控制,一个基于规则的身份验证引擎,通过配置文件来定义各种动作与用户角色的匹配关系。
Resource: 提供关于Domain和Proiect的数据
Assignment: 提供关于Role和Role Assignment的数据,负责角色授权。
3、架构
4、对象模型
5、工作原理--基于令牌、外部、本地认证
这个过程看似与UUID一样,但是其实是有区别的,UUID由于没有加密和解密过程Keystone在生成token之后要本地缓存Token,方便后面验证。但是Fernet进行对等验证,无需缓存token,每次验证只需要进行解密验证即可,无需持久化存储,大小也合适,比较适合多数据中心的场景。
从安全的角度上看,UUID无需维护密钥,PKI需要妥善保管Keystone server上的私钥,Fernet需要周期性的更换密钥。
因此从安全、维护成本和成熟度上看,UUID > PKI/PKIZ > Fernet 。如果:
Keystone server 负载低,region少于3个,采用UUID令牌0
Keystone server 负载高,region少于3个,采用PKI/PKIZ令牌。0
Keystone server 负载低,region大与或等于3个,采用UUID令牌0
Keystone server 负载高,region大于或等于3个,目前OpenStack新版本默认0采用Fernet令牌。
6、工作流程
首先用户需要使用OpenStack,第一步就要向Keystone提供用户名密码来获取Token.当用户获取Token后,需要向Nova发送创建虚拟机请求,Nova负责调用计算资源并管理虚拟机的生命周期,所以这个创建请求要发送到Nova。请求的Head中会携带Token,当Nova-api接收到请求后,会将Token传递到Keystone进行验证是否有效合法。当验证成功后返回信息给Nova,Nova才开始进行创建VM操作。这边不具体介绍Nova如何操作,但是我们知道创建一台虚拟机,不仅需要准备CPU、内存等计算资源,还要有相应的网络、存储等资源,这里以网络资源为例,Nova-api将token透传给Nova-compute,Nova-compute会向Neutron-server发送与网络相关操作请求请求Head中也携带Token,Neutron收到请求后也会将Token传递到Keystone验证验证成功才执行相应操作。
7、各服务操作权限控制的实现--基于RBAC的Policy
Policy模块在检测时需要三方面的数据,第一个是policyjson策略配置文件,保存在服务配置目录下,第二个是auth token添加到http头部的token数据,就是前面说到的基于令牌认证中的那些令牌数据。还有用户请求数据,到底请求哪些内容
在图中实例policy.ison文件中,定义了all admin包含了哪些角色,admin和internal admin。定义了list project针对all admin的具体规则,create project时需要admin角色。
在处理的过程中,验证Token有效性,根据用户的请求信息到policy.json策略配置文件验证其用户是否有对应角色和权限
首先用户发送基本信息给Keystone,一般是用户名和密码。Keystone经过验证后会返回一个Token给用户,用户向Nova发送创建虚拟机请求,并携带Token信息,nova接收到请求后,会拿着Token去Keystone进行验证,验证成功后开始执行创建VM操作,Nova会向Glance发送申请镜像信息并携带Token,会向Neutron发送申请网络信息也会携带Token,Glance和Neutron组件接收到请求后,都会向Keystone验证Token的有效性(图中仅用了一条线表示,请注意理解 ),验证通过即执行相应的操作,返回完成信息,当VM创建完成后,Nova返回创建成功信息给用户,用户即可使用虚拟机。
8、缩略语
·LDAP: Lightweight Directory Access Protocol,轻型目录访问协议,是一个开放的、中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。
SAML: Security Assertion Markup Language,安全断言标记语言,是一个基于XML的开源标准数据格式,它在当事方之间交换身份验证和授权数据,尤其是在身份提供者和服务提供者之间交换。
SQL: Structured Query Language,结构化查询语言,是一种特殊目的的编程语言,是种数据库查询和程序设计语言,用于存取数据及查询、更新和管理关系数据库系统。
CRUD: 指在做计算处理时的增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。
UUID: Universally Unique ldentifier,通用唯一识别码,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。PKI: Public Key lnfrastructure,公钥基础设施,是一个包括硬件、软件、人员、策略和规程的集合,用来实现基于公钥密码体制的密钥和证书的产生、管理、存储、分发和撤销等功能。
标签:令牌,1.3,验证,用户,Nova,认证,Token,Keystone From: https://blog.51cto.com/u_16092442/6693346