Keystone V3

Keystone 中主要涉及到如下几个概念:User、Tenant、Role、Token。下面对这几个概念进行简要说明。

  • User:顾名思义就是使用服务的用户,可以是人、服务或者是系统,只要是使用了 Openstack 服务的对象都可以称为用户。
  • Tenant:租户,可以理解为一个人、项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户可以根据权限的划分使用租户中的资源。
  • Role:角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。
  • Token:指的是一串比特值或者字符串,用来作为访问资源的记号。Token 中含有可访问资源的范围和有效时间。

下面通过图 1 来说明 Keystone 和其它 OpenStack 服务之间是如何交互和协同工作的。首先用户向 Keystone 提供自己的身份验证信息,如用户名和密码。Keystone 会从数据库中读取数据对其验证,如验证通过,会向用户返回一个 token,此后用户所有的请求都会使用该 token 进行身份验证。如用户向 Nova 申请虚拟机服务,nova 会将用户提供的 token 发给 Keystone 进行验证,Keystone 会根据 token 判断用户是否拥有进行此项操作的权限,若验证通过那么 nova 会向其提供相对应的服务。其它组件和 Keystone 的交互也是如此。

图 1. Keystone 与其它服务的交互

从以上过程可以看出,用户的角色管理在 Keystone 中是很重要的工作。在 Keystone V3 之前,用户的权限管理以每一个用户为单位,需要对每一个用户进行角色分配,并不存在一种对一组用户进行统一管理的方案,这给系统管理员带来了额外的工作和不便。此外,Keystone V3 之前的版本中,资源分配是以 Tenant 为单位的,这不太符合现实世界中的层级关系。如一个公司在 Openstack 中拥有两个不同的项目,他需要管理两个 Tenant 来分别对应这两个项目,并对这两个 Tenant 中的用户分别分配角色。由于在 Tenant 之上并不存在一个更高层的概念,无法对 Tenant 进行统一的管理,所以这给多 Tenant 的用户带来了不便。为了解决这些问题,Keystone V3 提出了新的概念 Domain 和 Group,本文将对 Keystone V3 的相关原理和配置进行介绍。

 

回页首

Keystone V3 API 新特性

Keystone V3 做出了许多变化和改进,我们选取其中较为重要的进行阐述:

  • 将 Tenant 改称为 Project
  • 引入 Domain 的概念
  • 引入 Group 的概念

将 Tenant 改为 Project 并在其上添加 Domain 的概念,这更加符合现实世界和云服务的映射。

V3 利用 Domain 实现真正的多租户(multi-tenancy)架构,Domain 担任 Project 的高层容器。云服务的客户是 Domain 的所有者,他们可以在自己的 Domain 中创建多个 Projects、Users、Groups 和 Roles。通过引入 Domain,云服务客户可以对其拥有的多个 Project 进行统一管理,而不必再向过去那样对每一个 Project 进行单独管理。

Group 是一组 Users 的容器,可以向 Group 中添加用户,并直接给 Group 分配角色,那么在这个 Group 中的所有用户就都拥有了 Group 所拥有的角色权限。通过引入 Group 的概念,Keystone V3 实现了对用户组的管理,达到了同时管理一组用户权限的目的。这与 V2 中直接向 User/Project 指定 Role 不同,使得对云服务进行管理更加便捷。

图 2. Domain、Group、Project、User 和 Role 的关系图

如图 2 所示,在一个 Domain 中包含 3 个 Projects,可以通过 Group1 将 Role Sysadmin直接赋予 Domain,那么 Group1 中的所有用户将会对 Domain 中的所有 Projects 都拥有管理员权限。也可以通过 Group2 将 Role Engineer 只赋予 Project3,这样 Group2 中的 User 就只拥有对 Project3 相应的权限,而不会影响其它 Projects。

 

回页首

Keystone V3 API 调用

下面我们通过实例操作来演示 Keystone V3 API 的使用:当前 Openstack 中存在一个名为“default”的 Domain,和一个名为“test_Group”的 Group。我们要在“default Domain”中新建一个 Project,并在“test_Group”中添加一个用户“test_User”,然后将“test_Group”中的所有 User 指定为新建 Project 的某个 Role。

    1. 获取 token

      创建 JSON 文件填写必要的验证信息,token-request.json 文件中的内容如下所示:

      图 3. 获取 token 的验证信息

      用以上 JSON 文件申请 token 并将 token 写入环境变量“OS_TOKEN”中,以便之后的使用。

      图 4. 获取到的 token

    2. 创建 Project

      成功获得 token 之后,我们就可以用获取的 token 调用 Keystone V3 的 API 与 Keystone 进行交互了。我们可以新建一个 Project,将其命名为“test_Project”:

      图 5. 新建 Project

      创建“test_Project”后,调用 api 查看当前的 Projects,可以看到 test_Project 已经被成功创建:

      图 6. 查看当前所有的 Project 信息

    3. 在 Group 中添加 User

      首先查看当前所有的 Group:

      图 7. 查看当前所有的 Group 信息

      查看所有的 User:

      图 8. 查看当前所有的 User 信息

      将名为“test_User”的 User 添加到名为“test_Group”的 Group 中

      图 9. 为 Group 添加 User

    4. 为 Group 指定 Role

      查看当前所有的 Role:

      图 10. 查看当前所有的 Role 信息

      将名为“admin”的 Role 指派给名为“test_Project”的 Project 中,名为“test_Group”的 Group:

      图 11. 为 Group 指定 Role

      查看“test_Project”中“test_Group”的 Role:

      图 12. 查看 Group 的 Role 信息  转载自http://www.ibm.com/developerworks/cn/cloud/library/1506_yuwz_keystonev3/index.html

      可以看到,已经成功为“test_Project”/“test_Group”指定了名为“admin”的 Role。

