创建或更新自定义管控策略前,您需要了解管控策略的基本元素。管控策略由效果(Effect)、操作(Action)、资源(Resource)和条件(Condition)等基本元素组成。
元素名称 | 描述 |
效果(Effect) | 授权效果包括两种:允许(Allow)和拒绝(Deny)。 |
操作(Action) | 操作是指对具体资源的操作。 |
资源(Resource) | 资源是指被授权的具体对象。 |
条件(Condition) | 条件是指授权生效的条件。 |
效果(Effect)
Effect元素用于指定授权的效果是允许或拒绝,是必选元素。Effect元素的取值:Allow和Deny。
当权限策略中既有Allow又有Deny时,遵循Deny优先原则。
示例如下:
"Effect": "Allow"
操作(Action)
Action元素用于描述允许或拒绝的特定操作,是必选元素。Action元素的取值:云服务所定义的API操作名称。
Action元素的格式为<ram-code>:<action-name>
。
ram-code
:云服务的RAM代码。更多信息,请参见支持RAM的云服务的RAM代码列。action-name
:相关的API操作接口名称。
Action元素的值在大部分情况下不区分大小写,但为了保持业务行为的一致性,请按照云服务提供的鉴权文档使用准确的操作前缀<ram-code>
和操作名称<action-name>
。
示例如下:
"Action": [
"oss:ListBuckets",
"ecs:Describe*",
"rds:Describe*"
]
资源(Resource)
Resource元素用于描述被授权的一个或多个对象,适用于基于身份的策略,是必选元素。Resource元素的取值:云服务所定义的资源ARN(Aliyun Resource Name)。
Resource元素的格式为acs:<ram-code>:<region>:<account-id>:<relative-id>
,请按照云服务提供的鉴权文档使用准确的资源ARN。格式说明如下:
acs
:Alibaba Cloud Service的首字母缩写,表示阿里云的公共云平台。ram-code
:云服务RAM代码。更多信息,请参见支持RAM的云服务的RAM代码列。region
:地域信息。对于全局资源(无需指定地域就可以访问的资源),该字段用星号(*)表示。更多信息,请参见地域和可用区。account-id
:阿里云账号ID。例如:123456789012****
。relative-id
:与服务相关的资源描述部分,其语义由具体云服务指定。这部分的格式支持树状结构(类似文件路径)。以OSS为例,表示一个OSS对象的格式为:relative-id = “mybucket/dir1/object1.jpg”
。
示例如下:
"Resource": [
"acs:ecs:*:*:instance/inst-001",
"acs:ecs:*:*:instance/inst-002",
"acs:oss:*:*:mybucket",
"acs:oss:*:*:mybucket/*"
]
条件(Condition)
Condition元素用于指定授权生效的限制条件,是可选元素。Condition元素也称为条件块(Condition Block),它是由一个或多个条件子句构成。一个条件子句由条件操作类型、条件关键字和条件值组成。
因为Condition元素为可选元素,所以系统不会强制校验Condition元素的存在性。如要使用Condition元素指定授权生效的限制条件,请使用正确的拼写并注意区分大小写。
条件关键字的名称(key)严格区分大小写,条件值(value)是否区分大小写取决于您使用的条件运算符。例如:针对字符串类型的条件关键字,如果使用StringEquals运算符,则会将策略内容中的值和请求中的值进行匹配,区分大小写。如果使用StringEqualsIgnoreCase运算符,则会将策略内容中的值和请求中的值进行匹配,忽略大小写。
Condition元素的具体说明如下:
逻辑说明
条件满足:一个条件关键字可以指定一个或多个值,在条件检查时,如果条件关键字的值与指定值中的某一个相同(OR),即可判定条件满足。
条件子句满足:同一条件操作类型的条件子句下,若有多个条件关键字,所有条件关键字必须同时满足(AND),才能判定该条件子句满足。
条件块满足:条件块下的所有条件子句同时满足(AND)的情况下,才能判定该条件块满足。
条件操作类型
条件操作类型包括:字符串类型(String)、数字类型(Number)、日期类型(Date and time)、布尔类型(Boolean)和IP地址类型(IP address)。
条件操作类型
支持类型
字符串类型(String)
StringEquals
StringNotEquals
StringEqualsIgnoreCase
StringNotEqualsIgnoreCase
StringLike
StringNotLike
数字类型(Number)
NumericEquals
NumericNotEquals
NumericLessThan
NumericLessThanEquals
NumericGreaterThan
NumericGreaterThanEquals
日期类型(Date and time)
DateEquals
DateNotEquals
DateLessThan
DateLessThanEquals
DateGreaterThan
DateGreaterThanEquals
布尔类型(Boolean)
Bool
IP地址类型(IP address)
IpAddress
NotIpAddress
条件关键字
阿里云通用条件关键字命名格式:
acs:<condition-key>
。通用条件关键字
类型
描述
acs:CurrentTime
Date and time
Web Server接收到请求的时间。
说明使用UTC时间并按照ISO 8601标准。
例如:北京时间2023年01月10日20点00分00秒,表示为
2023-01-10T20:00:00+08:00
或2023-01-10T12:00:00Z
。acs:SecureTransport
Boolean
发送请求是否使用了安全信道。例如:HTTPS。
acs:SourceIp
IP address
发送请求时的客户端IP地址。
说明acs:SourceIp
的取值支持具体IP地址和CIDR形式的IP地址段。 禁止将具体IP地址写成CIDR形式,例如:10.0.0.1不能写成10.0.0.1/32。acs:MFAPresent
Boolean
用户登录时是否使用了多因素认证(MFA)。
说明如果RAM用户安全设置中的登录时必须使用MFA为仅异常登录时使用,那么
acs:MFAPresent
条件就会失效。更多信息,请参见管理RAM用户安全设置。acs:PrincipalARN
String
请求主体的身份。仅限在资源目录管控策略和RAM角色信任策略中使用。例如:
acs:ram:*:*:role/*resourcedirectory*
。说明目前,只支持指定RAM角色的ARN,且必须为小写英文字母。(您可以在RAM控制台的角色详情页面查看RAM角色的ARN)。
acs:PrincipalRDId
String
请求主体所属云账号所在的资源目录ID。仅限在RAM角色信任策略和OSS Bucket Policy中使用。
acs:PrincipalRDPath
String
请求主体所属云账号所在的资源目录中的路径。仅限在RAM角色信任策略和OSS Bucket Policy中使用。
acs:RequestTag/<tag-key>
String
请求中传递的标签信息。<tag-key>为标签键,请在使用时替换为实际值。支持的云服务及资源类型,请参见支持标签的云服务中的资源类型鉴权信息。
acs:ResourceTag/<tag-key>
String
请求访问的资源上绑定的标签信息。<tag-key>为标签键,请在使用时替换为实际值。支持的云服务及资源类型,请参见支持标签的云服务中的资源类型鉴权信息。
阿里云服务级别条件关键字命名格式:
<ram-code>:<condition-key>
。例如:OSS的条件关键字
oss:Delimiter
,用于ListObjects请求时,对Object名字进行分组的字符。各云服务的条件关键字,请参见各云服务的授权信息文档。
条件示例
一条授权语句中的条件是同时满足(AND)的关系,如果您想设置的条件是或(OR)的关系,您需要将条件分别写在两条授权语句中。
示例1:限制只有开启了MFA且从IP地址203.0.113.2发起访问的RAM用户才能访问ECS实例。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "IpAddress": { "acs:SourceIp": [ "203.0.113.2" ] }, "Bool": { "acs:MFAPresent": [ "true" ] } } } ] }
示例2:限制只有开启了MFA的RAM用户或从IP地址203.0.113.2发起访问的RAM用户才能访问ECS实例。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "IpAddress": { "acs:SourceIp": [ "203.0.113.2" ] } } }, { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "Bool": { "acs:MFAPresent": [ "true" ] } } } ] }
相关文档
管控策略语法和结构与RAM的基本相同。更多信息,请参见权限策略语法和结构。