条件运算符

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:devECS实例进行管理操作。

{
  "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用户只能在指定时间点(北京时间201981217:00)之前访问ECS实例。

{
  "Statement": [
    {
      "Action": "ecs:*",
      "Effect": "Allow",
      "Resource": "*",
      "Condition": {
          "DateLessThan": {
              "acs:CurrentTime": "2019-08-12T17:00:00+08:00"
          }
      }
    }
  ],
  "Version": "1"
}

布尔类型(Boolean)

条件操作类型

运算符

描述

布尔类型(Boolean)

Bool

布尔值(truefalse)匹配。

示例:

以下策略在Condition中使用运算符Bool和条件关键字acs:MFAPresent,实现只有启用了MFARAM用户才能访问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/24203.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"
}