Amazon EC2 시작 템플릿에 필요한 IAM 권한 - Amazon Elastic Compute Cloud

Amazon EC2 시작 템플릿에 필요한 IAM 권한

IAM 권한을 사용하여 사용자가 시작 템플릿이나 시작 템플릿 버전 나열, 보기, 생성 또는 삭제를 수행할 수 있는지 제어할 수 있습니다.

중요

사용자가 시작 템플릿이나 시작 템플릿 버전을 생성할 때 시작 템플릿에서 지정할 수 있는 리소스를 제한하기 위해 리소스 수준의 권한을 사용할 수 없습니다. 따라서 신뢰할 수 있는 관리자에게만 시작 템플릿과 시작 템플릿 버전을 생성할 수 있는 권한을 부여해야 합니다.

시작 템플릿을 사용하는 모든 사용자에게 시작 템플릿에 지정된 리소스를 사용하고 생성할 수 있는 권한을 부여해야 합니다. 예:

  • 공유 프라이빗 Amazon Machine Image(AMI)에서 인스턴스를 시작하려면 사용자에게 AMI에 대한 시작 권한이 있어야 합니다.

  • 기존 스냅샷의 태그를 사용하여 EBS 볼륨을 생성하려면 사용자에게 스냅샷에 대한 읽기 권한과 볼륨을 생성하고 태그를 지정할 수 있는 권한이 있어야 합니다.

ec2:CreateLaunchTemplate

시작 템플릿을 콘솔에서 생성하거나 API를 사용하여 생성하려면 보안 주체에게 IAM 정책에서 ec2:CreateLaunchTemplate 권한이 있어야 합니다. 가능하면 태그를 사용하여 계정의 시작 템플릿에 대한 액세스를 제어합니다.

예를 들어 다음 IAM 정책 문에서는 템플릿이 지정된 태그(purpose=testing)를 사용하는 경우에만 보안 주체에게 시작 템플릿을 생성할 수 있는 권한을 부여합니다.

{ "Sid": "IAMPolicyForCreatingTaggedLaunchTemplates", "Action": "ec2:CreateLaunchTemplate", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "testing" } } }

시작 템플릿을 생성하는 보안 주체에게는 다음과 같은 몇 가지 관련 권한이 필요할 수도 있습니다.

  • ec2:CreateTags - CreateLaunchTemplate 작업 중에 시작 템플릿에 태그를 추가하려면 CreateLaunchTemplate 호출자는 IAM 정책에서 ec2:CreateTags 권한이 있어야 합니다.

  • ec2:RunInstances - 생성한 시작 템플릿에서 EC2 인스턴스를 시작하려면 보안 주체는 IAM 정책에서 ec2:RunInstances 권한도 있어야 합니다.

태그를 적용하는 리소스 생성 작업의 경우 사용자는 ec2:CreateTags 권한이 있어야 합니다. 다음 IAM 정책 문은 ec2:CreateAction 조건 키를 사용하여 사용자가 CreateLaunchTemplate의 컨텍스트에서만 태그를 생성하도록 허용합니다. 사용자는 기존 시작 템플릿이나 다른 어떤 리소스에도 태그를 지정할 수 없습니다. 자세한 내용은 생성 시 Amazon EC2 리소스 태그 지정에 대한 권한 부여 단원을 참조하십시오.

{ "Sid": "IAMPolicyForTaggingLaunchTemplatesOnCreation", "Action": "ec2:CreateTags", "Effect": "Allow", "Resource": "arn:aws:ec2:region:account-id:launch-template/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateLaunchTemplate" } } }

시작 템플릿을 생성한 IAM 사용자에게는 자신이 생성한 시작 템플릿을 사용할 수 있는 권한이 자동으로 부여되지 않습니다. 다른 보안 주체와 마찬가지로 시작 템플릿 생성자는 IAM 정책을 통해 권한을 받아야 합니다. IAM 사용자가 시작 템플릿에서 EC2 인스턴스를 시작하려는 경우 ec2:RunInstances 권한이 있어야 합니다. 이러한 권한을 부여할 때 사용자가 특정 태그 또는 특정 ID의 시작 템플릿만 사용할 수 있도록 지정할 수 있습니다. 또한 RunInstances 호출에 대한 리소스 수준 권한을 지정하여 시작 템플릿을 사용하는 모든 사용자가 인스턴스를 시작할 때 참조하고 사용할 수 있는 AMI 및 기타 리소스를 제어할 수도 있습니다. 예시 정책은 시작 템플릿 섹션을 참조하세요.

ec2:DescribeLaunchTemplates

