您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
OpenStack —— 认证服务Keystone
 
   次浏览      
 2019-7-23 
 
编辑推荐:
本文来自于51cto,文章主要介绍了在OpenStack框架中,负责身份验证、服务规则和服务令牌功能的Keystone。

一、Keystone介绍

Keystone(OpenStack Identity Service)是OpenStack框架中,负责身份验证、服务规则和服务令牌的功能, 它实现了OpenStack的Identity API。Keystone类似一个服务总线, 或者说是整个Openstack框架的注册表, 其他服务通过keystone来注册其服务的Endpoint(服务访问的URL),任何服务之间相互的调用, 需要经过Keystone的身份验证, 来获得目标服务的Endpoint来找到目标服务。

Keystone主要功能:

管理用户及其权限;

维护OpenStack Services的Endpoint;

Authentication(认证)和Authorization(授权)。

二、Keystone主要组件

1、Server

提供一个RESTful的接口,接收用户的请求并对其进行认证以及授权。

2、Drivers

这个已经默认集成到Server中了,主要从后端存储获取用户的身份信息,比如从数据库或者LDAP中获取。

3、Modules

中间件模块运行在会用到Keystone服务的其他的OpenStack的组件的空间中,这些模块拦截服务请求,提取用户凭据,并将它们发送到Server进行授权。使用Python WEB接口来整合中间件模块和OpenStack其他组件的通信,比如这些模块可以运行在镜像服务的空间中,也可以运行在计算服务的空间中。

三、Keystone的重要概念

1、User(用户)

User指代任何使用OpenStack的实体,可以是真正的用户,其他系统或者服务。当User请求访问OpenStack时,Keystone会对其进行验证。

Horizon在Identity->Users管理User,除了admin和demo,OpenStack也为nova、cinder、glance、neutron服务创建了相应的User,admin也可以管理这些User。

2、Group(组)

组是表示用户集合的容器。

3、Credentials(证书)

Credentials是User用来证明自己身份的信息,可以是:

用户名/密码

Token

API Key

其他高级方式

4、Authentication(认证)

Authentication是Keystone验证User身份的过程。

User访问OpenStack时向Keystone提交用户名和密码形式的Credentials,Keystone验证通过后会给User签发一个Token作为后续访问的Credential。

5、Token(令牌)

用户从Keystone那里获取的令牌,用于访问其他服务和资源的凭证,每个令牌都有一个访问范围,允许访问OpenStack范围内的服务资源。

6、Project(项目)

Project 用于将 OpenStack 的资源(计算、存储和网络)进行分组和隔离。

根据OpenStack服务的对象不同,Project可以是一个客户(公有云,也叫租户)、部门或者项目组(私有云)。

这里请注意:

资源的所有权是属于Project的,而不是User。

在OpenStack的界面和文档中,Tenant/Project/Account 这几个术语是通用的,但长期看会倾向使用Project。

每个User(包括 admin)必须挂在Project里才能访问该Project的资源。 一个User可以属于多个 Project。

admin相当于root用户,具有最高权限。

Horizon在Identity->Projects中管理 Project,可以在project中调整用户。

7、Service(服务)

OpenStack的Service包括 Compute (Nova)、Block Storage (Cinder)、Object Storage (Swift)、Image Service (Glance) 、Networking Service (Neutron) 等。

每个Service都会提供若干个Endpoint,User通过Endpoint访问资源和执行操作。

8、Endpoint(访问端点)

Endpoint是一个网络上可访问的地址,通常是一个URL,Service通过Endpoint 暴露自己的API,Keystone负责管理和维护每个Service的Endpoint。

9、Role(角色)

个性化的用户可以执行一组特定的操作,角色包括一组权利和特权,如果用户担当某一角色,就可以继承角色的权利和特权。

在Keystone服务中,发放的令牌(Token)决定了用户的角色,包括一系列的权限,用户调用的服务诠释了用户的角色具体操作权利,即哪些操作可以,哪些操作不可以。

Horizon 的菜单为 Identity->Project->Manage Members,可以为用户分配一个或多个role。

10、Domain

域是项目、用户和组的高级容器,每个都由一个域拥有。每个域定义一个名称空间,其中API可见名称属性存在。Keystone图提供了一个默认域名,称为“Default”。

11、举个例子:

四、管理介绍

1、用户管理

用户身份管理有以下三个主要概念:

用户

项目

角色

这里的用户代表一个真实的人类用户,并有一些列相关信息,如用户名、密码、电子邮件等。

一个用户可以在一个项目中担任多种角色,不同的角色有不同的权限,细化用户角色的权限,也是一门值得探讨的学问。

在/etc/[SERVICE_CODENAME]/policy.json中,控制用户可以对指定服务进行哪些操作。例如,/etc/nova/policy.json中,指定计算服务的访问策略;在/etc/glance/policy.json中,指定镜像服务 的访问策略;在/etc/keystone/policy.json中,指定身份服务的访问策略等。

在Noav、Glance、Keystone的默认policy.json中,访问策略默认只有admin角色,所有不需要admin操作的访问,将由项目中的任何用户、任何角色来完成。

2、服务管理

服务管理有两个主要概念:

服务

访问端点

五、Keystone在OpenStack中的访问流程

1) 用户携带证书或密码进行Keystone认证。

2) Keystone认证通过后返回Token,此Token带有角色限制。

3) 通过Token向Keystone获取服务访问目录。

4) Keystone返回服务访问目录。

5) 携带Token进行虚拟机创建,将指令传递给nova-api。

6) Nova向Keystone验证Token。

7) Nova携带Token访问Glance,这里也需要Keystone验证Token。

8) Glance返回镜像。

9) Nova携带Token,向Neutron请求虚拟机网卡VIF设置参数。

10) Neutron向Keystone验证Token。

11) Nova携带Token验证VIF是否可以访问。

12) Neutron返回成功的信息给Nova。

13) Nova返回创建成功的信息给用户。

14) 虚拟机创建成功。

六、Keystone的身份验证流程案例

用户Alice通过自己的户名和密码向keystone申请token,keystone认证用户名和密码后,返回临时token;

Alice通过临时token发送keystone查询他所拥有的租户,keystone验证临时token成功后,返回Alice的所有租户列表;

Alice选择一个租户,通过用户名和密码申请正式token,keystone认证用户名、密码、tenant后,返回正式token;

Alice通过正式token发送创建server的请求,keystone验证正式token(包括该token是否有效,是否有权限创建虚拟机等)成功后,然后再把请求下发到nova,最终创建虚拟机。

附录:一些解释

Fernet Tokens是K版本的更新内容,区别于UUID tokens只能持久化存入数据库,Fernet tokens完全不需要持久化。部署人员可以通过设置keystone.conf中的[token] provider = keystone来启用Fernet token。

Fernet Tokens需要symmetric encryption keys(对称加密密钥),这些keys可以使用keystone-manage fernet_setup建立, 并且使用keystone-manage fernet_rotate周期性地轮换。这些keys必须被在一个multi-node(或者multi-region)部署中的所有Keystone nodes共享,这样就能使一个node生成的tokens可以立即被其他节点验证。

 

   
次浏览       
相关文章

云计算的架构
对云计算服务模型
云计算核心技术剖析
了解云计算的漏洞
相关文档

云计算简介
云计算简介与云安全
下一代网络计算--云计算
软浅析云计算
相关课程

云计算原理与应用
云计算应用与开发
CMMI体系与实践
基于CMMI标准的软件质量保证