Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

5.6. 示例:根据属性限制访问

您可以创建策略,以根据发出该 API 调用的用户属性限制对 API 调用的访问。例如,以下默认规则指出,如果从管理上下文运行,或者令牌的用户 ID 与与目标关联的用户 ID 匹配时,允许删除密钥对。

"os_compute_api:os-keypairs:delete": "rule:admin_api or user_id:%(user_id)s"

注意:* 新实施的功能无法保证在每个服务中使用每个发行版本。因此,使用目标服务现有策略的约定编写规则非常重要。有关查看这些策略的详情,请参阅检查现有策略。* 所有策略都应该在非生产环境中为部署它们的每个版本进行严格测试,因为策略无法保证跨版本兼容。

根据上例,您可以制作 API 规则,以根据他们自己是否拥有资源来扩展或限制用户访问。另外,属性也可以与其他限制结合使用,以形成规则,如下例所示:

"admin_or_owner": "is_admin:True or project_id:%(project_id)s"

考虑以上示例,您可以创建一个仅限于管理员和用户的唯一规则,然后使用该规则来进一步限制操作:

"admin_or_user": "is_admin:True or user_id:%(user_id)s"
"os_compute_api:os-instance-actions": "rule:admin_or_user"

有关可用的 policy.json 语法选项的更多信息,请参阅策略语法