5.5. 示例:创建电源用户角色
要自定义 keystone 角色的权限,请更新服务的 policy.json
文件。这意味着您可以更精细地定义分配给某一类用户的权限。本例使用以下权限为您的部署创建一个 电源用户角色 :
- 启动实例。
- 停止一个实例。
- 管理附加到实例的卷。
此角色的目的是为某些用户授予额外的权限,而无需授予 admin
访问权限。要使用这些权限,您必须为自定义角色授予以下权限:
-
启动实例:"
os_compute_api:servers:start": "role:PowerUsers"
-
停止一个实例:"
os_compute_api:servers:stop": "role:PowerUsers"
-
将实例配置为使用特定卷:"
os_compute_api:servers:create:attach_volume": "role:PowerUsers"
-
列出附加到实例的卷:"
os_compute_api:os-volumes-attachments:index": "role:PowerUsers"
-
Attach a volume:
"os_compute_api:os-volumes-attachments:create": "role:PowerUsers"
-
查看附加卷的详情:
"os_compute_api:os-volumes-attachments:show": "role:PowerUsers"
-
更改附加到实例的卷:"
os_compute_api:os-volumes-attachments:update": "role:PowerUsers"
-
删除附加到实例的卷:"
os_compute_api:os-volumes-attachments:delete": "role:PowerUsers"
修改 policy.json
文件时,您可以覆盖默认策略。因此,PowerUsers
的成员是唯一可以执行以下操作的用户。要允许 管理员用户
保留这些权限,您可以为 admin_or_power_user 创建规则。您还可以使用一些基本条件逻辑来定义 role:PowerUsers 或 role:Admin
。
创建自定义 keystone 角色:
$ openstack role create PowerUsers +-----------+----------------------------------+ | Field | Value | +-----------+----------------------------------+ | domain_id | None | | id | 7061a395af43455e9057ab631ad49449 | | name | PowerUsers | +-----------+----------------------------------+
将现有用户添加到角色,并将角色分配给项目:
$ openstack role add --project [PROJECT_NAME] --user [USER_ID] [PowerUsers-ROLE_ID]
注意角色分配仅与一个项目配对。这意味着,当您为用户分配角色时,您还可以同时定义目标项目。如果您希望用户收到相同的角色,但对于其他项目,则必须单独为他们分配角色,但针对其他项目。
查看默认的 nova 策略设置:
$ oslopolicy-policy-generator --namespace nova
通过在
/var/lib/config-data/puppet-generated/nova/etc/nova/policy.json
中添加以下条目来为新的PowerUsers
角色创建自定义权限:注意在部署前测试您的策略更改,以验证它们是否按预期工作。
{ "os_compute_api:servers:start": "role:PowerUsers", "os_compute_api:servers:stop": "role:PowerUsers", "os_compute_api:servers:create:attach_volume": "role:PowerUsers", "os_compute_api:os-volumes-attachments:index": "role:PowerUsers", "os_compute_api:os-volumes-attachments:create": "role:PowerUsers", "os_compute_api:os-volumes-attachments:show": "role:PowerUsers", "os_compute_api:os-volumes-attachments:update": "role:PowerUsers", "os_compute_api:os-volumes-attachments:delete": "role:PowerUsers" }
在保存此文件并重启 nova 容器时,您将实施更改。添加到
PowerUsers
keystone 角色的用户接收这些权限。