Keystone中角色(role上)的存在就是爲了控制不同的用戶所擁有的權限,例如是否可以創建volume,是否能夠創建computer等等。
在OpenStack中不同角色權限的控制在文件/etc/SERVICE_NAME/policy.json中設置,例如文件/etc/nova/policy.json中指定不同角色對計算服務的訪問策略和權限,文件/etc/glance/policy.json中指定不同角色對鏡像服務的訪問策略和權限,同樣文件/etc/keystone/policy.json中指定不同角色對身份認證服務的訪問策略和權限。
例如,在文件/etc/cinder/policy.json中,下面的配置並沒有限制哪一個用戶可以創建volume
"volume:create": "",
任何在相應project中的用戶都可以在project中創建volume。
如果我們想要限制只能是某種角色的用戶纔可以創建volume,可以這樣做:
"volume:create": "role:engineer",
如上的配置就限制了只有engineer角色的用戶纔可以創建volume。注意,所有的限制都是在特定的project中執行。
其實policy.json文件就是配置了不同角色對於給定的API的訪問控制權限,
參考資料:
Identity API protection with role-based access control (RBAC)