3.2. 了解策略
Barbican 使用策略来确定允许哪些用户对 secret 执行操作,如添加或删除密钥。要实施这些控件,keystone 项目角色(如您之前创建的 创建者
)映射到 barbican 内部权限。因此,分配给这些项目角色的用户会收到对应的 barbican 权限。
3.2.1. 查看默认策略
默认策略在代码中定义,通常不需要任何修改。您可以通过从 barbican
源代码生成来查看默认策略:
在非生产环境的系统上执行以下步骤,因为可以下载并安装其他组件。本例切换到
queens
分支,因此在使用不同版本时必须调整此功能。git clone https://github.com/openstack/barbican cd /home/stack/barbican git checkout origin/stable/queens tox -e genpolicy
这会在包含默认设置的子目录中生成策略文件:
etc/barbican/policy.yaml.sample
。请注意,此路径引用仓库中的子目录,而不是系统的/etc
目录。下方的步骤中阐述了此文件的内容。您生成的
policy.yaml.sample
文件描述了 barbican 使用的策略。该策略由四个不同的角色实施,用于定义用户如何与 secret 和 secret 元数据交互。用户通过分配给特定角色来接收这些权限:-
admin
- 可以删除、创建/编辑和读取 secret。 -
创建者
- 可以创建/编辑和读取机密。无法删除 secret。 -
observer
- 只能读取数据。 Audit
- 只能读取元数据。不能读取 secret。例如,以下条目列出每个项目的
admin
、watch
r 和creator
Keystone 角色:在右侧,注意它们被分配了role:admin
、role:observer
和role:creator
权限:# #"admin": "role:admin" # #"observer": "role:observer" # #"creator": "role:creator"
这些角色也可通过 barbican 分组在一起。例如,指定
admin_or_creator
的规则可以应用到rule:admin
或rule:creator
的成员。
-
也可以在文件中进一步向下,有
secret:put
和secret:delete
操作。因此,请注意哪些角色具有执行这些操作的权限。在以下示例中,secret:delete
表示只有admin
和creator
角色成员才能删除 secret 条目。此外,规则也指出该项目的admin
或creator
角色中的用户可以删除该项目中的机密。项目匹配由secret_project_match
规则定义,该规则也在策略中定义。secret:delete": "rule:admin_or_creator and rule:secret_project_match"