Condition中的运算符与条件键、条件值一起构成完整的条件判断语句,当请求满足该条件时,策略才能生效。按照类型将运算符分为五类:字符串类型(String)、数字类型(Number)、日期类型(Date and time)、布尔类型(Boolean)和IP地址类型(IP address)。本文为您介绍RAM支持的运算符及示例。
字符串类型(String)
条件操作类型 | 运算符 | 描述 |
字符串类型(String) | StringEquals | 字符串等于(区分大小写)。 |
StringNotEquals | 字符串不等于(区分大小写)。 | |
StringEqualsIgnoreCase | 字符串等于(不区分大小写)。 | |
StringNotEqualsIgnoreCase | 字符串不等于(不区分大小写)。 | |
StringLike | 部分字符串等于(区分大小写,支持通配符
| |
StringNotLike | 部分字符串不等于(区分大小写,支持通配符
|
示例:
StringEquals示例
以下策略在Condition
中使用运算符StringEquals
和条件关键字acs:ResourceTag
,实现RAM用户只能对绑定了标签team:dev
的ECS实例进行管理操作。
{
"Effect": "Allow",
"Action": "ecs:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"acs:ResourceTag/team": [
"dev"
]
}
}
}
StringLike示例
以下策略表示:RAM用户使用OSS命令行工具只能访问myphotos/hangzhou/2015/
目录并列出该目录下的文件。策略在Condition
中使用运算符StringLike
和条件关键字oss:Prefix
,实现仅列举指定前缀(hangzhou/2015/)的Object。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:GetObject"
],
"Resource": [
"acs:oss:*:*:myphotos/hangzhou/2015/*"
]
},
{
"Effect": "Allow",
"Action": [
"oss:ListObjects"
],
"Resource": [
"acs:oss:*:*:myphotos"
],
"Condition":{
"StringLike":{
"oss:Prefix":"hangzhou/2015/*"
}
}
}
]
}
数字类型(Number)
条件操作类型 | 运算符 | 描述 |
数字类型(Number) | NumericEquals | 数值等于。 |
NumericNotEquals | 数值不等于。 | |
NumericLessThan | 数值小于。 | |
NumericLessThanEquals | 数值小于等于。 | |
NumericGreaterThan | 数值大于。 | |
NumericGreaterThanEquals | 数值大于等于。 |
示例:
以下策略在Condition
中使用运算符NumericLessThanEquals
和条件关键字kms:RecoveryWindowInDays
,实现当设置的恢复窗口期小于等于10天时,拒绝所有RAM用户和RAM角色删除KMS凭据。
{
"Statement": [
{
"Effect": "Deny",
"Action": "kms:DeleteSecret",
"Principal": "*",
"Resource": "*",
"Condition": {
"NumericLessThanEquals": {
"kms:RecoveryWindowInDays": "10"
}
}
}
]
}
日期类型(Date and time)
条件操作类型 | 运算符 | 描述 |
日期类型(Date and time) | DateEquals | 日期等于。 |
DateNotEquals | 日期不等于。 | |
DateLessThan | 日期小于。 | |
DateLessThanEquals | 日期小于等于。 | |
DateGreaterThan | 日期大于。 | |
DateGreaterThanEquals | 日期大于等于。 |
示例:
以下策略在Condition
中使用运算符DateLessThan
和条件关键字acs:CurrentTime
,实现RAM用户只能在指定时间点(北京时间2019年8月12日17:00)之前访问ECS实例。
{
"Statement": [
{
"Action": "ecs:*",
"Effect": "Allow",
"Resource": "*",
"Condition": {
"DateLessThan": {
"acs:CurrentTime": "2019-08-12T17:00:00+08:00"
}
}
}
],
"Version": "1"
}
布尔类型(Boolean)
条件操作类型 | 运算符 | 描述 |
布尔类型(Boolean) | Bool | 布尔值( |
示例:
以下策略在Condition
中使用运算符Bool
和条件关键字acs:MFAPresent
,实现只有启用了MFA的RAM用户才能访问ECS实例。
{
"Statement": [
{
"Action": "ecs:*",
"Effect": "Allow",
"Resource": "*",
"Condition": {
"Bool": {
"acs:MFAPresent": "true"
}
}
}
],
"Version": "1"
}
IP地址类型(IP address)
条件操作类型 | 运算符 | 描述 |
IP地址类型(IP address) | IpAddress | IP地址等于(不包含首尾边界值)。 |
NotIpAddress | IP地址不等于(不包含首尾边界值)。 | |
IpAddressIncludeBorder | IP地址等于(包含首尾边界值)。 说明 仅部分产品支持,建议您测试后使用。 | |
NotIpAddressIncludeBorder | IP地址不等于(包含首尾边界值)。 说明 仅部分产品支持,建议您测试后使用。 |
示例:
以下策略在Condition
中使用运算符IpAddress
和条件关键字acs:SourceIp
,实现RAM用户只能通过192.0.2.0/24和203.0.113.2访问ECS实例。
{
"Statement": [
{
"Action": "ecs:*",
"Effect": "Allow",
"Resource": "*",
"Condition": {
"IpAddress": {
"acs:SourceIp": [
"192.0.2.0/24",
"203.0.113.2"
]
}
}
}
],
"Version": "1"
}