OpenStack 的验证服务有两个主要功能:

  1. 用户管理(租户、用户、权限)

  2. Service catalog,管理服务的目录和它们的endpoint。

相关概念

1. User

  User即用户,他们代表访问openstack的人或程序。Users通过认证信息(credentials,如密码、API Keys等)进行验证。

2. Tenant

  Tenant即租户,它是各个服务中的一些可以访问的资源集合。在Swift,资源是以tenant为单位进行划分的。Users默认的总是绑定到某些tenant上。

3. Role

  Role即角色,Roles代表一组用户可以访问的资源权限。Role是在验证服务定义,但是具体意义由执行操作的服务(比如 swift)解释。

4. Service

  Service即服务,如Nova、Glance、Swift。根据前三个概念(User,Tenant和Role)一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个user尝试着访问其租户内的service时,他必须知道这个service是否存在以及如何访问这个service,这里通常使用一些不同的名称表示不同的服务。在上文中谈到的Role,实际上也是可以绑定到某个service的。例如,当swift需要一个管理员权限的访问进行对象创建时,对于相同的role我们并不一定也需要对nova进行管理员权限的访问。为了实现这个目标,我们应该创建两个独立的管理员role,一个绑定到swift,另一个绑定到nova,从而实现对swift进行管理员权限访问不会影响到Nova或其他服务。

5. Endpoint

  Endpoint,翻译为“端点”,我们可以理解它是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道他的endpoint。因此,在keystone中包含一个endpoint模板(endpoint template,在安装keystone的时候我们可以在conf文件夹下看到这个文件),这个模板提供了所有存在的服务endpoints信息。一个endpoint template包含一个URLs列表,列表中的每个URL都对应一个服务实例的访问地址,并且具有public、private和admin这三种权限。public url可以被全局访问,private url只能被局域网访问,admin url被从常规的访问中分离。

6、Token

  Token是访问资源的钥匙。它是通过Keystone验证后的返回值,在之后的与其他服务交互中只需要携带Token值即可。每个Token都有一个有效期,Token只在有效期内是有效的。

主要关系

1、租户下,管理着一堆用户(人,或程序)。

2、每个用户都有自己的credentials(凭证)。用户名+密码,或者,用户名+API key,或其他凭证。

3、用户在访问其他资源(计算、存储)之前,需要用自己的credential,去请求keystone服务,获得验证信息(主要是Token信息)和服务信息(服务目录和它们的endpoint)。

4、用户拿着Token信息,就可以去访问特点的资源了。

示例

向keystone发送请求:

1 > POST http://192.168.150.129:35357/v2.0/tokens
1 > Accept: application/json
1 > Content-Type: application/json

{
     "auth":{
        "tenantName":"service",
        "passwordCredentials":{
            "username":"swift",
            "password":"password"
        }
    }
}

keystone的响应

2 < 200
2 < Vary: X-Auth-Token
2 < Date: Tue, 30 Jul 2013 08:44:30 GMT
2 < Content-Length: 3354
2 < Content-Type: application/json
2 < Connection: keep-alive

