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

如何批量授权IAM角色使用KMS密钥?无需逐个罗列

问题解答

可行替代方案及修正说明

首先,你原来的密钥策略存在JSON语法错误:同一个Principal对象下不能有重复的AWS键,多个主体必须放在数组中,这可能是你之前配置无效的原因之一。以下是两种无需逐个罗列角色的有效方案:

方案1:在Principal中使用ARN通配符

KMS密钥策略支持在ARN中使用*通配符,直接匹配符合命名规则的IAM角色。将目标角色的ARN通配符作为Principal.AWS的值即可:

{
    "Sid": "EnableIAMRolesWithWildcard",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::xxxxxxxxxx:role/a*"
    },
    "Action": "kms:*",
    "Resource": "*"
}

如果需要匹配多组命名规则,可使用数组形式:

"Principal": {
    "AWS": [
        "arn:aws:iam::xxxxxxxxxx:role/a*",
        "arn:aws:iam::xxxxxxxxxx:role/b*"
    ]
}

方案2:使用条件语句匹配IAM角色ARN

通过Condition判断请求发起者的身份ARN是否符合规则,这种方式更灵活,还能结合其他条件(如请求来源IP):

{
    "Sid": "AllowRolesViaCondition",
    "Effect": "Allow",
    "Principal": {
        "AWS": "*"
    },
    "Action": "kms:*",
    "Resource": "*",
    "Condition": {
        "StringLike": {
            "iam:PrincipalArn": "arn:aws:iam::xxxxxxxxxx:role/a*"
        }
    }
}

关于你之前尝试的错误说明

  • 使用arn:aws:iam::xxxxxxxxxx:root:账户root用户拥有全权限,但不会自动授权下属IAM角色,角色需要单独配置权限,因此这种方式无效。
  • 使用sourceArn条件:sourceArn指向的是发起请求的资源ARN(如EC2实例、S3对象),而非请求者的身份ARN。要匹配IAM角色身份,必须使用iam:PrincipalArn条件,这是你之前配置失效的核心原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:35:37