作为OpenStack的基础支持服务,Keystone做了下面几件事情:
 
    1、管理用户及其权限
    2、维护 OpenStack Services 的 Endpoint
    3、Authentication(认证)和 Authorization(鉴权)
 
学习 Keystone,得理解这些概念:
 
 
User
 
User 指代任何使用OpenStack的实体,可以是真正的用户,其他系统或者服务。
 
 
当 User 请求访问 OpenStack时,Keystone会对其进行验证。Horizon 在 identity -> Users 管理 User
 
 
除了 admin 和 demo ,OpenStack也未 nova 、cinder 、glance、neutron 服务创建了对应 User。admin也可以管理这些User。
 
 
Credentials
 
Credentials 是User 用来证明自己身份的信息,可以是:
 
    1、用户名/密码
    2、Token
    3、API Key
    4、其他高级方式
 
 
Authorization
 
Authorization 是 Keystone验证 User 身份的过程。User访问OpenStack 时向 Keystone 提交用户名和密码形式的 Credentials,Keystone 验证通过后会给User 签发一个Token作为后续访问的Credentials。
 
 
Token
 
Token 是由数字和字母组成的字符串,User 成功Authorization 后 Keystone生成 Token 并分配给User。
 
    1、Token 用做访问Service 的Credentials
    2、Service会通过Keystone 验证Token的有效性
    3、Token的有效期默认是24小时
 
 
Project
 
Project 用于将OpenStack的资源(计算、存储和网络)进行分组和隔离。根据OpenStack服务对象的不同,Project可以是一个客户(公有云、也叫租户)、部门或者项目组(私有云)。
 
这里需要注意:
 
    1、资源的所有权是属于Project的,而不是User
    2、在OpenStack的界面和文档中,Tenant、Project、Account 这几个术语是通用的,但长期看会倾向于使用Project
    3、每个User(包括admin)必须挂载Project里才能访问该Project的资源。一个User可以属于多个Project
    4、admin 相当于root用户,具有最高权限
 
 
Horizon 在 Identity ->  Projects 中管理 Project
 
 
通过 Manage Members 将 User 添加到 Project
 
 
Service
 
OpenStack 的 Service 包括 Compute(Nova)、Block Storage(Cinder)、Object Storage(Swift)、Image Service(Glance)、Networking Service(Neutron)等。每个 Service都会提供若干个 Endpoint,User 通过 Endpoint 访问资源和执行操作。
 
 
Endpoint
 
Endpoint 是一个网络上可以访问的地址,通常是一个URL。Service 通过Endpoint暴露自己的API。Keystone 负责管理和维护每个 Service 的Endpoint。
 
 
可以使用下面的命令来查看 Endpoint
 
root@DevStack-Controller:~# su - stack
 
