3.3.4. 使用策略文件进行访问控制
要覆盖默认规则,请编辑相应 OpenStack 服务的 policy.json 文件。例如,Compute 服务在 nova 目录中有一个 policy.json,这是容器内部查看容器化服务文件的正确位置。
- 在在生产环境中实施策略文件前,您必须对策略文件进行全面测试。
-
您必须检查对访问控制策略的任何更改都不会意外弱弱任何资源的安全性。另外,对
policy.json文件的任何更改都会立即有效,不需要重启服务。
3.3.4.1. 示例:创建高级用户角色 复制链接链接已复制到粘贴板!
要自定义 keystone 角色的权限,请更新服务的 policy.json 文件。这意味着您可以更精细地定义分配给一类用户的权限。这个示例为您的部署创建一个 power 用户角色,其具有以下权限:
- 启动实例。
- 停止实例。
- 管理附加到实例的卷。
此角色的意图是为某些用户授予额外权限,而无需授予 admin 访问权限。要使用这些权限,您必须将以下权限授予自定义角色:
-
Start an instance:
"os_compute_api:servers:start": "role:PowerUsers" -
Stop an instance:
"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 用户保留这些权限,您可以为 admin_or_power_user 创建规则。您还可以使用一些基本条件逻辑来定义 role:PowerUsers 或 role:Admin。
要确保在命令行会话中使用 keystone v3 API,提供定义 v3 端点和设置的 rc 文件:
OS_AUTH_URL=http://controller-hostname.lab.local:5000/v3 OS_USERNAME=username OS_PASSWORD=password OS_USER_DOMAIN_NAME=Default OS_PROJECT_DOMAIN_NAME=Default OS_PROJECT_NAME=project-name OS_IDENTITY_API_VERSION=3创建自定义 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]注意角色分配专门用于一个项目。这意味着,当您为用户分配角色时,您还会同时定义 target 项目。如果您想要用户收到同一角色,但对于其他项目,则必须为它们单独分配角色,但针对不同的项目。
查看默认 nova 策略设置:
$ oslopolicy-policy-generator --namespace 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" }保存此文件时,更改将立即生效。添加到
PowerUserskeystone 角色中的任何用户都会获得这些权限。