我试图让一个IAM用户只对一个特定的文档使用SSM Run。
如果我将以下策略附加到用户,该用户实际上只能在EC2实例上成功地执行EC2文档(这是一个AWS管理的)文档。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:DescribeDocument",
"ssm:DescribeDocumentParameters",
"ssm:DescribeDocumentPermission",
"ssm:GetCommandInvocation",
"ssm:GetDocument",
"ssm:ListCommandInvocations",
"ssm:ListCommands",
"ssm:ListDocumentMetadataHistory",
"ssm:ListDocuments",
"ssm:ListDocumentVersions"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "ssm:SendCommand",
"Resource": "arn:aws:ssm:us-west-2:999999999999:document/AWS-RunShellScript"
}
]
}但是,如果我将策略中的资源项替换为我创建的自定义文档ARN (例如arn:aws:ssm:us-west-2:999999999999:document/CustomDocument),我将被“拒绝访问”。

发布于 2021-12-08 15:20:58
文档中并不十分清楚,但是要限制ssm:SendCommand,您必须使用Resource字段来指定允许IAM用户运行的文档和允许在上运行命令的。
用户在尝试运行命令时将看到所有实例,但只能为IAM策略中指定的EC2实例ID执行命令。
如果需要,可以指定允许任何实例的策略,如需要,也可以根据在IAM策略中授予最小特权的标准安全建议指定有限的实例in列表。
至于AWS管理的文档为什么工作,它可能是一些内部神奇的♂️
这应该是可行的:
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":"ssm:SendCommand",
"Resource":[
"arn:aws:ec2:us-west-2:999999999999:instance/*",
"arn:aws:ssm:us-west-2:999999999999:document/AWS-RunShellScript"
]
}
]
}https://stackoverflow.com/questions/70190926
复制相似问题