stack@DevStack-Controller:~$ source devstack/openrc admin admin
WARNING: setting legacy OS_TENANT_NAME to support cli tools.
stack@DevStack-Controller:~$ openstack catalog list
+-------------+----------------+--------------------------------------------------------------------------+
| Name        | Type           | Endpoints                                                                |
+-------------+----------------+--------------------------------------------------------------------------+
| nova_legacy | compute_legacy | RegionOne                                                                |
|             |                |   internal: http://10.12.31.241:8774/v2/c2b9e5f4a15d43218f3fca6e13c49a3a |
|             |                | RegionOne                                                                |
|             |                |   admin: http://10.12.31.241:8774/v2/c2b9e5f4a15d43218f3fca6e13c49a3a    |
|             |                | RegionOne                                                                |
|             |                |   public: http://10.12.31.241:8774/v2/c2b9e5f4a15d43218f3fca6e13c49a3a   |
|             |                |                                                                          |
| nova        | compute        | RegionOne                                                                |
|             |                |   public: http://10.12.31.241:8774/v2.1                                  |
|             |                | RegionOne                                                                |
|             |                |   admin: http://10.12.31.241:8774/v2.1                                   |
|             |                | RegionOne                                                                |
|             |                |   internal: http://10.12.31.241:8774/v2.1                                |
|             |                |                                                                          |
| placement   | placement      | RegionOne                                                                |
|             |                |   admin: http://10.12.31.241/placement                                   |
|             |                | RegionOne                                                                |
|             |                |   public: http://10.12.31.241/placement                                  |
|             |                | RegionOne                                                                |
|             |                |   internal: http://10.12.31.241/placement                                |
|             |                |                                                                          |
| neutron     | network        | RegionOne                                                                |
|             |                |   internal: http://10.12.31.241:9696/                                    |
|             |                | RegionOne                                                                |
|             |                |   admin: http://10.12.31.241:9696/                                       |
|             |                | RegionOne                                                                |
|             |                |   public: http://10.12.31.241:9696/                                      |
|             |                |                                                                          |
| cinder      | volume         | RegionOne                                                                |
|             |                |   public: http://10.12.31.241:8776/v1/c2b9e5f4a15d43218f3fca6e13c49a3a   |
|             |                | RegionOne                                                                |
|             |                |   internal: http://10.12.31.241:8776/v1/c2b9e5f4a15d43218f3fca6e13c49a3a |
|             |                | RegionOne                                                                |
|             |                |   admin: http://10.12.31.241:8776/v1/c2b9e5f4a15d43218f3fca6e13c49a3a    |
|             |                |                                                                          |
| cinderv2    | volumev2       | RegionOne                                                                |
|             |                |   internal: http://10.12.31.241:8776/v2/c2b9e5f4a15d43218f3fca6e13c49a3a |
|             |                | RegionOne                                                                |
|             |                |   public: http://10.12.31.241:8776/v2/c2b9e5f4a15d43218f3fca6e13c49a3a   |
|             |                | RegionOne                                                                |
|             |                |   admin: http://10.12.31.241:8776/v2/c2b9e5f4a15d43218f3fca6e13c49a3a    |
|             |                |                                                                          |
| glance      | image          | RegionOne                                                                |
|             |                |   admin: http://10.12.31.241:9292                                        |
|             |                | RegionOne                                                                |
|             |                |   public: http://10.12.31.241:9292                                       |
|             |                | RegionOne                                                                |
|             |                |   internal: http://10.12.31.241:9292                                     |
|             |                |                                                                          |
| keystone    | identity       | RegionOne                                                                |
|             |                |   public: http://10.12.31.241/identity                                   |
|             |                | RegionOne                                                                |
|             |                |   admin: http://10.12.31.241/identity_admin                              |
|             |                | RegionOne                                                                |
|             |                |   internal: http://10.12.31.241/identity                                 |
|             |                |                                                                          |
| cinderv3    | volumev3       | RegionOne                                                                |
|             |                |   admin: http://10.12.31.241:8776/v3/c2b9e5f4a15d43218f3fca6e13c49a3a    |
|             |                | RegionOne                                                                |
|             |                |   internal: http://10.12.31.241:8776/v3/c2b9e5f4a15d43218f3fca6e13c49a3a |
|             |                | RegionOne                                                                |
|             |                |   public: http://10.12.31.241:8776/v3/c2b9e5f4a15d43218f3fca6e13c49a3a   |
|             |                |                                                                          |
+-------------+----------------+--------------------------------------------------------------------------+
 
Role
 
安全包含两部分:Authentication(认证)和Authorization(鉴权)
 
Authentication    解决“你是谁”的问题
Authorization      解决“你能干什么的”的问题
 
Keystone 借助 Role 实现 Authorization
 
stack@DevStack-Controller:~$ openstack role list
+----------------------------------+---------------+
| ID                               | Name          |
+----------------------------------+---------------+
| 27b9f9c4662f43c3b7105e850c379178 | ResellerAdmin |
| 3f30d75f5f36462188912589b6836845 | admin         |
| 4449fc37d1ca4553b01aeb13a9ade335 | service       |
| 7eaba228090b4b9085b3ae6dd5350779 | anotherrole   |
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_      |
| ac26bf535bec47549f8da39809fc79a4 | Member        |
+----------------------------------+---------------+
 
    1、Keystone定义 Role
    2、可以为 User 分配一个或者多个 Role ,Horizon的菜单为 Identity -> Project -> Manage Members 
 
 
    3、Service 决定每个Role 能做什么事情。Service 通过各自的 policy.json 文件对 Role 进行访问控制。下面是 Nova 服务的json文件
 
cat /etc/nova/policy.json
 
 
上面配置的含义是:对于 create、attach_network 和 attach_volume 操作,任何 Role 的User 都可以执行; 但只有admin 这个Role 的User 才能执行 forced_host 操作。
 
OpenStack 默认配置只区分 admin  和 非admin Role。如果需要对特定的Role 进行授权,可以修改 policy.json 。
 
 

