Amazon EC2 AMI 복사 권한 부여
Amazon EC2 AMI 복사 권한 부여
EBS 기반 또는 Amazon S3 기반 AMI를 복사하려면 다음 IAM 권한이 필요해요.
출처: 문서
본문
- ec2:CopyImage – AMI를 복사하는 권한이에요. EBS 기반 AMI의 경우 AMI를 받치는 스냅샷을 복사하는 권한도 함께 부여돼요.
- ec2:CreateTags – 대상 AMI에 태그를 다는 권한이에요. EBS 기반 AMI의 경우 대상 AMI의 스냅샷에도 태그를 달 수 있게 해줘요.
인스턴스 스토어 기반(instance store-backed) AMI를 복사한다면 다음 추가 IAM 권한이 필요해요.
- s3:CreateBucket – 새 AMI를 위한 대상 리전에 S3 버킷을 만드는 권한
- s3:PutBucketOwnershipControls – 새로 만든 S3 버킷에서
aws-exec-readcanned ACL로 객체를 쓸 수 있도록 ACL을 활성화하는 권한 - s3:GetBucketAcl – 소스 버킷의 ACL을 읽는 권한
- s3:ListAllMyBuckets – 대상 리전에서 AMI를 위한 기존 S3 버킷을 찾는 권한
- s3:GetObject – 소스 버킷의 객체를 읽는 권한
- s3:PutObject – 대상 버킷에 객체를 쓰는 권한
- s3:PutObjectAcl – 대상 버킷의 새 객체에 권한을 쓰는 권한
참고: 2024년 10월 28일부터 소스 AMI에 대한
CopyImage작업에 리소스 수준 권한을 지정할 수 있어요. 대상 AMI에 대한 리소스 수준 권한은 기존과 같이 사용할 수 있습니다. 자세한 내용은 서비스 권한 부여 참조(Service Authorization Reference)의 Amazon EC2가 정의한 작업 표에 있는 CopyImage를 참고하세요.
EBS 기반 AMI 복사 + 대상 AMI와 스냅샷 태그 지정 예시 IAM 정책
다음 예시 정책은 어떤 EBS 기반 AMI든 복사하고, 대상 AMI와 그 스냅샷에 태그를 달 권한을 부여해요.
참고: 2024년 10월 28일부터
Resource요소에 스냅샷을 지정할 수 있어요. 자세한 내용은 서비스 권한 부여 참조의 Amazon EC2가 정의한 작업 표에서 CopyImage를 참고하세요.
{
"Version":"2012-10-17",
"Statement": [{
"Sid": "PermissionToCopyAllImages",
"Effect": "Allow",
"Action": [
"ec2:CopyImage",
"ec2:CreateTags"
],
"Resource": [
"arn:aws:ec2:*::image/*",
"arn:aws:ec2:*::snapshot/*"
]
}]
}
EBS 기반 AMI는 복사하되 새 스냅샷 태그 지정은 거부하는 예시 IAM 정책
ec2:CopyImage 권한을 얻으면 ec2:CopySnapshot 권한도 자동으로 부여돼요. 새 스냅샷에 태그를 다는 권한은 명시적으로 거부해서 ec2:CreateTags 작업의 Allow 효과를 덮어쓸 수 있어요.
다음 예시 정책은 어떤 EBS 기반 AMI든 복사할 권한을 주면서, 대상 AMI의 새 스냅샷에 태그를 다는 것은 거부해요.
{
"Version":"2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"ec2:CopyImage",
"ec2:CreateTags"
],
"Resource": [
"arn:aws:ec2:*::image/*",
"arn:aws:ec2:*::snapshot/*"
]
},
{
"Effect": "Deny",
"Action": "ec2:CreateTags",
"Resource": "arn:aws:ec2:::snapshot/*"
}
]
}
Amazon S3 기반 AMI 복사 + 대상 AMI 태그 지정 예시 IAM 정책
다음 예시 정책은 지정된 소스 버킷의 어떤 Amazon S3 기반 AMI든 지정된 리전으로 복사하고 대상 AMI에 태그를 달 권한을 부여해요.
{
"Version":"2012-10-17",
"Statement": [{
"Sid": "PermissionToCopyAllImages",
"Effect": "Allow",
"Action": [
"ec2:CopyImage",
"ec2:CreateTags"
],
"Resource": "arn:aws:ec2:*::image/*"
},
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": [
"arn:aws:s3:::amzn-s3-demo-source-bucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:GetBucketAcl",
"s3:PutObjectAcl",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::amis-for-111122223333-in-us-east-2-hash"
]
}
]
}
AMI 소스 버킷의 ARN(Amazon Resource Name)을 찾으려면 Amazon EC2 콘솔을 열고 https://console.aws.amazon.com/ec2/, 탐색 창에서 AMIs를 선택한 다음 Source 열에서 버킷 이름을 찾으면 돼요.
참고:
s3:CreateBucket권한은 Amazon S3 기반 AMI를 개별 리전으로 처음 복사할 때만 필요해요. 그 이후에는 해당 리전에 이미 생성된 S3 버킷이 그 리전으로 복사하는 모든 향후 AMI를 저장하는 데 사용됩니다.