openstack 權限控制 (添加自定義角色)keystone等組件


每一個平台、系統都會對於用戶的權限進行嚴格的管理與控制。

openstack是一個開源的項目,我們可以直接下載其源碼,進行更改以達到我們的要求。

這里只是針對於用戶的權限進行管理,以keystone:

 

keystone是使用policy.json定義權限,其它openstack組件也是一樣的,都是存在文件policy.json(在這文件中保證的是該組件對於用戶身份的管理   權限的控制):
/etc/nova/policy.json
/etc/keystone/policy.json
/etc/glance/policy.json
/etc/neutron/policy.json
/etc/cinder/policy.json

 

 

 

keystone的policy.json文件位於:
/etc/keystone/policy.json


其內容如下:
1 {
2 "admin_required": "role:admin or is_admin:1",

34 "identity:get_project": "rule:admin_required",
35 "identity:list_projects": "rule:admin_required",
36 "identity:list_user_projects": "rule:admin_or_owner",
37 "identity:create_project": "rule:admin_required",
38 "identity:update_project": "rule:admin_required",
39 "identity:delete_project": "rule:admin_required",

41 "identity:get_user": "rule:admin_required",
42 "identity:list_users": "rule:admin_required",
43 "identity:create_user": "rule:admin_required",
44 "identity:update_user": "rule:admin_required",
45 "identity:delete_user": "rule:admin_required",
46 "identity:change_password": "rule:admin_or_owner",

 

此文件的格式為   ------------    identity:行為名  :   rule:規則

每一個規則在這個文件的前面幾行有規則的書寫:

如34行:34 "identity:get_project": "rule:admin_required",

獲取項目:rule:admin_required。這個規則在文本第二行有書寫:2 "admin_required": "role:admin or is_admin:1",

如果滿足這個規則,就說明這個用戶可以進行前面的行為。

就34行來說:就是如果用戶是管理員或者是管理員身份,他就可以進行get_project這個操作.

 

我們如果需要對這個行為進行一個自定義的控制的話,我們可以自行的修改policy.json文件,

並且這個文件在openstack中,是動態運行的,所以在修改之后,我們不需要去重新啟動openstack。

下面是我自己做的修改:

"keystone01_role":"role:keystone01_role",

在此之前,我已經新建了一個role,名字是keystone01_role。

同時,我做了以下的修改:

"identity:create_project": "rule:keystone01_role",

我將創建項目的權限只給了keystone01_role這個角色。

這時候,我們就會發現,就算是admin管理員,他也是無法創建項目了的。

只有是keystone01_role角色的用戶,才存在創建項目的權限。

 

 

要是要對其他的組件的權限進行修改的話,辦法是一樣的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM