文章目录

  • Keystone
  • 基础概念
  • Authentication
  • Credentials
  • Endpoint
  • Domain
  • Group
  • Project
  • Region
  • Role
  • Service
  • Token
  • User
  • Keystone在OpenStack中的工作流程


Keystone

Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证、服务访问规则和服务令牌功能的组件。用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过 Keystone 来处理。Keystone 类似一个服务总线, 或者说是整个 Openstack 框架的注册表,OpenStack 服务通过 Keystone 来注册其 Endpoint(服务访问的URL),任何服务之间的相互调用,都需要先经过 Keystone 的身份验证,获得目标服务的 Endpoint ,然后再调用。
Keystone 的主要功能如下:

  • 管理用户及其权限;
  • 维护 OpenStack 服务的 Endpoint;
  • Authentication(认证)和 Authorization(鉴权)。

基础概念

Authentication

确认用户身份的过程。为了确认传入的请求,keystone会验证用户提供的一组凭证。

最初,这些凭证是用户名和密码,或者用户名和API key。

当keystone验证用户凭证时,它会发出一个认证令牌。用户在随后的请求中提供令牌。

Credentials

确认用户身份的凭证。

例如:

  • 用户名和密码
  • 用户名和API key
  • keystone服务提供的身份token。

Endpoint

网络可访问的地址,通常是URL,通过它您可以访问服务。

Endpoint 分为三类:

  • admin url :给admin用户使用,Port:35357
  • internal url:OpenStack内部服务使用来跟别的服务通信,Port:5000
  • public url:互联网用户可以访问的地址,Port:5000

Domain

域是定义用于管理Identity实体的管理边界的项目和用户的集合。域可以代表个人、公司或运营商拥有的空间。它们直接向系统用户公开管理活动。用户可以被授予域的管理员角色。域管理员可以在域中创建项目、用户和组,并为域中的用户和组分配角色。
Domain 可以认为是 project,user,group 的 namespace。 一个 domain 内,这些元素的名称不可以重复,但是在两个不同的domain内,它们的名称可以重复。因此,在确定这些元素时,需要同时使用它们的名称和它们的 domain 的 id 或者 name。

Group

组是一个Domain部分用户的集合。它可以让管理员快捷地对多个用户赋予相同的角色。例如将groupA赋予roleA,那么groupA中所有的用户都拥有roleA。移除角色亦是如此。

Project

在Domain下唯一。对资源或标识对象进行分组或隔离的容器。根据服务运营商的不同,项目可能映射到客户、帐户、组织或租户。

Region

表示OpenStack部署的总体划分。

如图所示:一个region拥有一套openstack,它们使用同一个keystone。当用户页面访问时,keystone会检测到多个region的存在并显示给用户,使得用户可以选择某一region进行访问。

openstack keystone 数据库 解析 openstack中keystone作用_云计算

Role

本身是一堆ACL集合,主要用于权限的划分。Role在Domain下是唯一的。其名称的意义在于policy.json根据role名称判断用户是否拥有执行操作的权限。
policy.json位于/etc/keystone/下,定义了某个role所能进行的操作。可以使用oslopolicy-policy-generator命令生成。

结合Domain,Project,admin还可以分为system admin,domain admin和project admin。

keystone默认提供三个角色:admin,member,reader。三者关系如下图,如果一个用户被赋予了admin角色,那么他还会拥有member,reader角色;如果被赋予了member角色,也就意味着它还拥有reader角色。

openstack keystone 数据库 解析 openstack中keystone作用_Endpoint_02

admin角色在相应范围内(system,domian,project)拥有最高权限。

reader角色在相应范围内提供资源的只读权限。

member介于以上两种角色之间。更多的应用于其他服务。在相应范围内提供查询,创建功能。

Service

OpenStack服务(Compute (nova)、Object Storage (swift)、Image service (glance)),提供一个或多个终端,供用户访问资源和执行操作。

Token

一个字母-数字的文本字符串,允许访问OpenStack api和资源。令牌可以在任何时候被撤销,并且在一定的时间内有效。

keystone目前提供两种token:Fernet token和JWS token。默认Fernet token。

User

使用OpenStack云服务的人、系统或服务的数字表示。用户拥有登录权限,可以使用指定的令牌访问资源。用户可以被直接分配到一个特定的project中。
用户表现为一个独立的API消费者。只在Domain下全局唯一。

Keystone在OpenStack中的工作流程

以创建VM为例:

openstack keystone 数据库 解析 openstack中keystone作用_Domain_03