IAM策略分为基于身份的策略和基于资源的策略。
说明
您可参考自定义策略示例了解常用场景的策略语法。
与IAM身份(用户、用户组或角色)绑定的策略称为”基于身份的策略“,一般而言,大部分场景仅需使用基于身份的策略。
示例1:以下是一条基于身份的策略,定义了允许对应用型负载均衡进行部分操作:
{ "Statement": [ { "Effect": "Allow", "Action": [ "alb:CreateListener", "alb:DeleteListener", "alb:ModifyListener", "alb:DescribeListener", "alb:DescribeListenerAttributes", "alb:DescribeListenerHealth" ], "Resource": [ "*" ] } ] }
示例2:以下策略定义了允许删除用户组名为example-group的IAM用户组的权限:
{ "Statement": [ { "Effect": "Allow", "Action": [ "iam:DeleteGroup" ], "Resource": [ "trn:iam::2000000001:group/example-group" ] } ] }
示例3:以下策略基于示例1,进一步增加了Condition元素,限制了可访问的时间(该元素的使用说明具体可参考Condition说明文档):
{ "Statement": [ { "Effect": "Allow", "Action": [ "alb:CreateListener", "alb:DeleteListener", "alb:ModifyListener", "alb:DescribeListener", "alb:DescribeListenerAttributes", "alb:DescribeListenerHealth" ], "Resource": [ "*" ] "Condition": { "DateGreaterThanEquals": { "volc:CurrentTime":"2023-08-30T23:59:59Z" } } } ] }
基于身份的策略包含以下元素:
元素 | 是否必须 | 格式示例 | 说明 |
---|---|---|---|
Statement | 是 |
| Statement是策略中描述权限基本单元,称为权限声明,每条策略可包含多条权限声明,以数组形式表达。详细说明可参考Statement说明文档。 |
Effect | 是 |
| Effect定义了权限效果是允许(Allow)还是拒绝(Deny)。详细说明可参考Effect说明文档。 |
Action | 是 |
| Action定义了权限的操作范围,不同云服务支持的Action可从云服务的API文档中查询。详细说明可参考Action说明文档。 |
Resource | 否 |
| Resource定义了权限的资源范围,当无需控制资源级别权限时,可使用通配符 |
Condition | 否 |
| Condition定义了权限的生效条件,当无需控制具体的生效条件时,策略中可不包含Condition部分。如需定义具体的权限生效条件,可参考Condition说明文档。 |
在某些场景,策略可与资源进行绑定(而非与身份绑定),这类策略称为”基于资源的策略“。在基于资源的策略中,因为缺少与身份的绑定关系,因此策略内容中必须包含Principal元素,同时因为基于资源的策略天然拥有与资源的绑定关系,因此策略中Resource元素无需定义。
以下是一条基于资源的策略示例:
{ "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Principal": { "Service": [ "vke" ] } } ] }
基于资源的策略包含以下元素:
元素 | 是否必须 | 格式示例 | 说明 |
---|---|---|---|
Statement | 是 |
| Statement是策略中描述权限基本单元,称为权限声明,每条策略可包含多条权限声明,以数组形式表达。详细说明可参考Statement说明文档。 |
Effect | 是 |
| Effect定义了权限效果是允许(Allow)还是拒绝(Deny)。详细说明可参考Effect说明文档。 |
Action | 是 |
| Action定义了权限的操作范围,不同云服务支持的Action可从云服务的API文档中查询。详细说明可参考Action说明文档。 |
Principal | 是 |
| Principal定义了权限的信任对象,详细说明可参考Principal说明文档。示例中信任对象为vke服务,代表授予服务进行角色扮演(AssumeRole)。 |
Condition | 否 |
| Condition定义了权限的生效条件,当无需控制具体的生效条件时,策略中可不包含Condition部分。如需定义具体的权限生效条件,可参考Condition说明文档。 |
目前火山引擎支持以下两种资源使用基于资源的策略:
访问控制角色: 角色上基于资源的策略也称为信任策略(Trust policy)。
对象存储桶: 存储桶上基于资源的策略也称为桶策略。