最近更新时间:2025-12-22 16:57:36
运算符 | 说明 |
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" // 禁止此网段访问
]
}
}支持格式:
key&value - 键值对格式(推荐)
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", // ❌ 包含非法字符 @
"" // ❌ 空字符串
]运算符 | 说明 | 大小写 | 通配符 |
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"
]
}
}通配符说明:
* - 匹配零个或多个字符
? - 匹配单个字符
只在 StringLike 和 StringNotLike 中有效
在 StringEquals 等运算符中,* 和 ? 被视为普通字符
集合运算符可以与字符串运算符组合使用,用于处理多值匹配场景。
前缀 | 说明 | 匹配逻辑 |
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-*"
]
}
}条件键指定了条件运算符要检查的上下文信息。
条件键 | 说明 | 适用运算符 | 值格式 |
ksc:SourceIp | 请求来源 IP 地址 |
| IPv4/IPv6 地址或 CIDR |
ksc:Tag | 资源标签 | 所有字符串运算符 (可带集合前缀) |
|
条件键与运算符的对应关系:
ksc:SourceIp → IpAddress / NotIpAddress
ksc:Tag → StringEquals / StringNotEquals / StringLike / StringNotLike /
StringEqualsIgnoreCase / StringNotEqualsIgnoreCase /
ForAnyValue:StringEquals / ForAllValues:StringEquals / 等
纯净模式
