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
相关产品推荐
相关产品推荐

