새 인스턴스에 대한 인스턴스 메타데이터 옵션 구성 - Amazon Elastic Compute Cloud

새 인스턴스에 대한 인스턴스 메타데이터 옵션 구성

다음 인스턴스 메타데이터 옵션을 구성할 수 있습니다.

IMDSv2의 사용 요구

다음 방법 중 하나를 사용하여 인스턴스에 IMDSv2를 사용하도록 합니다.

시작 시 인스턴스 구성

인스턴스를 시작할 때 다음 필드를 구성하여 IMDSv2를 사용하도록 인스턴스를 구성할 수 있습니다.

  • Amazon EC2 콘솔: Metadata version(메타데이터 버전)을 V2 only (token required)(V2 전용(토큰 필요))로 설정합니다.

  • AWS CLI: HttpTokensrequired로 설정합니다.

IMDSv2를 사용하도록 지정하면 메타데이터 액세스 가능활성화됨(콘솔)로 설정하거나 HttpEndpointenabled(AWS CLI)로 설정하여 인스턴스 메타데이터 서비스(IMDS) 엔드포인트도 활성화해야 합니다.

New console
새 인스턴스에서 IMDSv2를 사용해야 하도록 설정하려면
  • Amazon EC2 콘솔에서 새 인스턴스를 시작할 때 고급 세부 정보를 확장하고 다음을 수행합니다.

    • 액세스 가능한 메타데이터(Metadata accessible)활성화(Enabled)를 선택합니다.

    • 메타데이터 버전(Metadata version)V2만 해당(토큰 필요)(V2 only (token required))를 선택합니다.

    자세한 내용은 고급 세부 정보 단원을 참조하십시오.

Old console
새 인스턴스에서 IMDSv2를 사용해야 하도록 설정하려면
  • Amazon EC2 콘솔에서 새 인스턴스를 시작할 때 인스턴스 세부 정보 구성 페이지에서 다음 옵션을 선택합니다.

    • 고급 세부 정보에서 액세스 가능한 메타데이터에 대해 활성화를 선택합니다.

    • 메타데이터 버전의 경우 V2(토큰 필요)를 선택합니다.

자세한 내용은 3단계: 인스턴스 세부 정보 구성 섹션을 참조하세요.

AWS CLI
새 인스턴스에서 IMDSv2를 사용해야 하도록 설정하려면

다음 run-instances 예에서는 c6i.large--metadata-options로 설정하여 HttpTokens=required 인스턴스를 시작합니다. 또한 HttpTokens의 값을 지정할 때 HttpEndpointenabled로 설정해야 합니다. 메타데이터 검색 요청에 대해 보안 토큰 헤더가 required로 설정되어 있으므로 인스턴스 메타데이터를 요청할 때 인스턴스가 IMDSv2를 사용해야 합니다.

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c6i.large \ ... --metadata-options "HttpEndpoint=enabled,HttpTokens=required"
PowerShell
새 인스턴스에서 IMDSv2를 사용해야 하도록 설정하려면

다음 New-EC2Instance Cmdlet 예에서는 MetadataOptions_HttpEndpointenabled로 설정하고 MetadataOptions_HttpTokens 파라미터를 required로 설정하여 c6i.large 인스턴스를 시작합니다. 또한 HttpTokens의 값을 지정할 때 HttpEndpointenabled로 설정해야 합니다. 메타데이터 검색 요청에 대해 보안 토큰 헤더가 required로 설정되어 있으므로 인스턴스 메타데이터를 요청할 때 인스턴스가 IMDSv2를 사용해야 합니다.

New-EC2Instance ` -ImageId ami-0abcdef1234567890 ` -InstanceType c6i.large ` -MetadataOptions_HttpEndpoint enabled ` -MetadataOptions_HttpTokens required
AWS CloudFormation

AWS CloudFormation을 사용하여 인스턴스에 대한 메타데이터 옵션을 지정하려면 AWS CloudFormation 사용 설명서의 AWS::EC2::LaunchTemplate MetadataOptions 속성을 참조하세요.

AMI 구성

새 AMI를 등록하거나 기존 AMI를 수정할 때 imds-support 파라미터를 v2.0로 설정할 수 있습니다. 이 AMI에서 시작된 인스턴스의 Metadata version(메타데이터 버전)은 V2 only (token required)(V2 전용(토큰 필요))(콘솔)로 설정되거나 HttpTokensrequired(AWS CLI)로 설정됩니다. 이러한 설정을 사용하면 인스턴스에서 인스턴스 메타데이터를 요청할 때 IMDSv2를 사용하도록 지정됩니다.