{
    "access": {
        "token": {
            "issued_at": "2013-07-30T08:44:28.336139",
             "expires": "2013-07-31T08:44:28Z",
             "id": "MIIGXgYJKoZIhvcNAQcCoIIGTzCCBksCAQExCTAHBgUrDgMCGjCCBLQGCSqGSIb3DQEHAaCCBKUEggSheyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxMy0wNy0zMFQwODo0NDoyOC4zMzYxMzkiLCAiZXhwaXJlcyI6ICIyMDEzLTA3LTMxVDA4OjQ0OjI4WiIsICJpZCI6ICJwbGFjZWhvbGRlciIsICJ0ZW5hbnQiOiB7ImRlc2NyaXB0aW9uIjogbnVsbCwgImVuYWJsZWQiOiB0cnVlLCAiaWQiOiAiOGMwMDhkNjhiYmQ3NGNkODhkZDA0YTRiMzc3MjU0ZTciLCAibmFtZSI6ICJzZXJ2aWNlIn19LCAic2VydmljZUNhdGFsb2ciOiBbeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTkyLjE2OC4xNTAuMTI5OjgwODAiLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTkyLjE2OC4xNTAuMTI5OjgwODAvdjEvQVVUSF84YzAwOGQ2OGJiZDc0Y2Q4OGRkMDRhNGIzNzcyNTRlNyIsICJpZCI6ICIxOTJkNTQ2MWI5ZTU0NjVmODEwNzQ5NTg4ODZmYmQ5MyIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE5Mi4xNjguMTUwLjEyOTo4MDgwL3YxL0FVVEhfOGMwMDhkNjhiYmQ3NGNkODhkZDA0YTRiMzc3MjU0ZTcifV0sICJlbmRwb2ludHNfbGlua3MiOiBbXSwgInR5cGUiOiAib2JqZWN0LXN0b3JlIiwgIm5hbWUiOiAic3dpZnQifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTkyLjE2OC4xNTAuMTI5OjM1MzU3L3YyLjAiLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTkyLjE2OC4xNTAuMTI5OjUwMDAvdjIuMCIsICJpZCI6ICI3MWFmOWRjODVmNjM0NzI4YjJkNDM4NGRmMzZlY2FjOSIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE5Mi4xNjguMTUwLjEyOTo1MDAwL3YyLjAifV0sICJlbmRwb2ludHNfbGlua3MiOiBbXSwgInR5cGUiOiAiaWRlbnRpdHkiLCAibmFtZSI6ICJrZXlzdG9uZSJ9XSwgInVzZXIiOiB7InVzZXJuYW1lIjogInN3aWZ0IiwgInJvbGVzX2xpbmtzIjogW10sICJpZCI6ICI2NjNhMjZkNWM3OGI0MWExOTAzNDAzNDc2MmRjNWIwYiIsICJyb2xlcyI6IFt7Im5hbWUiOiAiX21lbWJlcl8ifSwgeyJuYW1lIjogImFkbWluIn1dLCAibmFtZSI6ICJzd2lmdCJ9LCAibWV0YWRhdGEiOiB7ImlzX2FkbWluIjogMCwgInJvbGVzIjogWyI5ZmUyZmY5ZWU0Mzg0YjE4OTRhOTA4NzhkM2U5MmJhYiIsICI4N2ZhNmU4ZTUxMDA0NDg4YWJhMzAwMjBmZDlhOTNkYyJdfX19MYIBgTCCAX0CAQEwXDBXMQswCQYDVQQGEwJVUzEOMAwGA1UECBMFVW5zZXQxDjAMBgNVBAcTBVVuc2V0MQ4wDAYDVQQKEwVVbnNldDEYMBYGA1UEAxMPd3d3LmV4YW1wbGUuY29tAgEBMAcGBSsOAwIaMA0GCSqGSIb3DQEBAQUABIIBAFJvNW5phkY3O6R3lk6DCNSvjbk56iPqqESJDAfpARv8Iyqnd7vpLIrjKvZwKbVVSSbAuVlum6jfMPe30o0tKXXmteE4UYxWoDIdSZRz86YrYaJEWNWDpvO-1jtR2+UsxBSPrJYDa32xzIvzkZc2vUTNHot1UehlB17hRCeH4yhZYG1BEqaNX8PLnewAMdjAc4Gp4v9SNMrkunjKyPgUVYSqXJZjqRNhsASZd4kyyRdc0nbj-qQ0CSSsdjU6iCEe9lO+CMBjXwN1O0k0TM1gZnnZQ1okQCQTgK7Ya8UcRszyQdg3nojigxiE97ppgGrpR+P-R4v3i+kQ81P+FPByRXY=",
             "tenant": {
                "description": null,
                 "enabled": true,
                 "id": "8c008d68bbd74cd88dd04a4b377254e7",
                 "name": "service"
            }
        },
         "serviceCatalog": [
            {
                "endpoints": [
                    {
                        "adminURL": "http://192.168.150.129:8080",
                         "region": "RegionOne",
                         "internalURL": "http://192.168.150.129:8080/v1/AUTH_8c008d68bbd74cd88dd04a4b377254e7",
                         "id": "192d5461b9e5465f81074958886fbd93",
                         "publicURL": "http://192.168.150.129:8080/v1/AUTH_8c008d68bbd74cd88dd04a4b377254e7"
                    }
                ],
                 "endpoints_links": [
                   
                ],
                 "type": "object-store",
                 "name": "swift"
            },
             {
                "endpoints": [
                    {
                        "adminURL": "http://192.168.150.129:35357/v2.0",
                         "region": "RegionOne",
                         "internalURL": "http://192.168.150.129:5000/v2.0",
                         "id": "71af9dc85f634728b2d4384df36ecac9",
                         "publicURL": "http://192.168.150.129:5000/v2.0"
                    }
                ],
                 "endpoints_links": [
                   
                ],
                 "type": "identity",
                 "name": "keystone"
            }
        ],
         "user": {
            "username": "swift",
             "roles_links": [
               
            ],
             "id": "663a26d5c78b41a19034034762dc5b0b",
             "roles": [
                {
                    "name": "_member_"
                },
                 {
                    "name": "admin"
                }
            ],
             "name": "swift"
        },
         "metadata": {
            "is_admin": 0,
             "roles": [
                "9fe2ff9ee4384b1894a90878d3e92bab",
                 "87fa6e8e51004488aba30020fd9a93dc"
            ]
        }
    }
}

