11.5. 示例:根据属性限制访问
重要
红帽不支持自定义角色或策略。语法错误或错误应用授权可能会对安全性或可用性造成负面影响。如果在生产环境中需要自定义角色或策略,请联系红帽支持例外。
您可以根据发出该 API 调用的用户属性,创建将限制对 API 调用的访问的策略。例如,以下默认规则指出,如果从管理上下文运行,或者令牌的用户 ID 与与目标关联的用户 ID 匹配,则允许密钥对删除。
"os_compute_api:os-keypairs:delete": "rule:admin_api or user_id:%(user_id)s"
"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_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"
"admin_or_user": "is_admin:True or user_id:%(user_id)s"
"os_compute_api:os-instance-actions": "rule:admin_or_user"