openstack之role篇

1、role简介 spa

  从《openstack之tenant篇》咱们知道,一个用户能够同时属于多个tenant,根据openstack.org里对role的定义,role规定了一个用户可以实现的行为。这个定于彷佛稍显神秘,其实从管理用户使用的角度来讲,role是和tenant息息相关的,一个用户想要加入另外一个tenant,必须借助于role来完成,而因为tenant规定了其成员的行为规范,因此role也间接的起到了对于用户行为的规定。 资源


2、role基本操做 test

  与user,tenant等同样,role的操做也无怪乎建立,更新,删除,列举等: 登录

  列举: 权限

  # keystone role-list 密码

 建立: im

 # keystone role-create 
命名

  删除: word

  # keystonerole-delete
openstack

  ... 等等,因为太过简单,这里再也不说明。


3、经过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-usernameuser1--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_nametenant1 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_nametenant2 list

  -- <NULL> --


  建立role test:

  keystone role-create --name test

   +----------+----------------------------------+
   | Property |              Value               |
   +----------+----------------------------------+
   |    id    | 2493283f09c1475198f2337a47aa398f |
   |   name   |              test               |
   +----------+----------------------------------+

  经过role test将user2用户加入到tenant1tenant中:

   # keystone user-role-add --user-id 7b32f4fc92704947802d2eca95edff0d --role-id2493283f09c1475198f2337a47aa398f --tenant-id 0647347fa21d4221b0197cd282465a00

   其中7b32f4fc92704947802d2eca95edff0d是user2的id,0647347fa21d4221b0197cd282465a00是tenant1的id。

   这样,就把user2用户加入到了tenant1。

  #nova --os_username user2 --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 |
   +--------------------------------------+-------+--------+---------------------------+
   test2用户能够看到tenant1下的instance。

  # nova --os_username user2 --os_password password --os_tenant_name tenant1delete 88bc939b-e29e-44ee-9f09-ec45a93ee6c4

  user2用户能够将user1用户建立的instance删除,由于这个instance在tenant1中。固然,对于tenant1内的资源,user2用户也必须用tenant1内的身份去访问,这就是咱们在上边的命令中定义--os_tenant_name为tenant1的缘由。


  惟一例外的是admin tenant内的admin用户,由于这是一个administrator用户,因此用这个用户能够对全部tenant内的instance进行查看、更新、删除等操做。此外,admin用户缺省也只能看到自身tenant内的instance,若是想要看到其余tanent内的instance,须要加上参数--all_tenants,也就是:

   nova list --all_tenants

   不过,略显奇怪的是,经过命令:

  # keystone user-role-list --user-id 7b32f4fc92704947802d2eca95edff0d

   得不到任何用户和role的关系输出,这个命令到底有什么做用,尚待研究。

相关文章
相关标签/搜索