全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

条件运算符

最近更新时间:2025-12-22 16:57:36

条件运算符详解

1. IP 地址运算符

运算符

说明

IpAddress

IP 地址或地址段匹配 支持 IPv4、IPv6、CIDR 格式

NotIpAddress

IP 地址或地址段不匹配

支持的 IP 格式:

  • IPv4 单地址:127.0.0.1

  • IPv4 CIDR:192.168.1.0/24

  • IPv6 单地址:2001:0db8:85a3::8a2e:0370:7334

  • IPv6 CIDR:fe80::/64

示例:

"Condition": {
    "IpAddress": {
        "ksc:SourceIp": [
            "127.0.0.1",              // IPv4 单地址
            "192.168.1.0/24",         // IPv4 CIDR
            "10.0.0.0/8",             // IPv4 大段 CIDR
            "2001:db8::1",            // IPv6 单地址
            "fe80::/64"               // IPv6 CIDR
        ]
    }
}
"Condition": {
    "NotIpAddress": {
        "ksc:SourceIp": [
            "172.16.0.0/12"           // 禁止此网段访问
        ]
    }
}

2.Tag 格式说明

格式规则

支持格式:

  1. key&value - 键值对格式(推荐)

  2. key - 仅键名

字符限制:

  • 允许字符:a-z A-Z 0-9 _ - &

  • & 仅用作键值分隔符

  • 不允许特殊字符(除 _ - & 外)

正则表达式:

^[a-zA-Z0-9_-]+(&[a-zA-Z0-9_-]+)?$

示例

✅ 正确的 Tag 格式:

"ksc:Tag": [
    "env&production",           // 键值对
    "team&backend",             // 键值对
    "owner&fengyikai",          // 键值对
    "project-001&app-api",      // 包含连字符
    "service_name&iam-api",     // 包含下划线
    "protected",                // 仅键名
    "key1&a",                   // 短值
    "env&prod-123"              // 值中包含连字符和数字
]

❌ 错误的 Tag 格式:

"ksc:Tag": [
    "env&",                     // ❌ 值为空
    "&production",              // ❌ 键为空
    "env=production",           // ❌ 使用了 = 而非 &
    "env:production",           // ❌ 使用了 :
    "env&prod&test",            // ❌ 多个 & 分隔符
    "key with space&value",     // ❌ 包含空格
    "key@value",                // ❌ 包含非法字符 @
    ""                          // ❌ 空字符串
]

3. 字符串运算符

运算符

说明

大小写

通配符

StringEquals

字符串精确匹配

敏感

StringNotEquals

字符串精确不匹配

敏感

StringEqualsIgnoreCase

字符串精确匹配

不敏感

StringNotEqualsIgnoreCase

字符串不匹配

不敏感

StringLike

字符串模糊匹配 * 匹配多个字符 ? 匹配单个字符

敏感

StringNotLike

字符串模糊不匹配

敏感

示例:

// 精确匹配(大小写敏感)
"Condition": {
    "StringEquals": {
        "ksc:Tag": [
            "env&production",
            "team&backend"
        ]
    }
}
// 精确匹配(忽略大小写)
"Condition": {
    "StringEqualsIgnoreCase": {
        "ksc:Tag": [
            "ENV&PRODUCTION"    // 匹配 env&production, ENV&PRODUCTION, Env&Production 等
        ]
    }
} 
// 模糊匹配(支持通配符)
"Condition": {
    "StringLike": {
        "ksc:Tag": [
            "app-*",            // 匹配 app-api, app-web 等
            "env&prod?",        // 匹配 env&prod1, env&prod2 等
            "project&*-test"    // 匹配 project&app-test, project&web-test 等
        ]
    }
}
// 不匹配
"Condition": {
    "StringNotEquals": {
        "ksc:Tag": [
            "status&deleted",
            "status&archived"
        ]
    }
}

通配符说明:

  • * - 匹配零个或多个字符

  • ? - 匹配单个字符

  • 只在 StringLikeStringNotLike 中有效

  • StringEquals 等运算符中,*? 被视为普通字符

4. 集合运算符前缀

集合运算符可以与字符串运算符组合使用,用于处理多值匹配场景。

前缀

说明

匹配逻辑

ForAnyValue:

任意值匹配

请求中的任意一个值匹配条件中的任意一个值即满足

ForAllValues:

所有值匹配

请求中的所有值都必须匹配条件中的某个值才满足

组合格式:

{集合前缀}:{基础运算符}

支持的组合:

  • ForAnyValue:StringEquals

  • ForAnyValue:StringLike

  • ForAnyValue:StringEqualsIgnoreCase

  • ForAllValues:StringEquals

  • ForAllValues:StringLike

  • ForAllValues:StringEqualsIgnoreCase

  • 等等...

示例:

// 任意值匹配 - 请求标签中有任意一个匹配即可
"Condition": {
    "ForAnyValue:StringEquals": {
        "ksc:Tag": [
            "env&production",
            "env&staging"
        ]
    }
}
// 请求标签包含 env&production 或 env&staging 其中之一即满足
// 所有值匹配 - 请求标签中的所有值都必须在条件列表中
"Condition": {
    "ForAllValues:StringEquals": {
        "ksc:Tag": [
            "team&backend",
            "team&frontend",
            "team&ops"
        ]
    }
}
// 请求的所有标签都必须是 team&backend、team&frontend 或 team&ops 之一
// 集合 + 模糊匹配
"Condition": {
    "ForAnyValue:StringLike": {
        "ksc:Tag": [
            "project&app-*"
        ]
    }
}

5. 条件键

条件键指定了条件运算符要检查的上下文信息。

条件键

说明

适用运算符

值格式

ksc:SourceIp

请求来源 IP 地址

IpAddress NotIpAddress

IPv4/IPv6 地址或 CIDR

ksc:Tag

资源标签

所有字符串运算符 (可带集合前缀)

key&valuekey 允许字母、数字、下划线、连字符

条件键与运算符的对应关系:

ksc:SourceIp  →  IpAddress / NotIpAddress
ksc:Tag       →  StringEquals / StringNotEquals / StringLike / StringNotLike /
                 StringEqualsIgnoreCase / StringNotEqualsIgnoreCase /
                 ForAnyValue:StringEquals / ForAllValues:StringEquals / 等

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