如何配置AWS策略使EC2实例仅能向自身发送ssm:SendCommand
正确配置EC2实例角色仅允许向自身发送SSM SendCommand
以下是满足需求的IAM策略配置:
{ "Effect": "Allow", "Action": "ssm:SendCommand", "Resource": [ "arn:aws:ssm:eu-west-1::document/AWS-RunPowerShellScript", "arn:aws:ec2:*:123456789:instance/*" ], "Condition": { "ArnEquals": { "ssm:TargetInstanceARN": "${ec2:SourceInstanceARN}" } } }
策略核心逻辑
- 资源范围:保留SSM文档ARN和EC2实例通配符ARN,因为
ssm:SendCommand操作必须同时指定命令文档和目标实例两个资源。 - 条件约束:
- 用
ssm:TargetInstanceARN匹配命令发送的目标实例ARN。 - 用
${ec2:SourceInstanceARN}引用发起请求的EC2实例自身ARN(仅当请求通过EC2实例角色发起时生效)。 - 通过
ArnEquals条件将两者绑定,确保只有目标实例是发起请求的实例自身时,操作才被允许。
- 用
原策略无效的原因
- 直接在Resource字段中使用
${ec2:SourceInstanceARN}不符合IAM规则,Resource字段不支持这种动态变量引用。 - 错误使用了
ssm:SourceInstanceARN条件键,ssm:SendCommand操作中标识目标实例的有效条件键是ssm:TargetInstanceARN。
内容的提问来源于stack exchange,提问作者zdenko.s
相关产品推荐
相关产品推荐

