시작 템플릿 지원 - Amazon EC2 Auto Scaling

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

시작 템플릿 지원

Amazon EC2 Auto Scaling은 Auto Scaling 그룹에서 Amazon EC2 시작 템플릿을 사용할 수 있도록 지원합니다. 사용자가 시작 템플릿에서 Auto Scaling 그룹을 생성하도록 허용하는 것이 좋습니다. 이렇게 하면 Amazon EC2 Auto Scaling 및 Amazon EC2의 최신 기능을 사용할 수 있기 때문입니다. 예를 들어, 사용자가 혼합 인스턴스 정책을 사용하려면 시작 템플릿을 지정해야 합니다.

AmazonEC2FullAccess 정책을 사용하여 사용자에게 계정의 Amazon EC2 Auto Scaling 리소스, 시작 템플릿 및 기타 EC2 리소스로 작업할 수 있는 완전한 액세스 권한을 부여할 수 있습니다. 또는 이 주제에 설명된 대로 고유한 사용자 정의 IAM 정책을 생성하여 사용자에게 시작 템플릿을 사용할 수 있는 세분화된 권한을 부여할 수 있습니다.

자신의 용도에 맞춰 조정할 수 있는 정책 샘플

다음은 사용자의 용도에 맞춰 조정할 수 있는 기본 권한 정책의 예제입니다. 이 정책은 Auto Scaling 그룹이 purpose=testing 태그를 사용하는 경우에만 모든 그룹을 생성, 업데이트, 삭제할 수 있는 권한을 부여합니다. 그런 다음, 모든 Describe 작업에 대한 권한을 부여합니다. Describe 작업은 리소스 수준 권한을 지원하지 않기 때문에 조건 없이 별도의 명령문에 지정해야 합니다.

이 정책이 적용되는 IAM 자격 증명(사용자 또는 역할)은 ec2:RunInstances 작업을 사용할 수 있는 권한도 받았기 때문에 시작 템플릿을 사용하여 Auto Scaling 그룹을 생성하거나 업데이트할 수 있는 권한이 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup", "autoscaling:DeleteAutoScalingGroup" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/purpose": "testing" } } }, { "Effect": "Allow", "Action": [ "autoscaling:Describe*", "ec2:RunInstances" ], "Resource": "*" } ] }

Auto Scaling 그룹을 생성하거나 업데이트하는 사용자에게는 다음과 같은 몇 가지 관련 권한이 필요할 수 있습니다.

인스턴스를 시작할 때 완료해야 하는 작업에 대한 이러한 권한은 사용자가 Auto Scaling 그룹과 상호 작용할 때 확인됩니다. 자세한 내용은 ec2:RunInstances 및 iam:PassRole에 대한 권한 검증(을)를 참조하세요.

다음 예제는 시작 템플릿 사용 시 IAM 사용자의 액세스 권한을 제어하는 데 사용할 수 있는 정책 명령문을 보여 줍니다.

특정 태그가 있는 시작 템플릿 필요

ec2:RunInstances 권한을 부여할 때 사용자가 특정 태그 또는 특정 ID의 시작 템플릿만 사용하여 시작 템플릿으로 인스턴스를 시작할 때 권한을 제한할 수 있도록 지정할 수 있습니다. 또한 RunInstances 호출에 대한 리소스 수준 권한을 추가로 지정하여 시작 템플릿을 사용하는 모든 사용자가 인스턴스를 시작할 때 참조하고 사용할 수 있는 AMI 및 기타 리소스를 제어할 수도 있습니다.