imds-supportv2.0으로 설정하면 이 AMI에서 시작된 인스턴스의 Metadata response hop limit(메타데이터 응답 홉 제한)(콘솔) 또는 http-put-response-hop-limit(AWS CLI)도 2로 설정됩니다.

중요

AMI 소프트웨어가 IMDSv2를 지원하지 않는 한 이 파라미터를 사용하지 마세요. 값을 v2.0으로 설정한 후에는 이를 실행 취소할 수 없습니다. AMI를 “재설정”하는 유일한 방법은 기본 스냅샷에 새 AMI를 생성하는 것입니다.

IMDSv2를 위해 새 AMI 구성

다음 방법 중 하나를 사용하여 새 AMI IMDsv2를 구성합니다.

AWS CLI

다음 register-image 예제는 EBS 루트 볼륨의 지정된 스냅샷을 디바이스 /dev/xvda로 사용하여 AMI를 등록합니다. 이 AMI에서 시작된 인스턴스가 인스턴스 메타데이터를 요청할 때 IMDSv2를 사용하도록 imds-support 파라미터를 v2.0으로 지정합니다.

aws ec2 register-image \ --name my-image \ --root-device-name /dev/xvda \ --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0123456789example} \ --architecture x86_64 \ --imds-support v2.0
PowerShell

다음 Register-EC2Image Cmdlet 예제는 EBS 루트 볼륨의 지정된 스냅샷을 디바이스 /dev/xvda로 사용하여 AMI를 등록합니다. 이 AMI에서 시작된 인스턴스가 인스턴스 메타데이터를 요청할 때 IMDSv2를 사용하도록 ImdsSupport 파라미터를 v2.0으로 지정합니다.

Import-Module AWS.Tools.EC2 # Required for Amazon.EC2.Model object creation. Register-EC2Image ` -Name 'my-image' ` -RootDeviceName /dev/xvda ` -BlockDeviceMapping ( New-Object ` -TypeName Amazon.EC2.Model.BlockDeviceMapping ` -Property @{ DeviceName = '/dev/xvda'; EBS = (New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice -Property @{ SnapshotId = 'snap-0123456789example; VolumeType = 'gp3' } ) } ) ` -Architecture X86_64 ` -ImdsSupport v2.0
IMDSv2를 위해 기존 AMI 구성

다음 방법 중 하나를 사용하여 IMDSv2용 기존 AMI를 구성합니다.

AWS CLI

다음 modify-image-attribute 예제는 IMDSv2에 대해서만 기존 AMI를 수정합니다. 이 AMI에서 시작된 인스턴스가 인스턴스 메타데이터를 요청할 때 IMDSv2를 사용하도록 imds-support 파라미터를 v2.0으로 지정합니다.

aws ec2 modify-image-attribute \ --image-id ami-0123456789example \ --imds-support v2.0
PowerShell

다음 Edit-EC2ImageAttribute Cmdlet 예제는 IMDSv2에 대해서만 기존 AMI를 수정합니다. 이 AMI에서 시작된 인스턴스가 인스턴스 메타데이터를 요청할 때 IMDSv2를 사용하도록 imds-support 파라미터를 v2.0으로 지정합니다.

Edit-EC2ImageAttribute ` -ImageId ami-0abcdef1234567890 ` -ImdsSupport 'v2.0'

IAM 정책 사용

사용자가 새 인스턴스에서 IMDSv2를 사용하도록 지정하지 않는 경우 새 인스턴스를 시작하지 못하게 하는 IAM 정책을 생성할 수 있습니다.

IAM 정책을 사용하여 모든 새 인스턴스에서 IMDSv2를 사용해야 하도록 설정

사용자가 인스턴스 메타데이터 요청 시 IMDSv2를 사용해야 하는 인스턴스만 시작할 수 있도록 하려면 IMDSv2를 사용해야 한다는 조건을 충족한 후에만 인스턴스를 시작할 수 있도록 지정할 수 있습니다. IAM 정책 예제는 인스턴스 메타데이터 작업 섹션을 참조하세요.

IPv4 및 IPv6 엔드포인트 구성

기본적으로 IPv6 엔드포인트는 비활성화되어 있습니다. IPv6 전용 서브넷으로 인스턴스를 시작하는 경우에도 마찬가지입니다. 인스턴스 시작 시 IPv6 엔드포인트를 활성화하도록 선택할 수 있습니다.

IMDS용 IPv6 엔드포인트는 Nitro 시스템에 구축된 인스턴스에서만 액세스할 수 있습니다.

다음 방법 중 하나를 사용하여 IMDS에 대해 활성화된 IPv6 엔드포인트로 인스턴스를 시작합니다.

