当系统权限策略无法满足需求时,可创建自定义权限策略实现最小授权。自定义权限策略支持精细化权限管控,有效提升资源访问安全性。本文提供云原生API网关的自定义权限策略示例。
什么是自定义权限策略
在基于RAM的访问控制体系中,自定义权限策略是指在系统权限策略之外,您可以自主创建、更新和删除的权限策略。自定义权限策略的版本更新需由您来维护。
创建自定义权限策略后,需为RAM用户、用户组或RAM角色绑定权限策略,这些RAM身份才能获得权限策略中指定的访问权限。
已创建的权限策略支持删除,但删除前需确保该策略未被引用。如果该权限策略已被引用,您需要在该权限策略的引用记录中移除授权。
自定义权限策略支持版本控制,您可以按照RAM规定的版本管理机制来管理您创建的自定义权限策略版本。
操作文档
授权模式
云原生API网关支持两种自定义权限策略的授权模式,请根据实际场景选择:
通过 Resource ARN 指定资源:在
Resource元素中填写具体的资源 ARN,将权限精确限定到某个网关实例、API 或全部资源。这是最常用的授权模式。通过条件键限定资源范围:将
Resource设为*,在Condition元素中使用apig:GatewayId条件键限定网关实例。当需要同时管控同一网关下的多种资源类型(如服务和来源)而无需逐一指定 ARN 时,使用此模式。
示例概览
下表汇总了本文档中的自定义权限策略示例。
示例 |
授权对象 |
操作范围 |
限定方式 |
适用场景 |
示例 1(推荐) |
指定网关实例 |
全部操作( |
Resource ARN |
授予某个网关实例的完整权限。 |
示例 2 |
指定 API |
全部操作( |
Resource ARN |
授予某个 API 的完整权限。 |
示例 3 |
全部资源 |
只读( |
Resource ARN |
授予所有网关资源的只读权限。 |
示例 4 |
指定网关下的服务和来源 |
Service 和 Source 的增删改查 |
条件键( |
需要在同一网关下管控多种资源类型,无需逐一指定 ARN。 |
通过 Resource ARN 指定资源
以下示例在 Resource 元素中指定具体的资源 ARN 来限定授权范围。这是最常用的授权模式。如果您首次创建自定义策略,建议从示例 1 开始。
-
示例 1(推荐):授予RAM用户对云原生API网关实例gw-cpnx*******的读写权限。
{ "Statement": [ { "Action": [ "apig:*" ], "Resource": "acs:apig:*:*:gateway/gw-cpnx*******", "Effect": "Allow" } ], "Version": "1" } -
示例2:授予RAM用户对云原生API网关API列表api-cpo22t5lhtgxxxxxx的读写权限。
{ "Statement": [ { "Action": [ "apig:*" ], "Resource": "acs:apig:*:*:httpapi/api-cpo22t5lhtgxxxxxx", "Effect": "Allow" } ], "Version": "1" } -
示例3:授予RAM用户对云原生API网关所有资源的读权限。
{ "Statement": [ { "Action": [ "apig:List*", "apig:Get*" ], "Resource": "acs:apig:*:*:*", "Effect": "Allow" } ], "Version": "1" }
通过条件键限定资源范围
前述示例使用 Resource ARN 指定具体资源。以下示例改用条件键 apig:GatewayId 限定网关实例范围。Resource 设为 *,授权范围由 Condition 中的条件键控制。
-
示例4:授予RAM用户管理指定网关实例下服务和来源的权限。
下表按资源类型和操作类型列出本策略中的 Action。
资源类型
查询
列举
创建
更新
删除
服务(Service)
apig:GetServiceapig:ListServicesapig:CreateServiceapig:UpdateServiceapig:DeleteService来源(Source)
apig:GetSourceapig:ListSourcesapig:CreateSourceapig:UpdateSourceapig:DeleteSource{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "apig:GetService", "apig:GetSource", "apig:ListServices", "apig:ListSources", "apig:CreateService", "apig:CreateSource", "apig:UpdateService", "apig:UpdateSource", "apig:DeleteService", "apig:DeleteSource" ], "Resource": "*", "Condition": { "StringEquals": { "apig:GatewayId": [ "gw-d6h4********65n996e0" ] } } } ] }
授权信息参考
创建自定义权限策略前,需了解业务的权限管控需求和云原生API网关的授权信息。详细内容请参见授权信息。