O018、理解 Keystone 核心概念的更多相关文章

  1. 理解 Keystone 核心概念 - 每天5分钟玩转 OpenStack(18)

    作为 OpenStack 的基础支持服务,Keystone 做下面这几件事情: 管理用户及其权限 维护 OpenStack Services 的 Endpoint Authentication(认证) ...

  2. 后端技术杂谈11:十分钟理解Kubernetes核心概念

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 本文转自 https://github.com/h2pl/Java-Tutorial 喜欢的 ...

  3. 十分钟带你理解Kubernetes核心概念

    什么是Kubernetes? Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展.如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成K ...

  4. Maven(三)理解Maven核心概念

    转载自: http://www.cnblogs.com/holbrook/archive/2012/12/24/2830519.html 本文以类图的方式,介绍maven核心的12个概念以及相互之间的 ...

  5. [转]十分钟带你理解Kubernetes核心概念

    本文将会简单介绍 Kubernetes的核心概念.因为这些定义可以在Kubernetes的文档中找到,所以文章也会避免用大段的枯燥的文字介绍.相反,我们会使用一些图表(其中一些是动画)和示例来解释这些 ...

  6. 消息中间件——RabbitMQ(三)理解RabbitMQ核心概念和AMQP协议!

    前言 本章学习,我们可以了解到以下知识点: 互联网大厂为什么选择RabbitMQ? RabbiMQ的高性能之道是如何做到的? 什么是AMQP高级协议? AMQP核心概念是什么? RabbitMQ整体架 ...

  7. 消息中间件——RabbitMQ(六)理解Exchange交换机核心概念!

    前言 来了解RabbitMQ一个重要的概念:Exchange交换机 1. Exchange概念 Exchange:接收消息,并根据路由键转发消息所绑定的队列. 蓝色框:客户端发送消息至交换机,通过路由 ...

  8. webpack(2)webpack核心概念

    前言   本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具.当 webpack 处理应用程序时,它会在内部构建一个 依赖图(dependency graph) ...

  9. 领域驱动设计(DDD)部分核心概念的个人理解

    领域驱动设计(DDD)是一种基于模型驱动的软件设计方式.它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题.Eric Ivans为领域驱动设计提出了大量的最佳实践 ...

随机推荐

  1. tp5中很牛皮的一句sql语句,三个条件(两个不确定条件,一个硬性条件)

    $result = Db::table('xxxxxx')   // 表名 ->alias('g') ->join('xxxxx_2 u','g.user_id = u.id') -> ...

  2. Docker部署测试

    安装虚拟机 准备一台Centos7的VM,名为Centos7-1 具体过程可以参考: KVM安装 KVM——以桥接的方式搭建虚拟机网络配置 安装Docker 下载rpm包:https://downlo ...

  3. websphere启动报:Could not resolve placeholder 'hibernate.hbm2ddl.auto' in string value "${hibernate.hbm2ddl.auto}"

    websphere启动报/WEB-INF/applicationContext-orm- hibernate.xml]: Could not resolve placeholder 'hibernat ...

  4. koa 路由、视图模块化(二)

    1.项目目录 2.路由 根目录/routes/index.js -- 首页 const router = require('koa-router')(); router.get('/', async ...

  5. cookie、session的联系和区别,多台web服务器如何共享session

    1.Cookie与Session的联系: cookie在客户端保存状态,session在服务器端保存状态.但是由于在服务器端保存状态的时候,在客户端也需要一个标识,所以session也可能要借助coo ...

  6. DP&图论 DAY 5 下午

    DP&图论  DAY 5  下午 树链剖分  每一条边要么属于重链要么轻边 证明: https://www.cnblogs.com/sagitta/p/5660749.html 轻边重链都是交 ...

  7. Win10怎样显示此电脑

    1.在桌面空白处右击鼠标,在出现的选项框中选择“个性化”按钮: 2.在打开的页面中选择左侧的“主题”选项,在右侧选择“桌面图标设置”: 3.在弹出的小窗口中勾选“计算机”,点击“确定”,回到桌面即有此 ...

  8. LC 962. Maximum Width Ramp

    Given an array A of integers, a ramp is a tuple (i, j) for which i < j and A[i] <= A[j].  The ...

  9. 接入上一篇SSM框架整合示例

    需要创建相应的包与文件夹 Book数据表作为本示例数据 搭建项目开始 首先有bean后 private int id; private String name; private int cnt; 第一 ...

  10. MySQL 对 IP 字段的排序问题

    MySQL 对 IP 字段的排序问题 问题描述 想对一张带有 IP 字段的表,对 IP 字段进行升序排序,方便查看每个段的 IP 信息. 表结构和表数据如下: SET NAMES utf8mb4; ; ...