다음 예제에서는 지정된 리전에 위치하고 purpose=testing 태그가 있는 템플릿을 시작하는 ec2:RunInstances 작업에 대한 권한을 제한합니다. 또한 사용자는 AMI, 인스턴스 유형, 볼륨, 키 페어, 네트워크 인터페이스, 보안 그룹 등 시작 템플릿에 지정된 리소스에 액세스할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:account-id:launch-template/*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "testing" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account-id:instance/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:key-pair/*", "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:security-group/*" ] } ] }

시작 템플릿과 함께 태그 기반 정책을 사용하는 방법에 대한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서IAM 권한으로 시작 템플릿에 대한 액세스 제어를 참조하세요.

시작 템플릿 및 버전 번호 필요

또한 IAM 권한을 사용하여 Auto Scaling 그룹을 생성하거나 업데이트할 때 시작 템플릿과 시작 템플릿의 버전 번호를 지정하도록 강제할 수 있습니다.

다음 예제에서는 시작 템플릿 및 시작 템플릿 버전 번호가 지정된 경우에만 사용자가 Auto Scaling 그룹을 생성하고 업데이트할 수 있습니다. 이 정책이 적용되는 사용자가 버전 번호를 생략하고 $Latest 또는 $Default 시작 템플릿 버전을 지정하거나 시작 구성을 대신 사용하는 시도를 할 경우 작업이 실패합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Bool": { "autoscaling:LaunchTemplateVersionSpecified": "true" } } }, { "Effect": "Deny", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Null": { "autoscaling:LaunchConfigurationName": "false" } } } ] }

인스턴스 메타데이터 서비스 버전 2(IMDSv2) 사용 필요

보안을 강화하기 위해 IMDSv2가 필요한 시작 템플릿 사용을 요구하도록 사용자의 권한을 설정할 수 있습니다. 자세한 정보는 Linux 인스턴스용 Amazon EC2 사용 설명서인스턴스 메타데이터 서비스 구성을 참조하세요.

다음 예에서는 IMDSv2("ec2:MetadataHttpTokens":"required"로 표시) 사용을 요구하도록 인스턴스도 옵트인되지 않으면 사용자가 ec2:RunInstances 작업을 호출할 수 없도록 지정합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireImdsV2", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:MetadataHttpTokens": "required" } } } ] }
작은 정보

새 시작 템플릿을 사용하거나 인스턴스 메타데이터 옵션이 구성된 새 버전의 시작 템플릿을 사용하는 대체 Auto Scaling 인스턴스를 강제로 시작하려면 인스턴스 새로 고침을 시작할 수 있습니다. 자세한 내용은 Auto Scaling 인스턴스 업데이트(을)를 참조하세요.

Amazon EC2 리소스에 대한 액세스 제한

다음 예제에서는 Amazon EC2 리소스에 대한 액세스를 제한하여 사용자가 시작할 수 있는 인스턴스의 구성을 제어합니다. 시작 템플릿에 지정된 리소스에 대한 리소스 수준 권한을 지정하려면 RunInstances 작업 명령문에 해당 리소스를 포함해야 합니다

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account-id:launch-template/*", "arn:aws:ec2:region::image/ami-04d5cc9b88example", "arn:aws:ec2:region:account-id:subnet/subnet-1a2b3c4d", "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:key-pair/*", "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:security-group/sg-903004f88example" ] }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:account-id:instance/*", "Condition": { "StringEquals": { "ec2:InstanceType": ["t2.micro", "t2.small"] } } } ] }

이 예에는 2개의 명령문이 있습니다.

  • 첫 번째 명령문에서는 사용자가 인스턴스를 특정 서브넷(subnet-1a2b3c4d)으로 시작하여 특정 보안 그룹(sg-903004f88example)을 사용하고 특정 AMI(ami-04d5cc9b88example)를 사용해야 합니다. 또한 사용자는 네트워크 인터페이스, 키 페어, 볼륨 등 시작 템플릿에 지정된 리소스에 액세스할 수 있습니다.

  • 두 번째 명령문에서는 사용자가 t2.microt2.small 인스턴스 유형만 사용하여 인스턴스를 시작하도록 허용하므로 비용 통제에 도움이 됩니다.

    하지만 시작 템플릿으로 인스턴스를 시작할 권한이 있는 사용자가 다른 인스턴스 유형을 시작하는 것을 완전히 차단할 수 있는 효과적인 방법은 현재로서는 없습니다. 이는 시작 템플릿에 지정된 인스턴스 유형이 속성 기반 인스턴스 유형 선택을 사용하여 정의된 인스턴스 유형을 사용하도록 재정의될 수 있기 때문입니다.

사용자가 시작할 수 있는 인스턴스의 구성을 제어하는 데 사용할 수 있는 리소스 수준 권한의 전체 목록은 서비스 권한 부여 참조Amazon EC2에 사용되는 작업, 리소스, 조건 키를 참조하세요.

인스턴스 및 볼륨에 태그를 지정하려면 필요한 권한

다음 예제에서는 사용자가 생성 시 인스턴스와 볼륨에 태그를 지정하도록 허용합니다. 이 정책은 시작 템플릿에 지정된 태그가 있는 경우에 필요합니다. 자세한 정보는 Linux 인스턴스용 Amazon EC2 사용 설명서생성 시 리소스 태깅에 대한 권한 부여를 참조하세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:region:account-id:*/*", "Condition": { "StringEquals": { "ec2:CreateAction": "RunInstances" } } } ] }

