最近更新时间:2024.04.24 16:08:30
首次发布时间:2022.07.01 09:20:44
本文为您介绍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为ecs
。${Action}
通常与云服务API的Action同值,云服务器API信息请参见API列表。可以数组形式表达多个操作,支持*
及?
两种通配符。
*
:匹配0个、1个或多个字符。?
:匹配一个字符(不能为0个)。示例:如下是一条包含具体云服务Action及使用了通配符的策略。
{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "iam:ListUsers", "iam:GetUser" ], "Resource": [ "*" ] } ] }
Resource元素内包含着权限声明定义的资源范围,使用“TRN”表达式定义。 TRN(The Resource Name)是火山引擎上资源的全局唯一标识,由服务、地域、账号、资源路径等信息组成。
资源TRN格式:trn:{ServiceCode}:{RegionCode}:{AccountId}:{ResourcePath}
。
参数 | 说明 | 是否必填 |
---|---|---|
trn | TRN的固定前缀。 | 是 |
{ServiceCode} | 云服务的英文代码,例如云服务器的ServiceCode为ecs 。 | 是 |
| 资源所属的地域。
| 否 |
{AccountId} | 资源所属的火山引擎账号ID。 | 是 |
| 资源路径。
| 是 |
支持整体以通配符*
表达,或在TRN从第2段至后续的每一段中使用通配符。
*
:匹配0个、1个或多个字符。?
:匹配一个字符(不能为0个)。更多Resource元素的介绍,请参见资源(Resource)。
示例:以下是一条包含Resource的策略,该策略定义了允许删除实例ID为“i-100”和“i-200”的云服务器实例以及允许查询全部IAM用户的权限。
{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DeleteInstance" ], "Resource": [ "trn:ecs:cn-beijing:2000000001:instance/i-100", "trn:ecs:cn-beijing:2000000001:instance/i-200", ] }, { "Effect": "Allow", "Action": [ "iam:GetUser" ], "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" } } } ] }
云服务器ECS的资源TRN格式如下表所示:
产品 | 产品Service代码 | 资源类型 | 资源类型代码 | trn格式 |
---|---|---|---|---|
云服务器 | ecs | 实例 | instance | trn:ecs:{region}:{account}:instance/{instanceid} |
密钥对 | keypair | trn:ecs:{region}:{account}:keypair/{keypairname} | ||
镜像 | image | trn:ecs:{region}:{account}:image/{imageid} |