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

IAM策略中aws:principalArn条件通配符的正确写法咨询

正确的IAM策略配置方案

方案一:使用Secrets Manager资源策略(控制谁能访问秘密)

如果要通过资源策略限制只有使用MyRole的EC2实例能调用secretsmanager:GetSecretValue,正确的策略语法如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:aws:secretsmanager:你的区域:111122223333:secret:你的秘密名称-*",
            "Condition": {
                "StringLike": {
                    "aws:PrincipalArn": "arn:aws:sts::111122223333:assumed-role/MyRole/*"
                }
            }
        }
    ]
}

关键注意事项

  • 必须确保aws:PrincipalArn的匹配格式准确:EC2实例通过角色临时凭证访问时,其Principal ARN格式为arn:aws:sts::账号ID:assumed-role/角色名/会话标识,通配符*用于匹配末尾的会话标识(EC2实例的会话名通常和实例ID相关)。
  • 替换策略中的你的区域和你的秘密名称为实际值,资源ARN可以根据需求调整范围(比如指定单个秘密或所有秘密)。
  • 该策略需要附加到目标Secrets Manager秘密资源上,而非IAM角色。

方案二:直接给MyRole添加身份策略(更简单)

如果不需要在资源端做限制,直接给MyRole添加身份策略是更高效的方式,所有使用该角色的EC2实例会自动继承权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:aws:secretsmanager:你的区域:111122223333:secret:你的秘密名称-*"
        }
    ]
}

之前配置失效的可能原因

  • 策略附加位置错误:如果把资源策略附加到IAM角色上,Principal和Condition的配置不会生效,因为身份策略不需要指定Principal。
  • ARN格式错误:比如账号ID、角色名拼写错误,或者通配符位置不正确。
  • EC2实例未正确关联角色:需要确认实例已通过**实例配置文件(Instance Profile)**关联到MyRole,否则实例无法获取该角色的临时凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:55:17