계정의 시작 템플릿을 나열하고 보려면 보안 주체에게 IAM 정책에 ec2:DescribeLaunchTemplates 권한이 있어야 합니다. Describe 작업은 리소스 수준 권한을 지원하지 않으므로 조건 없이 지정해야 하며 정책의 리소스 요소 값은 "*"여야 합니다.

예를 들어 다음 IAM 정책 문은 보안 주체에게 계정의 모든 시작 템플릿을 나열하고 볼 수 있는 권한을 부여합니다.

{ "Sid": "IAMPolicyForDescribingLaunchTemplates", "Action": "ec2:DescribeLaunchTemplates", "Effect": "Allow", "Resource": "*" }

ec2:DescribeLaunchTemplateVersions

시작 템플릿을 나열하고 보는 보안 주체에게는 시작 템플릿을 구성하는 전체 속성 집합을 검색할 수 있는 ec2:DescribeLaunchTemplateVersions 권한도 있어야 합니다.

계정에 시작 템플릿 버전을 나열하고 보려면 보안 주체에게 IAM 정책에서 ec2:DescribeLaunchTemplateVersions 권한이 있어야 합니다. Describe 작업은 리소스 수준 권한을 지원하지 않으므로 조건 없이 지정해야 하며 정책의 리소스 요소 값은 "*"여야 합니다.

예를 들어 다음 IAM 정책 문은 보안 주체에게 계정에서 모든 시작 템플릿 버전을 나열하고 볼 수 있는 권한을 부여합니다.

{ "Sid": "IAMPolicyForDescribingLaunchTemplateVersions", "Effect": "Allow", "Action": "ec2:DescribeLaunchTemplateVersions", "Resource": "*" }

ec2:DeleteLaunchTemplate

중요

보안 주체에게 리소스를 삭제할 수 있는 권한을 부여할 때는 주의해야 합니다. 시작 템플릿을 삭제하면 그 시작 템플릿에 의존하는 AWS 리소스에 오류가 발생할 수도 있습니다.

시작 템플릿을 삭제하려면 보안 주체에게 IAM 정책에서 ec2:DeleteLaunchTemplate 권한이 있어야 합니다. 가능하면 태그 기반 조건 키를 사용하여 사용 권한을 제한합니다.

예를 들어 다음 IAM 정책 문에서는 템플릿에 지정된 태그(purpose=testing)가 있는 경우에만 보안 주체에게 시작 템플릿을 삭제할 수 있는 권한을 부여합니다.

{ "Sid": "IAMPolicyForDeletingLaunchTemplates", "Action": "ec2:DeleteLaunchTemplate", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "testing" } } }

또는 ARN을 사용하여 IAM 정책이 적용되는 시작 템플릿을 식별할 수 있습니다.

시작 템플릿에는 다음과 같은 ARN이 있습니다.

"Resource": "arn:aws:ec2:region:account-id:launch-template/lt-09477bcd97b0d310e"

여러 ARN을 목록으로 묶어 지정하거나 Condition 요소 없이 Resource"*"를 지정하여 보안 주체가 계정의 모든 시작 템플릿을 삭제하도록 허용할 수 있습니다.

버전 관리 권한 제어

신뢰할 수 있는 관리자에게는 다음 예와 유사한 IAM 정책을 사용하여 시작 템플릿의 버전을 생성 및 삭제하고 시작 템플릿의 기본 버전을 변경할 수 있는 액세스 권한을 부여할 수 있습니다.

중요

보안 주체에게 시작 템플릿 버전을 생성하거나 시작 템플릿을 수정할 수 있는 권한을 부여할 때는 주의해야 합니다.

  • 시작 템플릿 버전을 생성하면 Amazon EC2가 사용자를 대신하여 Latest 버전으로 인스턴스를 시작할 수 있는 AWS 리소스에 영향을 줍니다.

  • 시작 템플릿을 수정하면 Default인 버전을 변경할 수 있으므로 Amazon EC2가 사용자를 대신하여 이 수정된 버전으로 인스턴스를 시작할 수 있는 AWS 리소스에 영향을 줍니다.

