OpenStack Identity Service 身份认证服务——KeyStone

六眼飞鱼酱① 提交于 2020-04-15 07:28:21

【推荐阅读】微服务还能火多久?>>>

基本概念

身份服务有两个主要功能:

  1. 用户管理:用户与用户行为跟踪;

  2. 服务目录:提供一个服务目录,包括服务项与相关Api的位置

身份服务有几个定义是重要的理解。

用户:一个数字代表使用OpenStack云服务的一个人、系统、或服务。身份验证服务将会验证传入的由用户声明将调用的请求。用户如果已经登录,可就能分配令牌(tokens)访问资源。用户可能被直接分配给特定的租户,用户行为被包含在租户(tenant)。 

证书(Credentials):用户可以通过身份验证保证数据通常只被一个用户属于或拥有(因为没有其他人应该知道数据)。

以下为证书的例子:

  • 一个匹配的用户名和密码

  • 一个匹配的用户名和API键

  • 自己和带照片的驾照

  • 一个保密的私人令牌

认证(Authentication):在身份服务的环境中,认证是确认身份或识别真实性的行为。身份服务通过与用户的一组声明验证以确认传入的请求是由该用户声明过的。这些声明被初始化为一组证书 (username&password, or username and API key)。初始确认后,身份服务将会给用户发布一个确认身份的令牌(Token),在用户随后的请求中可以使用这个令牌授权访问。

令牌(Token):令牌是一个用于访问资源的任意比特文本。每一个令牌有一个可用资源的描述范围。一个令牌可以在任意时间废除并且有一定的有效期。

    身份服务支持基于令牌的认证,其意图是为了在将来支持一些附加的协议。其目的是为了让它首先成为一种集成服务,而不是一种渴望成为丰富的身份存储和管理的解决方案。

租户(Tenant):一个容器,用于组织和隔离资源,或标识对象。依赖于服务操作,一个租户可以一个客户、账户、组织、项目的映射。

服务(Service):一项OpenStack的服务,如计算(Nova)、对象存储(Swift)、或镜像服务(Glance)。一种服务通过可能获取资源或执行操作的用户提供给一个或多个末端。

末端(EndPoint):一项可用的服务,一个有效网络地址,常用URL描述。如果使用一个扩展为模板,您可以创建一个端点模板,它表示所有可跨地区的可消费的服务的模板。

角色(Role):一个人格,一个用户假设当执行一组特定的操作。一个角色包括一组权利和特权。一个用户假设角色继承这些权利和特权。

在身份服务中,一个令牌,是发送到用户包括用户可以承担角色的列表。通过用户决定他们如何解释组角色用户和哪些操作或资源每个角色授予访问,以调用服务。 


用户管理

三个主要概念的身份用户管理:     

  • 用户    

  • 租户    

  • 角色

用户代表一个人作为客户,并且相关的信息,如用户名、密码和电子邮件。这个示例创建了一个用户名为“alice”:

1
$ keystone user-create --name=alice --pass=mypassword123 --email=alice@example.com

租户可以被认为是一个项目、组或组织。每当你让请求OpenStack服务,您必须指定一个租户。例如,如果您查询计算服务运行的实例的一个列表,你将在你指定查询的租户收到一个所有正在运行的实例列表。这个示例创建了一个名为“acme”租户:

1
$ keystone tenant-create --name=acme

注意:因为在早期版本的OpenStack计算的“项目(project)”被“租户(tenant)”代替,一些命令行工具使用——--project_id instead of --tenant-id or --os-tenant-id to refer to a tenant ID。


一个角色代表用户在一个给定的租户能被允许执行的操作。这个示例创建一个角色命名为“compute-user”:

1
$ keystone role-create --name=compute-user

The Identity service associates a user with a tenant and a role. To continue with our previous examples, we may wish to assign the "alice" user the "compute-user" role in the "acme" tenant:

$ keystone user-list

    +--------+---------+-------------------+--------+
    |   id   | enabled |       email       |  name  |
    +--------+---------+-------------------+--------+
    | 892585 |   True  | alice@example.com | alice  |
    +--------+---------+-------------------+--------+

$ keystone role-list

    +--------+--------------+
    |   id   |     name     |
    +--------+--------------+
    | 9a764e | compute-user |
    +--------+--------------+

$ keystone tenant-list

    +--------+------+---------+
    |   id   | name | enabled |
    +--------+------+---------+
    | 6b8fd2 | acme |   True  |
    +--------+------+---------+

$ keystone user-role-add --user=892585 --role=9a764e --tenant-id=6b8fd2

注:keystone 命令使用需要权限(令牌或证书)以下为几种验证方法:

1、token

1
keystone --token xxxxx  --endpoint http://x.x.x.x:35357/v2.0 role-list

2、username+password

1
keystone --os-username=admin --os-password=secretword --os-tenant-name=openstackDemo --os-auth-url=http://192.168.206.130:35357/v2.0 token-get

3、source /etc/keystone/keystonerc 

创建keystonerc文件,内容如下:

1
2
3
4
export OS_USERNAME=admin
export OS_PASSWORD=xxxx
export OS_TENANT_NAME=openstackDemo
export OS_AUTH_URL= http://x.x.206.130:35357/v2.0
1
2
3
source /etc/keystone/keystonerc
#可直接执行,如下
 keystone user-list


more info:http://docs.openstack.org/folsom/openstack-compute/install/yum/content/keystone-concepts.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!