Openstack之Keystone基础

  • Post author:
  • Post category:其他




Openstack之Keystone基础


Keystone是Openstack的身份管理服务(Identity Service)。在Openstack的整体框架结构中,Keystone的作用类似一个服务总线,Nova、Glance、Horizon、Swift、Cinder以及Neutron等其他服务通过Keystone来注册其服务的Endpoint,针对这些服务的任何调用都需要经过Keystone的身份认证,并获得服务的Endpoint来进行访问。



1、一些基本概念





User:用户。通过keystone访问Openstack服务的个人、系统或者是某个服务,keystone会通过认证信息(Credential,比如密码等)验证用户请求的合法性,通过验证的用户将会分配到一个特定的令牌,该令牌可以用于后续资源访问的一个通行证。

Tenant:租户。从实际情况来看,可以把租户理解成一个组织或者是一个项目。租户是各个服务中的一些可以访问的资源的集合,例如,在Nova中,可以把租户理解成一组虚拟机的拥有者,在Swift中则是一组容器的拥有者。基于此,我们需要在创建虚拟机时指定某个租户,在Cinder创建卷时也要指定具体的租户。用户默认总是绑定到某个租户上,用户访问租户的资源前,必须与该租户关联,并且指定该用户在租户下的角色。

Role:角色。一个用户所具有的角色,角色不同意味着被赋予的权限不同,只有知道用户被授予的角色才能知道该用户是否有权限访问某资源。用户可以被添加到任意一个全局的或租户内的角色中,在全局的角色中,用户可以对所有的租户执行角色所规定的权限,在租户内的角色中,用户仅可以在当前租户内执行角色规定的权限。

Service:服务,比如Nova、Swift、Glance、Cinder等。根据User、Tenant和Role一个服务可以确认当前用户是否具有访问其资源的权限。服务对外暴露一个或者多个Endpoint,用户是有通过这些Endpoint才可以访问所需资源或者执行某些操作。

Endpoint:端点。指一个可以用来访问某个具体服务的网络地址,因此我们可以将端点理解为服务的访问点,如果需要访问一个服务,就必须知道它的Endpoint。一般以一个URL地址来表示一个端点,URL具有Public、Internal和Admin三种,Public URL是为全局提供的服务端点,Internal URL相对于Public URL来说提供内部服务之间的访问,Admin URL是提供给管理员使用。

Token:令牌。用户通过Credential获取在某个租户下的令牌,以及令牌的颁发时间和有效时间。

Credentials:凭证。用户的用户名和密码,或者是用户名和API密钥,或者是身份管理服务提供的认证令牌。

Domain:Keystone V3 API中新加的概念。一个域可以包含多个项目,用户被赋予域管理员权限,那么他就可以创建属于域的用户/组,定义用户在该域内的角色。一个域的管理员权限只限定于此域。而在V2 API中管理员权限是全局的。

Group:Keystone V3 API中新加的概念。组是用户的集合,有了组之后,域管理员就无需针对单个的用户来定义其角色了,换言之,它可以直接定义一个组所对应的角色,而这个组中的所有用户都具有该角色。



2、Keystone工作流程





一次创建虚拟机的操作涉及的Keystone的工作流程如下:



第一步:用户发送自己的凭证到Keystone,Keystone认证通过后,返回给Alice一个token1以及服务目录。

第二步:用户通过token1请求Keystone查询他所拥有的Tenant,Keystone验证token1成功后,返回用户一个Tenant列表。

第三步:用户选择一个租户,发送自己的凭证给Keystone申请token,Keystone验证后,返回token2。与此同时,Keystone还将服务端点列表返回给用户。

第四步:用户选择Endpoint并发送token2至Endpoint请求创建虚拟机,此时会再次向Keystone验证token2的有效性,并验证用户是否有相应操作的权限。

第五、六、七步:通过验证后,访问Service,Service创建虚拟机并将结果返回。

下图也描述了创建虚拟机的过程:



文章后面会提到该方式的局限性。



3、Keystone的内部功能

在上一节创建虚拟机的过程中,Keystone是通过一系列内部服务(功能)来完成其工作的,这些内部服务(功能)包括:


Identity





The Identity service provides auth credential validation and data about Users,Groups.


Resource





The Resource service provides data about Projects and Domains.


Assignement





The Assignment service provides data about Roles and Role assignments tothe entities managed by the Identity and Resource services.


Token





The Token service validates and manages Tokens used for authenticatingrequests once a user’s credentials have already been verified.


Catalog





The Catalog service provides an endpoint registry used for endpointdiscovery.


Policy





The Policy service provides a rule-based authorization engine and theassociated rule management interface.


每个


Keystone


功能都支持用于集成到异构环境并展示不同功能的后端插件。更常见的一些后端包括:


Key Value Store


:一个接口,支持主键查找,例如内存中的字典。


Memcached


:分布式内存缓冲系统。


Structured Query Language (SQL)



版权声明:本文为wang_san_shi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。