一、role简介
从《openstack之tenant篇》我们知道,一个用户可以同时属于多个tenant,根据openstack.org里对role的定义,role规定了一个用户能够实现的行为。这个定于似乎稍显神秘,其实从管理用户使用的角度来说,role是和tenant息息相关的,一个用户想要加入另一个tenant,必须借助于role来完成,而由于tenant规定了其成员的行为规范,所以role也间接的起到了对于用户行为的规定。
二、role基本操作
与user,tenant等一样,role的操作也无怪乎创建,更新,删除,列举等:
列举:
# keystone role-list
创建:
# keystone role-create
删除:
# keystonerole-delete
... 等等,由于太过简单,这里不再说明。
三、通过role操作用户
下面着重介绍通过role将一个用户加入到另一个tenant的小魔法。
首先,创建两个tenant, 分别命名为tenant1和tenant2(注意创建tenant,user, role的keystone命令必须有administrator权限,这里对所有administrator操作忽略相关用户/密码/tenant的声明):# keystone tenant-create --name tenant1 --enabled true
# keystone tenant-create --name tenant2 --enabled true
为tenant1创建用户user1, 为tenant2创建用户user2:
# keystone user-create --name user1 --tenant-id <tenant-id of tenant1> --pass password --enabled true
# keystone user-create --name user2 --tenant-id <tenant-id of tenant2> --pass password --enabled true
先不进行role操作,用user1用户创建一个instance:
# nova --os-username user1--os-password password --os-tenant-name tenant1 boot test --image "cb79a458-169d-413e-89d0-02bcae61569a" --flavor 1
#nova --os_username user1 --os_password password --os_tenant_name tenant1 list
+--------------------------------------+-------+--------+---------------------------+
| ID | Name | Status | Networks |
+--------------------------------------+-------+--------+---------------------------+
| 88bc939b-e29e-44ee-9f09-ec45a93ee6c4 | test | ACTIVE | nova_fixed=192.168.123.65 |
+--------------------------------------+-------+--------+---------------------------+
这时候,用user2用户登录,是无法对user1用户创建的instance进行操作的。
#nova --os_username user2 --os_password password --os_tenant_name tenant2 list