추가 시작 템플릿 권한

콘솔 사용자에게 ec2:DescribeLaunchTemplatesec2:DescribeLaunchTemplateVersions 작업에 대한 권한을 부여해야 합니다. 이러한 권한이 없으면 시작 템플릿과 네트워크 옵션을 Auto Scaling 그룹 마법사에 로드할 수 없으며 사용자는 시작 템플릿을 사용하여 인스턴스를 시작하기 위해 마법사를 단계별로 실행할 수 없습니다. IAM 정책 명령문의 Action 요소에서 이러한 추가 작업을 지정할 수 있습니다.

ec2:RunInstancesiam:PassRole에 대한 권한 검증

사용자는 Auto Scaling 그룹에서 사용하는 시작 템플릿 버전을 지정할 수 있습니다. 권한에 따라 번호가 지정된 특정 버전 또는 시작 템플릿의 $Default 버전 또는 $Latest 버전이 될 수 있습니다. 후자의 경우 특히 주의해야 합니다. 이렇게 하면 제한하려는 ec2:RunInstancesiam:PassRole에 대한 권한이 재정의될 수 있습니다.

이 섹션에서는 Auto Scaling 그룹에서 최신 또는 기본 버전의 시작 템플릿을 사용하는 시나리오를 설명합니다.

사용자가 CreateAutoScalingGroup, UpdateAutoScalingGroup 또는 StartInstanceRefresh API를 호출하면 Amazon EC2 Auto Scaling은 요청을 진행하기 전에 해당 시점의 최신 버전 또는 기본 버전인 시작 템플릿 버전을 기준으로 권한을 확인합니다. 이를 통해 인스턴스 시작 시 완료해야 할 작업(예: ec2:RunInstancesiam:PassRole 작업)에 대한 권한을 검증합니다. 이를 위해 Amazon RunInstancesEC2 테스트 실행 호출을 실행하여 실제로 요청하지 않고도 사용자에게 작업에 필요한 권한이 있는지 확인합니다. 응답이 반환되면 Amazon EC2 Auto Scaling에서 해당 응답을 읽습니다. 사용자의 권한이 지정된 작업을 허용하지 않는 경우 Amazon EC2 Auto Scaling은 요청에 실패하고 누락된 권한에 대한 정보가 포함된 오류를 사용자에게 반환합니다.

초기 확인 및 요청이 완료되면 인스턴스를 시작할 때마다 Amazon EC2 Auto Scaling은 인스턴스가 변경되었더라도 서비스 연결 역할의 권한을 사용하여 인스턴스를 최신 버전 또는 기본 버전으로 시작합니다. 따라서, 시작 템플릿을 사용하는 사용자는 iam:PassRole 권한이 없더라도 잠재적으로 시작 템플릿을 업데이트하여 IAM 역할을 인스턴스에 전달할 수 있습니다.

구성 그룹에 액세스하고 $Latest 또는 $Default 버전을 사용할 수 있는 사용자를 제한하려면 autoscaling:LaunchTemplateVersionSpecified 조건 키를 사용합니다. 이렇게 하면 Auto Scaling 그룹은 사용자가 CreateAutoScalingGroupUpdateAutoScalingGroup API를 호출할 때 번호가 지정된 특정 버전만 수락하도록 합니다. 이 조건 키를 IAM 정책에 추가하는 방법을 보여주는 예제는 시작 템플릿 및 버전 번호 필요(을)를 참조하세요.

$Latest 또는 $Default 시작 템플릿 버전을 사용하도록 구성된 Auto Scaling 그룹의 경우, 사용자가 기본 시작 템플릿 버전을 지정하도록 허용하는 ec2:ModifyLaunchTemplate 작업을 포함하여 시작 템플릿의 버전을 생성하고 관리할 수 있는 사람을 제한하는 것을 고려하는 것이 좋습니다. 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서버전 관리 권한 제어를 참조하세요.

시작 템플릿과 시작 템플릿 버전을 확인, 생성, 삭제하는 권한에 대한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서IAM 권한으로 시작 템플릿에 대한 액세스 제어를 참조하세요.

RunInstances 호출에 대한 액세스 제어에 사용할 수 있는 리소스 수준 권한에 대한 자세한 내용은 서비스 권한 부여 참조Amazon EC2에 사용되는 작업, 리소스 및 조건 키를 참조하세요.