OpenStack(2)--项目(租户)、用户、角色

一、项目(租户)、用户、角色的关系

重点理解项目(project/租户)、用户(user)、角色(role)三者之间的关系,首先这三者都可以单独新建,但是绑定关系是通过openstack role add命令。

项目(project/租户)

在较低版本的openstack中有租户的概念,但在新版本中租户逐渐被项目代替,简单理解,一个租户就是一个项目,一个项目就是一个租户,后续我不会再提及租户,同一使用项目称呼。

用户(user)

用户和项目是多对多关系,一个项目可以有多个用户,一个用户也可以同时存在于多个项目中。

角色(role)

role角色是一个权限集合,一个项目可以有多个用户,但每个用户的权限可以不一致,一个项目可以有多个admin角色或多个_member,权限的不同就是通过角色决定的,并且,一个用户同时拥有多个项目,在项目中的权限也不一定是一样的,例如Z用户在A项目中是admin,但Z用户在B项目中是_member_;openstack默认角色类型有4个(不同版本可能不同,但至少也有2个,admin、member),q版中默认是4个,SwiftOperator、admin、_member_  ResellerAdmin。

二、创建项目(租户)、用户、绑定

创建项目(租户)、创建用户、赋予绑定项目和用户

[root@localhost ~(keystone_admin)]# openstack project create --domain default --description "learn to ues Openstack" test
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | learn to ues Openstack           |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 2dd4545690d849dd881c454f472524c7 |
| is_domain   | False                            |
| name        | test                             |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+
[root@localhost ~(keystone_admin)]# openstack user create --domain default --password-prompt lgb
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | ea90a34c00ef45b4a2b83d1ea69a0b91 |
| name                | lgb                              |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+


###新建lgb用户角色为_menber_ 并绑定项目test
[root@localhost ~(keystone_admin)]# openstack role add --project test --user lgb _member_

新建lgb用户角色为_menber_ 并绑定项目test,_menber_普通成员只能操作已绑定项目(包括新建网络、新建实例),不能管理该项目里的成员(只能修改密码)。  

openstack role list查看role类型列表,openstack role show _member_ 显示role的详细信息。

[root@localhost ~(keystone_admin)]# openstack role list
+----------------------------------+---------------+
| ID                               | Name          |
+----------------------------------+---------------+
| 53d1711053f74530950e45a8a2f75ed2 | SwiftOperator |
| 904ccc9da08f4cb9bd9cb49f0d01b8a2 | admin         |
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_      |
| b69b66c9e9144633a7330d2bc5f0f38f | ResellerAdmin |
+----------------------------------+---------------+

[root@localhost ~(keystone_admin)]# openstack role show _member_
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 9fe2ff9ee4384b1894a90878d3e92bab |
| name      | _member_                         |
+-----------+----------------------------------+

新建lgb0用户角色_menber_ 为绑定项目admin,新建lgb0用户角色为admin项目绑定test。

[root@localhost ~(keystone_admin)]# openstack role add --project admin --user lgb0 _member_
[root@localhost ~(keystone_admin)]# openstack role add --project test --user lgb0 admin

登录lgb0后可以发现,lgb0可以在两个项目(test/admin)中自由切换,但选择“admin”项目时,左侧功能栏少了“admin(管理员)”选项,因为在admin项目中lgb0只是_member_普通成员。

OpenStack(2)--项目(租户)、用户、角色_第1张图片

OpenStack(2)--项目(租户)、用户、角色_第2张图片

身份管理权限也有所不同,admin用户可以编辑“组”、“角色类型”。

OpenStack(2)--项目(租户)、用户、角色_第3张图片

OpenStack(2)--项目(租户)、用户、角色_第4张图片

 

 

此时lgb0用户同时拥有2个项目,且在不同项目的角色不同,但必须注意一点的是,如果该用户在某个项目的角色是admin,那么该用户的权限就等同于openstack系统的admin用户,两者权限相等。

OpenStack(2)--项目(租户)、用户、角色_第5张图片 

你可能感兴趣的:(openstack,云计算,openstack)