OpenStack — Keystone

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进行访问。
在这里插入图片描述

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角色。
在这里插入图片描述

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为例:
在这里插入图片描述

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_李少侠_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值