AWS IAM SSM - 限制实例可以运行的文档

Bre*_*son 4 amazon-ec2 amazon-web-services

有没有办法限制 EC2 实例的 IAM 策略它只能运行一个简短的文档列表 - 我尝试像这样限制对 ssm:GetDocument 的访问:

{
  "Version": "2012-10-17",
  "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "ssm:GetDocument"
        ],
        "Resource": [
            "arn:aws:ssm:ap-southeast-2:*:document/MyCommand"
        ]
    }
 ]}
Run Code Online (Sandbox Code Playgroud)

但是我可以在实例上运行任何命令,仍然包括 AWS-RunPowershellScript 文档。

此链接显示了如何在 ssm:sendCommand 方面限制用户:http ://docs.aws.amazon.com/AWSEC2/latest/UserGuide/delegate-commands.html

ste*_*din 8

我还没有找到基于文档限制 SendCommand 的方法。如果用户没有访问权限,您会收到如下错误:

用户:arn:aws:iam::123456789012:user/username 无权执行:ssm:SendCommand 资源:arn:aws:ec2:us-east-1:123456789012:instance/i-01234567890abcdef

这表示可以根据实例 id 限制 SendCommand 中的资源。如果条件之一是文档 ARN,那就太好了,但到目前为止我还没有找到任何方法(这不是策略生成器向导中的条件)。

更新:我在 AWS 论坛上发布了这个问题,希望我能得到回复:https : //forums.aws.amazon.com/thread.jspa?threadID=249039

更新 2:我收到了回复,解决方案是要完成此操作,您必须使用 Resource 指定允许运行命令的实例以及允许用户运行的文档。例如,这就是我最终的结果:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:*:123456789012:instance/*",
                "arn:aws:ssm:*:123456789012:document/RestartServices"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)