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的關係輸出,這個命令到底有什麼做用,尚待研究。

相關文章
相關標籤/搜索