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)