组织 ORGANIZATIONS-SCP语法介绍:运算符

时间:2024-05-11 17:00:35

运算符

运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,策略才能生效。运算符可以增加后缀“IfExists”,表示对应请求值为空或满足条件的请求值均使策略生效,如“StringEqualsIfExists”表示请求值为空或请求值等于条件值均使策略生效。运算符为字符串型运算符,表格中如未增加说明,不区分大小写。

  • String类型
    表3 String类型运算符

    类型

    运算符

    说明

    String

    StringEquals

    请求值与任意一个条件值相同(区分大小写)。

    StringNotEquals

    请求值与所有条件值都不同(区分大小写)。

    StringEqualsIgnoreCase

    请求值与任意一个条件值相同。

    StringNotEqualsIgnoreCase

    请求值与所有条件值都不同。

    StringMatch

    请求值符合任意一个条件值的正则表达式(区分大小写,正则表达式仅支持*和?)。

    StringNotMatch

    请求值不符合所有条件值的正则表达式(区分大小写,正则表达式仅支持*和?)。

    示例:禁止用户名为ZhangSan的请求者修改资源共享实例。

    {
        "Version": "5.0",
        "Statement": [
            {
                "Effect": "Deny",
                "Action": [
                    "ram:resourceShares:delete",
                    "ram:resourceShares:update"
                ],
                "Condition": {
                    "StringEquals": {
                        "g:DomainName": [
                            "ZhangSan"
                        ]
                    }
                }
            }
        ]
    }
  • Number类型
    表4 Number类型运算符

    类型

    运算符

    说明

    Number

    NumberEquals

    请求值等于任意一个条件值。

    NumberNotEquals

    请求值不等于所有条件值。

    NumberLessThan

    请求值小于任意一个条件值。

    NumberLessThanEquals

    请求值小于或等于任意一个条件值。

    NumberGreaterThan

    请求值大于任意一个条件值。

    NumberGreaterThanEquals

    请求值大于或等于任意一个条件值。

  • Date类型
    表5 Date类型运算符

    类型

    运算符

    说明

    Date

    DateLessThan

    请求值早于任意一个条件值。

    DateLessThanEquals

    请求值早于或等于任意一个条件值。

    DateGreaterThan

    请求值晚于任意一个条件值。

    DateGreaterThanEquals

    请求值晚于或等于任意一个条件值。

    示例:请求者禁止在2022年8月1日前访问RAM服务。

    {
        "Version": "5.0",
        "Statement": [
            {
                "Effect": "Deny",
                "Action": [
                    "ram:*:*"
                ],
                "Condition": {
                    "DateLessThan": {
                        "g:CurrentTime": [
                            "2022-08-01T00:00:00Z"
                        ]
                    }
                }
            }
        ]
    }
  • Bool类型
    表6 Bool类型运算符

    类型

    运算符

    说明

    Bool

    Bool

    条件值可选值:true、false。请求值等于条件值。

  • Null类型
    表7 Null类型运算符

    类型

    运算符

    说明

    Null

    Null

    条件值可选值:true、false。条件值为true,要求请求值不存在或者值为null;条件值为false,要求请求值必须存在且值不为null。

  • IP类型
    表8 IP类型运算符

    类型

    运算符

    说明

    IP

    IpAddress

    指定IP地址或者IP范围。

    NotIpAddress

    指定IP地址或者IP范围之外的所有IP地址。

    示例:拒绝IP地址在10.27.128.0到10.27.128.255范围内的请求修改指定的永久访问密钥。

    {
      "Version": "5.0",
      "Statement": [
        {
          "Effect": "Deny",
          "Action": [
            "iam:credentials:updateCredentialV5"
          ],
          "Condition": {
            "IpAddress": {
              "g:SourceIp": [
                "10.27.128.0/24"
              ]
            }
          }
        }
      ]
    }
  • “IfExists”运算符后缀

    除Null运算符以外,您可以在任何条件运算符名称的末尾添加IfExists,例如:StringEqualsIfExists。如果请求的内容中存在条件键,则依照策略所述来进行匹配。如果该键不存在,则该条件元素的匹配结果将为true。

support.huaweicloud.com/usermanual-organizations/org_03_0033.html