最近更新时间:2024.04.10 11:18:41
首次发布时间:2024.03.22 08:27:15
本文为您介绍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为cen
。${Action}
通常与云服务API的Action同值,云企业网API信息请参见API列表。可以数组形式表达多个操作,支持*
及?
两种通配符。
*
:匹配0个、1个或多个字符。?
:匹配一个字符(不能为0个)。示例:如下是一条包含具体云服务Action及使用了通配符的策略。
{ "Statement": [ { "Effect": "Allow", "Action": [ "cen:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "iam:ListUsers", "iam:GetUser" ], "Resource": [ "*" ] } ] }
Resource元素内包含着权限声明定义的资源范围,使用“TRN”表达式定义。 TRN(The Resource Name)是火山引擎上资源的全局唯一标识,由服务、地域、账号、资源路径等信息组成。
元素基本格式:trn:{ServiceCode}:{RegionCode}:{AccountId}:{ResourcePath}
。
元素 | 说明 | 是否必填 |
---|---|---|
trn | TRN的固定前缀。 | 是 |
{ServiceCode} | 云服务的英文代码,例如云企业网的ServiceCode为cen 。 | 是 |
| 资源所属的地域。
| 否 |
{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的策略示例。
StringEqualsIgnoreCase
,Condition Key为volc:RequestedRegion
,Condition Value为cn-beijing
。cn-beijing
下访问云企业网资源的全部操作。{ "Statement": [ { "Effect": "Allow", "Action": [ "cen:*" ], "Resource": [ "*" ], "Condition": { "StringEqualsIgnoreCase": { "volc:RequestedRegion":"cn-beijing" } } } ] }
云企业网资源TRN格式如下表所示:
产品 | 产品Service代码 | 资源类型 | 资源类型代码 | trn格式 |
---|---|---|---|---|
云企业网 | cen | 云企业网实例 | cen | trn:cen::{account}:cen/{cenid} |
CEN带宽包 | cenbandwidthpackage | trn:cen::{account}:cenbandwidthpackage/{cenbandwidthpackageid} |