OpenStack Identity(Keystone)概述及示例的更多相关文章

  1. OpenStack (1) - Keystone OpenStack Identity Service

    echo deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/grizzly main >> /etc ...

  2. (弃)解读Openstack Identity API v2.0

    目前OpenStack社区提供了详尽的API文档,并配有丰富的说明和示例,关于Identity API v2查看这里, 关于Identity API v3请查看这里. 尽管现在官方已经不建议OpenS ...

  3. openstack核心组件——keystone身份认证服务(5)

    云计算openstack核心组件——keystone身份认证服务(5) 部署公共环境 ntp openstack mariadb-server rabbitmq-server memcache 1.w ...

  4. OpenStack 安装 Keystone

    OpenStack 安装 Keystone 本篇主要记录一下 如何安装 openstack的 第一个组件 keystone 认证授权组件 openstack 版本 我选的是queens 版本 1.Op ...

  5. openstack中Keystone组件简解

    一.Keystone服务概述 在Openstack框架中,keystone(Openstack Identity Service)的功能是负责验证身份.校验服务规则和发布服务令牌的,它实现了Opens ...

  6. OpenStack中Keystone的基本概念理解

    原文http://www.kankanews.com/ICkengine/archives/10788.shtml Keystone简介 Keystone(OpenStack Identity Ser ...

  7. OpenStack:安装Keystone

    >安装Keystone1. 安装# apt-get install keystone2. 创建dbcreate database keystone;grant all privileges on ...

  8. Openstack中keystone与外部LDAP Server的集成

    openstack中keystone鉴权的用户user和password信息,通常保存在mysql数据库的keystone库: 表local_user和表password: keystone也支持外部 ...

  9. 单点登录SSO:概述与示例

    目录 概述 演示一:零改造实施单点登录 演示二: 单点注销 演示三:集成AD认证 演示四:客户端单点登录 演示五:移动端单点登录 单点登录SSO概述 本系列将由浅入深的,带大家掌握最新单点登录SSO方 ...

  10. openstack 之~keystone部署

    第一:版本信息 官网http://docs.openstack.org/newton/install-guide-rdo/keystone.html 我们按照Newton这个版本来部署,opensta ...

随机推荐

  1. 挂起的更改中的“解析”是什么意思?原来是微软错误的翻译

    [2017.4.5 补充] 收到微软TFS产品组的回复,由于版本分支丢失了本来已经修复的内容,并确认下一个版本将修复这个问题. 自从团队资源管理器的"挂起的更改中"可以链接相关工作 ...

  2. linux系统编程之管道(三):命令管道(FIFO)

    一,匿名管道PIPE局限性 管道的主要局限性正体现在它的特点上: 只支持单向数据流: 只能用于具有亲缘关系的进程之间: 没有名字: 管道的缓冲区是有限的(管道制存在于内存中,在管道创建时,为缓冲区分配 ...

  3. C# 一些代码小结--datGirdView 保存到csv文件

    if (dataGridView1.Rows.Count == 0) { MessageBox.Show("No data available!", "Prompt&qu ...

  4. STM32F4时钟配置库函数详解

    在STM32中,所有的应用都是基于时钟,所以时钟的配置就尤为重要了,而不能仅仅只知道使用默认时钟. STM32F4的时钟树如上图所示,HSE为外部接入的一个8M的时钟,然后再给PLL提供输入时钟,经过 ...

  5. 解决DbContext对象创建问题

    解决DbContext对象创建问题 方法一: 使用CallContext public class BaseController : Controller { public MyContext db ...

  6. jqury的ajax

    前端代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...

  7. python scapy 网卡发包

    from scapy.all import * pkt = Ether(src='11:22:33:44:55:77', dst='11:22:33:44:55:66')/ARP(op="w ...

  8. [bug]小程序弹出层滚动穿透问题修复

    如题,解决方案有两种: 1.如果弹出层没有滚动事件,就直接在蒙板和弹出层上加 catchtouchmove;(方便快捷) <template name="popup-modal&quo ...

  9. JIRA Rest JAVA Client API实现问题管理及自定义字段(原创)

    JIRA是一个缺陷跟踪管理系统,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域,当我们需要把第三方业务系统集成进来时,可以调用他的API. JIRA本身的A ...

  10. IIS 8 配置错误

    1) ProtocolException: The remote server returned an unexpected response: (405) Method Not Allowed Th ...