[转]OpenStack Keystone V3的更多相关文章

  1. OpenStack Keystone V3 简介

    Keystone V3 简介 Keystone 中主要涉及到如下几个概念:User.Tenant.Role.Token.下面对这几个概念进行简要说明. User:顾名思义就是使用服务的用户,可以是人. ...

  2. OpenStack Keystone v3 API新特性

    原连接 http://blog.chinaunix.net/uid-21335514-id-3497996.html keystone的v3 API与v2.0相比有很大的不同,从API的请求格式到re ...

  3. Openstack Keystone V3 利用 curl 命令获取 token

    curl -i \ -H "Content-Type: application/json" \ -d ' { "auth": { "identity& ...

  4. 在Keystone V3基础上改进的分布式认证体系

    目标 使用java实现keystone v3相关功能与概念: api client authentication service discovery distributed multi-tenant ...

  5. 【openStack】Libcloud 如何支持 keystone V3?

    Examples This section includes some examples which show how to use the newly available functionality ...

  6. OpenStack Keystone安装部署流程

    之前介绍了OpenStack Swift的安装部署,采用的都是tempauth认证模式,今天就来介绍一个新的组件,名为Keystone. 1. 简介 本文将详细描述Keystone的安装部署流程,并给 ...

  7. [转]Setting Keystone v3 domains

    http://www.florentflament.com/blog/setting-keystone-v3-domains.html The Openstack Identity v3 API, p ...

  8. 使用openstackclient调用Keystone v3 API

    本文内容属于个人原创,转载务必注明出处:  http://www.cnblogs.com/Security-Darren/p/4138945.html 考虑到Keystone社区逐渐弃用第二版身份AP ...

  9. Openstack keystone组件详解

    OpenStack Keystone Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证.服务规则和服务令牌功能的模块.用户访问资源 ...

随机推荐

  1. nginx-windows版

    nginx  windows版,添加 分别是: 重启.启动.停止 下载地址:https://files.cnblogs.com/files/007sx/nginx-windows.zip

  2. Java 从静态代理到动态代理

    先举个静态代理的例子,可能多少有些不恰当,不过本次学习记录,重点不在于通信协议. 比如你在一个机房里,你不能联网,只能连通过一台能连公网的代理机器上网.你发送了一个http请求,将由代理帮你上网. 首 ...

  3. Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)

    知识点: 1.使用SQL Helper创建数据库 2.数据的增删查改(PRDU:Put.Read.Delete.Update) 背景知识: 上篇文章学习了保存文件,今天学习的是保存数据到SQL数据库中 ...

  4. Linux 目录下属性查看操作

    1. 查看当前目录所有文件和文件夹的大小 方法一: $du -sh * 或 $du -h -d 0 * '-d 0' 代表查询目录的深度为0 ,也就是当前目录,'-d 3' 表示文件目录深度为3,可以 ...

  5. 4 云计算系列之Openstack简介与keystone安装

    preface KVM 是openstack虚拟化的基础, 再介绍了kvm虚拟化技术之后,我们介绍下openstack和如何搭建. Openstack组件 openstack架构图如下所示 那么我们就 ...

  6. 续:纠正:ubuntu【7.04】可以安装,而且完美的安装 ! for《Oracle-10.2.0.1,打补丁10.2.0.5:在 debian 版本4【不含4】以上,及 ubuntu 7.04【不含7.04】以上都可以安装!》

    n次的测试后,最终证明,如下做法,可以完美安装. 中间都不带任何一个错误的!!!完美! dhclient vi /etc/profile ll cd /etc/apt/ mv sources.list ...

  7. Salience Model

    Who is a stakeholder? Simply anyone with a stake in the project either direct or indirect. PMBOK say ...

  8. SQLServer------基本操作

    代码: --新增字段 ) --编辑字段名称 --注意: 更改对象名的任一部分都可能会破坏脚本和存储过程 EXEC sp_rename 'FTTxUser.[Modifiersss]','Creator ...

  9. java之 ------ 可变參数和卫条件

    可变參数:适用于參数个数不确定.类型确定的情况,java把可变參数当做数组处理. 可变參数必须位于最后一项.当可变參数个数多于一个时,必将有一个不是最后一项,所以仅仅支持有一个可变參数. 可变參数的书 ...

  10. MySQL--指定浮点型数据的精确度TRUNCATE

    INSERT INTO perf_week(node_id,perf_time,pm25,pm10,temp,humi) ) ) ) ) AS humi FROM perf_pm25 WEEK) AN ...