作为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. Linux 竞态条件和临界区

    1. 临界区和竞态条件: 临界区:访问和操作共享数据的代码段: 竞态条件:当有多个线程同时进入临界区时,执行结果取决于线程的执行顺序: 如下述代码,当多个线程同时调用func函数,对共享数据sum进行 ...

  2. ubuntu16.04 anaconda3安装

    1.使用清华镜像源下载 wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.1.0-Linux-x86_64. ...

  3. Web存储机制—sessionStorage,localStorage使用方法

    Web存储机制,在这里主要聊有关于Web Storage API提供的存储机制,通过该机制,浏览器可以安全地存储键值对,比使用cookie更加直观.接下来简单的了解如何使用这方面的技术. 基本概念 W ...

  4. [windows菜鸟]C#中调用Windows API的技术要点说明

    在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希 ...

  5. Windows10 修改键位映射

    https://blog.csdn.net/lhdalhd1996/article/details/90741092 1.为什么要修改键位我的笔记本键盘上下键是这样的: 很想捶死产品经理,你是从来不用 ...

  6. 求平面上N点最远两点和最近两点距离

    最近两点,二分法 最远两点,凸包+找对踵点

  7. 自定义一个数组对象工具demo

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. Python 中的type和object详解

    1.python中的类 Python2.x 中的类分为两种,一种是所有继承自object的新式类,另外一种是经典类classobj, 新式类的写法: class A(object): pass 经典类 ...

  9. LoadRunner 技巧之协议分析

    LoadRunner 技巧之协议分析 在做性能测试的时候,协议分析是困扰初学者的难题,选择错误的协议会导致Virtual User Generator 录制不到脚本:或录制的脚本不完整,有些应用可能需 ...

  10. 调用百度api的原理流程

    1.为了实现酒店地址的定位 2.使用可视化便捷的百度地图API生成器:设置公司的地址和地图等级 3.设置地图的滚轮.缩放功能 4.获取代码,拷贝到html页面中 5.申请秘钥,在html中引用地图AP ...