配置EC2 Instance Connect创建IAM策略报MalformedPolicyDocument错误
问题原因
MalformedPolicyDocument报错触发原因是策略文档中Version字段取值非法。
AWS IAM策略的Version是固定标识字段,不是用户可自定义的版本号,仅支持2个合法取值:
2012-10-17:现行策略版本,支持全部IAM特性(条件判断、精细化资源控制等)2008-10-17:旧版遗留策略版本,不推荐新策略使用
你当前策略里填写的2022-6-26不在合法值范围内,会直接被IAM的策略校验逻辑拦截,和JSON语法、权限配置逻辑本身无关。
修复方法
将策略文档中Version字段值替换为2012-10-17即可,修正后完整策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": "arn:aws:ec2:us-east-1:123456789:instance/*", "Condition": { "StringEquals": { "ec2:osuser": "ktian" } } }, { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" } ] }
验证步骤
保存修正后的iam-policy.json文件,重新执行原有创建命令即可成功创建策略:
aws iam create-policy --policy-name IAM-policy --policy-document file://iam-policy.json
额外说明:你配置的EC2 Instance Connect权限逻辑本身符合要求,限制操作系统用户为
ktian、仅开放公钥推送和实例查询权限的配置符合最小权限最佳实践,修正Version字段后策略可正常生效使用。
内容的提问来源于stack exchange,提问作者ktian
相关产品推荐
相关产品推荐

