作为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. Oracle 中使用正则表达式

    Oracle使用正则表达式离不开这4个函数: 1.regexp_like select t3.cert_no from table_name t3 where regexp_like(t3.cert_ ...

  2. TortoiseSvn客户端介绍

    TortoiseSVN 是svn版本控制系统的一个免费开源客户端,它是svn版本控制的 Windows 扩展.可以使你避免使用枯燥而且不方便的命令行.它完全嵌入 Windows Explorer,使用 ...

  3. centos的KVM初级安装

    什么是KVM虚拟化技术?KVM(Kernel-based Virtual Machine),主流虚拟化技术之一,集成与Linux2.6之后版本中,通过linux内核提供任务调度及管理.kvm,在实现虚 ...

  4. AWS EC2 外网不能访问的坑

    概述 今天我在 AWS EC2 上配置并启动了 nginx,但是通过外网不能访问,查了一下资料终于解决了,记录下来供以后开发时参考,相信对其它人也有用. 外网访问不了的原因 外网访问不了的原因不外乎有 ...

  5. linux/windows/Mac平台生成随机数的不同方法

    linux平台,使用rand.Seed() //rand_linux.go package main import ( "math/rand" "time" ) ...

  6. c++ qsort函数应用

    C++ qsort在"iostream" c在头文件stdlib.h中,strcmp在string.h中.下列例子默认从小到大排序即(a>b返回>0),反之从小到大排序 ...

  7. Node.js的事件轮询Event Loop原理

    Node.js的事件轮询Event Loop原理解释 事件轮询主要是针对事件队列进行轮询,事件生产者将事件排队放入队列中,队列另外一端有一个线程称为事件消费者会不断查询队列中是否有事件,如果有事件,就 ...

  8. python去掉空格和 b

    直接看下面实例: In [52]: output=subprocess.check_output(["head -c 16 /dev/urandom | od -An -t x | tr - ...

  9. Python爬虫学习==>第九章:正则表达式基础

    学习目的: 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特点字符.及这些特点字符组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. 正式步骤 Step1 ...

  10. 【C/C++】什么是类型安全

    什么是类型安全 转自:http://hi.baidu.com/chenfalei/blog/item/f33ac0133500ac21dd540186.html 编程语言的最终梦想:静态类型安全 常听 ...