또한 Latest 또는 Default 시작 템플릿 버전과 상호 작용하는 AWS 리소스(예: EC2 플릿 및 스팟 플릿)를 처리하는 방법에 주의해야 합니다. Latest 또는 Default에 다른 시작 템플릿 버전이 사용되는 경우 AWS 리소스와 사용자 상호 작용이 없기 때문에 Amazon EC2는 플릿의 목표 용량을 충족하기 위해 새 인스턴스를 시작할 때 완료해야 할 작업에 대한 권한을 다시 확인하지 않습니다. 사용자에게 CreateLaunchTemplateVersionModifyLaunchTemplate API를 호출할 수 있는 권한을 부여하면 플릿이 인스턴스 프로파일(IAM 역할에 대한 컨테이너)이 포함된 다른 시작 템플릿 버전을 가리키는 경우에도 사용자에게 사실상 iam:PassRole 권한이 부여됩니다. 따라서 사용자는 iam:PassRole 권한이 없더라도 잠재적으로 시작 템플릿을 업데이트하여 IAM 역할을 인스턴스에 전달할 수 있습니다. 시작 템플릿 버전을 생성하고 관리할 수 있는 사람에게 권한을 부여할 때 주의를 기울이면 이러한 위험을 관리할 수 있습니다.

ec2:CreateLaunchTemplateVersion

시작 템플릿의 새 버전을 생성하려면 보안 주체에게 IAM 정책에서 시작 템플릿에 대한 ec2:CreateLaunchTemplateVersion 권한이 있어야 합니다.

예를 들어 다음 IAM 정책 문에서는 버전이 지정된 태그(environment=production)를 사용하는 경우에만 보안 주체에게 시작 템플릿 버전을 생성할 수 있는 권한을 부여합니다. 또는 하나 이상의 시작 템플릿 ARN을 지정하거나 Condition 요소 없이 Resource"*"를 지정하여 보안 주체가 계정에 있는 모든 시작 템플릿의 버전을 생성하도록 허용할 수 있습니다.

{ "Sid": "IAMPolicyForCreatingLaunchTemplateVersions", "Action": "ec2:CreateLaunchTemplateVersion", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "production" } } }

ec2:DeleteLaunchTemplateVersion

중요

보안 주체에 리소스를 삭제할 수 있는 권한을 부여할 때는 항상 주의해야 합니다. 시작 템플릿 버전을 삭제하면 그 시작 템플릿 버전에 의존하는 AWS 리소스에 오류가 발생할 수도 있습니다.

시작 템플릿 버전을 삭제하려면 보안 주체에게 IAM 정책에서 시작 템플릿에 대한 ec2:DeleteLaunchTemplateVersion 권한이 있어야 합니다.

예를 들어 다음 IAM 정책 문에서는 버전이 지정된 태그(environment=production)를 사용하는 경우에만 보안 주체에게 시작 템플릿 버전을 삭제할 수 있는 권한을 부여합니다. 또는 하나 이상의 템플릿 ARN을 지정하거나 Condition 요소 없이 Resource"*"를 지정하여 보안 주체가 계정에 있는 모든 시작 템플릿의 버전을 삭제하도록 허용할 수 있습니다.

{ "Sid": "IAMPolicyForDeletingLaunchTemplateVersions", "Action": "ec2:DeleteLaunchTemplateVersion", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "production" } } }

ec2:ModifyLaunchTemplate

시작 템플릿과 연결된 Default 버전을 변경하려면 보안 주체에게 IAM 정책에서 시작 템플릿에 대한 ec2:ModifyLaunchTemplate 권한이 있어야 합니다.

예를 들어 다음 IAM 정책 문에서는 시작 템플릿이 지정된 태그(environment=production)를 사용하는 경우에만 보안 주체에게 시작 템플릿을 수정할 수 있는 권한을 부여합니다. 또는 하나 이상의 시작 템플릿 ARN을 지정하거나 Condition 요소 없이 Resource"*"를 지정하여 보안 주체가 계정에 있는 모든 시작 템플릿을 수정하도록 허용할 수 있습니다.

{ "Sid": "IAMPolicyForModifyingLaunchTemplates", "Action": "ec2:ModifyLaunchTemplate", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "production" } } }

시작 템플릿의 태그에 대한 액세스 제어

리소스가 시작 템플릿인 경우 조건 키를 사용하여 태그 지정 권한을 제한할 수 있습니다. 예를 들어 다음 IAM 정책은 지정된 계정과 리전의 시작 템플릿에서 temporary 키가 있는 태그만 제거하도록 허용합니다.

{ "Sid": "IAMPolicyForDeletingTagsOnLaunchTemplates", "Action": "ec2:DeleteTags", "Effect": "Allow", "Resource": "arn:aws:ec2:region:account-id:launch-template/*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["temporary"] } } }

Amazon EC2 리소스에 적용할 수 있는 태그 키 및 값을 제어하는 데 사용할 수 있는 조건 키에 대한 자세한 내용은 특정 태그에 대한 액세스 제어를 참조하세요.