You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在IAM策略中使用通配符实现主体标签与S3对象标签的包含匹配?

问题根因

你当前的IAM策略匹配逻辑完全倒置,导致匹配失败:
StringLike运算符的判断规则为左侧键对应的实际值,是否符合右侧的通配符表达式规则。你原有写法要求S3对象的custom:kypha标签值(值为hello)精确匹配用户PrincipalTag的custom:kypha值(值为hi-hello-welcome),二者本身不相等,自然返回访问拒绝。

修复方案

你需要的逻辑是「用户属性值包含S3对象的标签值」,所以要调换匹配双方的位置,同时给S3标签值前后增加多字符通配符*,修改后的策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:GetObject*",
            "Resource": "arn:aws:s3:::*",
            "Condition": {
                "StringLike": {
                    "aws:PrincipalTag/custom:kypha": "*${s3:ExistingObjectTag/custom:kypha}*"
                }
            }
        }
    ]
}

修改后匹配逻辑变为:检查用户的custom:kypha属性值是否符合*hello*的通配符规则,你的用户属性值为hi-hello-welcome,完全符合匹配要求,可正常放行。

额外校验点

  • 确认Cognito身份池已完成属性映射配置,Cognito用户的custom:kypha属性已正确映射为STS返回的PrincipalTag,否则${aws:PrincipalTag/custom:kypha}会解析为空,导致匹配失败。
  • 确认S3桶无其他优先级更高的拒绝类桶策略,覆盖当前ABAC授权规则。

内容的提问来源于stack exchange,提问作者Manish Pal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:27:01