全部文档
当前文档

暂无内容

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

文档中心

多条件组合示例

最近更新时间:2025-12-22 18:35:04

条件逻辑总结

多个条件运算符之间

AND 关系:同一 Condition 块中的多个运算符必须同时满足

"Condition": {
    "IpAddress": { ... },           // 必须满足
    "StringEquals": { ... }         // 且必须满足
}

同一条件键的多个值之间

OR 关系:同一条件键的值列表中,满足任意一个即可

"IpAddress": {
    "ksc:SourceIp": [
        "192.168.1.1",      // 或
        "10.0.0.1"          // 或
    ]
}

多个 Statement 之间

OR 关系:多个 Statement 之间是的关系,满足任意一个 Statement 即可

Deny 优先级高于 Allow

  • 如果某个 Deny Statement 匹配,则拒绝访问

  • 即使有 Allow Statement 匹配也无效

示例

1:IP 限制 + 标签限制

"Condition": {
    "IpAddress": {
        "ksc:SourceIp": [
            "192.168.1.0/24",
            "10.0.0.100"
        ]
    },
    "ForAnyValue:StringEquals": {
        "ksc:Tag": [
            "env&production",
            "env&staging"
        ]
    }
}

逻辑:

  • 来源 IP 必须在 192.168.1.0/2410.0.0.100 AND

  • 标签包含 env&productionenv&staging

2:多种字符串条件

"Condition": {
    "StringEquals": {
        "ksc:Tag": [
            "team&backend"
        ]
    },
    "StringLike": {
        "ksc:Tag": [
            "project&app-*"
        ]
    },
    "StringNotEquals": {
        "ksc:Tag": [
            "status&deleted"
        ]
    }
}

逻辑:

  • 标签包含 team&backend AND

  • 标签包含 project&app-* 模式 AND

  • 标签不包含 status&deleted

3:IP 白名单 + 黑名单组合

"Statement": [
    {
        "Effect": "Allow",
        "Action": ["iam:*"],
        "Resource": ["*"],
        "Condition": {
            "IpAddress": {
                "ksc:SourceIp": [
                    "192.168.0.0/16"    // 允许此网段
                ]
            }
        }
    },
    {
        "Effect": "Deny",
        "Action": ["iam:*"],
        "Resource": ["*"],
        "Condition": {
            "IpAddress": {
                "ksc:SourceIp": [
                    "192.168.100.0/24"  // 但拒绝此子网段
                ]
            }
        }
    }
]

逻辑:

  • 允许 192.168.0.0/16 网段访问

  • 但拒绝其中的 192.168.100.0/24 子网段(Deny 优先级高于 Allow)

4:复杂的标签策略

"Condition": {
    "ForAnyValue:StringEquals": {
        "ksc:Tag": [
            "env&production",
            "env&staging"
        ]
    },
    "ForAllValues:StringLike": {
        "ksc:Tag": [
            "team&*",
            "project&*"
        ]
    },
    "StringNotEquals": {
        "ksc:Tag": [
            "status&archived"
        ]
    }
}

逻辑:

  • 标签中至少有一个是 env&productionenv&staging AND

  • 所有标签都必须匹配 team&*project&* 模式 AND

  • 标签中不包含 status&archived

最佳实践

1. 最小权限原则

// ✅ 推荐:精确指定资源
"Resource": [
    "krn:ksc:iam:::user/specific-user"
]

// ❌ 避免:过度授权
"Resource": ["*"]

2. 使用 Deny 保护关键资源

{
    "Effect": "Deny",
    "Action": [
        "iam:DeleteUser",
        "iam:DeleteAccessKey"
    ],
    "Resource": [
        "krn:ksc:iam:::user/admin",
        "krn:ksc:iam:::user/root"
    ]
}

3. IP 白名单限制

"Condition": {
    "IpAddress": {
        "ksc:SourceIp": [
            "office-ip-range/24",
            "vpn-ip-range/24"
        ]
    }
}

4. 使用标签进行资源分组管理

"Condition": {
    "StringEquals": {
        "ksc:Tag": [
            "env&production",
            "team&ops"
        ]
    }
}

5. 组合使用 Allow 和 Deny

"Statement": [
    {
        "Effect": "Allow",
        "Action": ["iam:*"],
        "Resource": ["*"],
        "Condition": {
            "IpAddress": {
                "ksc:SourceIp": ["company-network/16"]
            }
        }
    },
    {
        "Effect": "Deny",
        "Action": [
            "iam:DeleteUser",
            "iam:DeletePolicy"
        ],
        "Resource": ["*"]
    }
]

逻辑: 允许公司网络内所有 IAM 操作,但禁止删除用户和策略

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

纯净模式

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