最近更新时间:2024.03.25 11:04:11
首次发布时间:2024.03.25 11:04:11
本文为您介绍IAM自定义策略的语法结构及其组成元素,帮助您更快了解、快速上手创建所需的自定义策略。
权限策略支持JSON格式,其通用语法句式如下:
{ "Statement": [ { "Effect": "<Effect>", "Action": [ "<Action>" ], "Resource": [ "<Resource>" ], "Condition": { "<Condition_operator>": { "<Condition_key>": [ "<Condition_value>" ] } } } ] }
Statement是策略中描述权限基本单元,称为权限声明,每条策略可包含多条权限声明,以数组形式表达。
{ }
包含,全部声明使用数组符号[ ]
包含在Statement元素内,最外层的使用{ }
包含,代表一个完整的策略。示例:如下是一条包含2则权限声明的策略:
{ "Statement": [ { "Effect": "Allow", "Action": [ "vpc:TagResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "iam:TagResources" ], "Resource": [ "*" ] } ] }
Effect是每则策略声明的必需元素,包含着这条权限声明的作用效果是允许(Allow)还是显式拒绝(Deny)。
示例:如下这条策略最终效果仍然是拒绝:
{ "Statement": [ { "Effect": "Deny", "Action": [ "vpc:TagResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "vpc:TagResources" ], "Resource": [ "*" ] } ] }
Action是每则策略声明的必需元素,包含着这条权限声明定义的操作范围。
${ServiceCode}:${Action}
。
${ServiceCode}
为云产品的服务代码,弹性伸缩的ServiceCode为auto_scaling
。${Action}
通常与云服务API的Action同值,弹性伸缩API信息请参见API列表。可以数组形式表达多个操作,支持*
及?
两种通配符。
*
:匹配0个、1个或多个字符。?
:匹配一个字符(不能为0个)。示例:如下是一条包含具体云服务Action及使用了通配符的策略。
{ "Statement": [ { "Effect": "Allow", "Action": [ "vpn:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "iam:ListUsers", "iam:GetUser" ], "Resource": [ "*" ] } ] }
弹性伸缩为运维管理类产品,非资源类产品,因此不涉及本元素。更多Resource元素的介绍,请参见资源(Resource)。
Condition是策略语法中的可选元素,定义了权限声明的生效条件。
示例:如下是一条带有Condition的策略示例。
IpAddress
,Condition Key为volc:SourceIp
,Condition Value为210.22.XX.XX
。210.22.XX.XX
中访问应用型负载均衡的全部操作。{ "Statement": [ { "Effect": "Allow", "Action": [ "alb:*" ], "Resource": [ "*" ], "Condition": { "IpAddress": { "volc:SourceIp":"210.22.XX.XX" } } } ] }