11.4. 使用策略文件进行访问控制


重要

红帽不支持自定义角色或策略。语法错误或错误应用授权可能会对安全性或可用性造成负面影响。如果在生产环境中需要自定义角色或策略,请联系红帽支持例外。

要覆盖默认规则,请编辑相应 OpenStack 服务的 policy.json 文件。例如,计算服务在 nova 目录中有一个 policy.json,这是当您从容器内查看时,容器化服务的正确位置。

注意
  • 在生产环境中实施策略文件前,您必须完全测试对暂存环境中的策略文件的更改。
  • 您必须检查对访问控制策略的任何更改是否意外弱弱任何资源的安全性。另外,对 policy.json 文件的任何更改都会立即生效,不需要服务重启。

示例:创建高级用户角色

要自定义 keystone 角色的权限,请更新服务的 policy.json 文件。这意味着您可以更精细的定义分配给用户的权限。本例使用以下权限 为您的部署 创建一个高级用户角色:

  • 启动一个实例。
  • 停止实例。
  • 管理连接到实例的卷。

此角色的目的是为某些用户授予其他权限,而无需授予 admin 访问权限。要使用这些权限,您必须为自定义角色授予以下权限:

  • Start an instance: "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 用户保留这些权限,您可以为 admin_or_power_user 创建规则。您还可以使用一些基本条件逻辑来定义 role:PowerUsers 或 role:Admin

  1. 创建自定义 keystone 角色:

    $ openstack role create PowerUsers
    +-----------+----------------------------------+
    | Field     | Value                            |
    +-----------+----------------------------------+
    | domain_id | None                             |
    | id        | 7061a395af43455e9057ab631ad49449 |
    | name      | PowerUsers                      |
    +-----------+----------------------------------+
    Copy to Clipboard Toggle word wrap
  2. 将现有用户添加到角色中,并为项目分配角色:

    $ openstack role add --project [PROJECT_NAME] --user [USER_ID] [PowerUsers-ROLE_ID]
    Copy to Clipboard Toggle word wrap
    注意

    角色分配仅与一个项目配对。这意味着,当您为用户分配角色时,您也会同时定义 target 项目。如果您希望用户接收同一角色但针对不同的项目,则必须单独为它们分配角色,但以不同的项目为目标。

  3. 查看默认的 nova 策略设置:

    $ oslopolicy-policy-generator --namespace nova
    Copy to Clipboard Toggle word wrap
  4. 通过将以下条目添加到 /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"
    }
    Copy to Clipboard Toggle word wrap

    在保存文件并重启 nova 容器时,您将实施这些更改。添加到 PowerUsers keystone 角色的用户会收到这些特权。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat