ec2-create-image에는 어떤 IAM 권한이 필요합니까?

ec2-create-image에는 어떤 IAM 권한이 필요합니까?

나는 그것을 통해 보았다공식 문서이 명령을 사용하기 위해 IAM 사용자에게 필요한 권한에 대한 참조를 찾을 수 없는 것 같습니다.

IAM 사용자가 이 특정 인스턴스에 대해서만 이미지를 생성할 수 있기를 원하므로 정책을 다음과 같이 설정했습니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt999",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateImage"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:ec2:us-east-1:<my account id>:instance/<my instance id>"
      ]
    }
  ]
} 

하지만 EC2 CLI를 사용할 때 계속해서 액세스 거부 오류가 발생했습니다. Resource부분을 ​​변경했는데 "*"이제 작동하지만 이제 IAM 사용자가 내 계정의 모든 EC2 인스턴스에 AMI를 생성할 수 있습니다(따라서 재부팅이 발생함).

어떻게 잠글 수 있나요?

답변1

안타깝게도 지금은 리소스 수준에서 이를 잠글 수 없습니다. 있다여러 EC2 작업리소스 수준 권한을 지원하지 않으며 ec2:CreateImage그 중 하나입니다.

답변2

이미지 생성에는 해당 인스턴스에 연결된 스냅샷 생성도 포함됩니다. 아래 IAM 정책이 작동해야 합니다.

{     
  "Effect": "Allow",
  "Action": [
    "ec2:Describe*",
    "ec2:CreateSnapshot",
    "ec2:CreateImage"
  ],
  "Resource": [
    "*"
  ]
}

답변3

리소스 수준에서 CreateImage를 잠그거나 제한할 수 없으며 @nkryption 답변이 옳았습니다. http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ec2-api-permissions.html

답변4

CreateImage는 이제 리소스 수준 정책을 지원합니다. 다음 정책은 지정된 인스턴스 ID에 대해서만 이미지 생성을 허용합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCreateImage",
            "Effect": "Allow",
            "Action": "ec2:CreateImage",
            "Resource": "arn:aws:ec2:*::image/*"
        },
        {
            "Sid": "RestrictCreateImageToInstance",
            "Effect": "Allow",
            "Action": "ec2:CreateImage",
            "Resource": "arn:aws:ec2:*:999999999999:instance/i-999999999",

        }
    ]
}

요구 사항에 맞게 계정 번호와 인스턴스 ID를 업데이트하세요. 인스턴스 태그를 기반으로 이를 제한할 수도 있습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCreateImage",
            "Effect": "Allow",
            "Action": "ec2:CreateImage",
            "Resource": "arn:aws:ec2:*::image/*"
        },
        {
            "Sid": "RestrictCreateImageToInstances",
            "Effect": "Allow",
            "Action": "ec2:CreateImage",
            "Resource": "arn:aws:ec2:*:999999999999:instance/*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Name": "Test"
                }
            }
        }
    ]
}
            

관련 정보