OpenStack Identity(Keystone)概述及示例

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

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

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

 

相关概念

1. Useride

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

2. Tenanturl

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

3. Role3d

  Role即角色,Roles表明一组用户能够访问的资源权限。Role是在验证服务定义,可是具体意义由执行操做的服务(好比 swift)解释。对象

4. Serviceblog

  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被从常规的访问中分离。

六、Token

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

 

主要关系

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

二、每一个用户都有本身的credentials(凭证)。用户名+密码,或者,用户名+API key,或其余凭证。

三、用户在访问其余资源(计算、存储)以前,须要用本身的credential,去请求keystone服务,得到验证信息(主要是Token信息)和服务信息(服务目录和它们的endpoint)。

四、用户拿着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": "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-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"            ]        }    }}

相关文章
相关标签/搜索