New console
시작 시 IMDS IPv6 엔드포인트를 활성화하는 방법
  • Advanced details(고급 세부 정보)에서 다음을 지정하여 Amazon EC2 콘솔에서 인스턴스를 시작합니다.

    • 메타데이터 전송에 대해 활성화됨을 선택합니다.

자세한 내용은 고급 세부 정보 단원을 참조하십시오.

AWS CLI

다음 run-instances 예제는 IMDS에 대해 활성화된 IPv6 엔드포인트로 c6i.large 인스턴스를 시작합니다. IPv6 엔드포인트를 활성화하려면 --metadata-options 파라미터에 대해 HttpProtocolIpv6=enabled를 지정합니다. 또한 HttpProtocolIpv6의 값을 지정할 때 HttpEndpointenabled로 설정해야 합니다.

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c6i.large \ ... --metadata-options "HttpEndpoint=enabled,HttpProtocolIpv6=enabled"
PowerShell

다음 New-EC2Instance Cmdlet 예제는 IMDS에 대해 활성화된 IPv6 엔드포인트로 c6i.large 인스턴스를 시작합니다. IPv6 엔드포인트를 활성화하려면 MetadataOptions_HttpProtocolIpv6enabled로 지정합니다. 또한 MetadataOptions_HttpProtocolIpv6의 값을 지정할 때 MetadataOptions_HttpEndpointenabled로 설정해야 합니다.

New-EC2Instance ` -ImageId ami-0abcdef1234567890 ` -InstanceType c6i.large ` -MetadataOptions_HttpEndpoint enabled ` -MetadataOptions_HttpProtocolIpv6 enabled

인스턴스 메타데이터에 대한 액세스 비활성화

인스턴스를 시작할 때 IMDS를 비활성화하여 인스턴스 메타데이터에 대한 액세스를 끌 수 있습니다. 나중에 IMDS를 다시 활성화하여 액세스를 켤 수 있습니다. 자세한 내용은 인스턴스 메타데이터에 대한 액세스 활성화 단원을 참조하십시오.

중요

시작 시 또는 시작한 후에 IMDS를 비활성할 수 있습니다. 시작 시 IMDS를 비활성화하면 다음 사항이 작동하지 않을 수 있습니다.

  • 인스턴스에 대한 SSH 액세스 권한이 없을 수 있습니다. 인스턴스의 퍼블릭 SSH 키인 public-keys/0/openssh-key는 일반적으로 키가 제공되고 EC2 인스턴스 메타데이터에서 액세스되기 때문에 액세스할 수 없습니다.

  • EC2 사용자 데이터는 사용할 수 없으며 인스턴스 시작 시 실행되지 않습니다. EC2 사용자 데이터는 IMDS에서 호스팅됩니다. IMDS를 비활성화하면 사용자 데이터에 대한 액세스가 사실상 꺼집니다.

이 기능을 사용하려면, 시작 후 IMDS를 다시 활성화할 수 있습니다.

New console
시작 시 인스턴스 메타데이터에 대한 액세스 끄기
  • Advanced details(고급 세부 정보)에서 다음을 지정하여 Amazon EC2 콘솔에서 인스턴스를 시작합니다.

    • 액세스 가능한 메타데이터(Metadata accessible)비활성화(Disabled)를 선택합니다.

자세한 내용은 고급 세부 정보 단원을 참조하십시오.

Old console
시작 시 인스턴스 메타데이터에 대한 액세스 끄기
  • Configure Instance Details(인스턴스 세부 정보 구성) 페이지에서 다음 옵션을 선택하여 Amazon EC2 콘솔에서 인스턴스를 시작합니다.

    • 고급 세부 정보에서 액세스 가능한 메타데이터에 대해 비활성화를 선택합니다.

자세한 내용은 3단계: 인스턴스 세부 정보 구성 단원을 참조하십시오.

AWS CLI
시작 시 인스턴스 메타데이터에 대한 액세스 끄기

--metadata-optionsHttpEndpoint=disabled로 설정하여 인스턴스를 시작합니다.

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c6i.large \ ... --metadata-options "HttpEndpoint=disabled"
PowerShell
시작 시 인스턴스 메타데이터에 대한 액세스 끄기

다음 New-EC2Instance Cmdlet 예에서는 MetadataOptions_HttpEndpointdisabled로 설정하여 인스턴스를 시작합니다.

New-EC2Instance ` -ImageId ami-0abcdef1234567890 ` -InstanceType c6i.large ` -MetadataOptions_HttpEndpoint disabled
AWS CloudFormation

AWS CloudFormation을 사용하여 인스턴스에 대한 메타데이터 옵션을 지정하려면 AWS CloudFormation 사용 설명서AWS::EC2::LaunchTemplate MetadataOptions 속성을 참조하세요.