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

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

새 인스턴스에서 다음과 같은 인스턴스 메타데이터 옵션을 구성할 수 있습니다.

IMDSv2의 사용 요구

다음 방법을 사용하여 새 인스턴스에서 IMDSv2 사용을 요구할 수 있습니다.

IMDSv2를 계정 기본값으로 설정

각 AWS 리전의 계정 수준에서 인스턴스 메타데이터 서비스(IMDS)의 기본 버전을 설정할 수 있습니다. 즉, 인스턴스가 시작되면 인스턴스 메타데이터 버전이 자동으로 계정 수준 기본값으로 설정됩니다. 하지만 시작 시 또는 시작한 후에 값을 수동으로 재정의할 수 있습니다. 계정 수준 설정 및 수동 재정의가 인스턴스에 미치는 영향에 대한 자세한 내용은 인스턴스 메타데이터 옵션의 우선순위 섹션을 참조하세요.

참고

계정 수준 기본값을 설정해도 기존 인스턴스는 재설정되지 않습니다. 예를 들어, 계정 수준 기본값을 IMDSv2로 설정하는 경우 IMDSv1로 설정된 기존 인스턴스는 영향을 받지 않습니다. 기존 인스턴스의 값을 변경하려면 인스턴스 자체의 값을 수동으로 변경해야 합니다.

계정의 모든 인스턴스가 필요한 IMDSv2로 시작되도록(IMDSv1은 비활성화됨) 인스턴스 메타데이터 버전의 계정 기본값을 IMDSv2로 설정할 수 있습니다. 이 계정 기본값을 사용하면 인스턴스를 시작할 때 인스턴스의 기본값은 다음과 같습니다.

  • 콘솔: 메타데이터 버전V2 전용(토큰 필요)으로 설정되고 메타데이터 응답 홉 제한2로 설정됩니다.

  • AWS CLI: HttpTokensrequired로 설정되고 HttpPutResponseHopLimit2로 설정됩니다.

참고

계정 기본값을 IMDSv2로 설정하기 전에 인스턴스가 IMDSv1에 종속되지 않았는지 확인합니다. 자세한 내용은 IMDSv2를 요구하는 권장 경로 단원을 참조하십시오.

Console
IMDSv2를 지정된 리전의 계정 기본값으로 설정하는 방법
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. AWS 리전을(를) 변경하려면 페이지의 오른쪽 상단 모서리에 있는 리전 선택기를 사용합니다.

  3. 탐색 창에서 EC2 대시보드를 선택합니다.

  4. 계정 속성에서 데이터 보호 및 보안을 선택합니다.

  5. IMDS 기본값 옆에서 관리를 선택합니다.

  6. IMDS 기본값 관리 페이지에서 다음을 수행합니다.

    1. 인스턴스 메타데이터 서비스에서 활성화됨을 선택합니다.

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

    3. 메타데이터 응답 홉 제한에서 인스턴스가 컨테이너를 호스팅하는 경우 2를 지정합니다. 그렇지 않으면 기본 설정 없음을 선택합니다. 기본 설정이 지정되지 않은 경우 AMI에 IMDSv2가 필요하면 시작 시 기본값은 2이고, 그렇지 않으면 기본값은 1입니다.

    4. 업데이트를 선택합니다.

AWS CLI
IMDSv2를 지정된 리전의 계정 기본값으로 설정하는 방법

modify-instance-metadata-defaults 명령을 사용하고 IMDS 계정 수준 설정을 수정할 리전을 지정합니다. 인스턴스가 컨테이너를 호스팅할 경우 --http-tokens(required로 설정됨) 및 --http-put-response-hop-limit(2로 설정됨)를 포함합니다. 그렇지 않으면 기본 설정 없음을 표시하도록 -1을 지정합니다. -1(기본 설정 없음)이 지정된 경우 AMI에 IMDSv2가 필요하면 시작 시 기본값은 2이고, 그렇지 않으면 1입니다.

aws ec2 modify-instance-metadata-defaults \ --region us-east-1 \ --http-tokens required \ --http-put-response-hop-limit 2

예상 결과

{ "Return": true }
지정된 리전의 인스턴스 메타데이터 옵션에 대한 기본 계정 설정을 보는 방법

get-instance-metadata-defaults 명령을 사용하고 리전을 지정합니다.

aws ec2 get-instance-metadata-defaults --region us-east-1

출력 예시

{ "AccountLevel": { "HttpTokens": "required", "HttpPutResponseHopLimit": 2 } }
IMDSv2를 모든 리전의 계정 기본값으로 설정하려면 다음을 수행하세요.

modify-instance-metadata-defaults 명령을 사용하여 모든 리전의 IMDS 계정 수준 설정을 수정합니다. 인스턴스가 컨테이너를 호스팅할 경우 --http-tokens(required로 설정됨) 및 --http-put-response-hop-limit(2로 설정됨)를 포함합니다. 그렇지 않으면 기본 설정 없음을 표시하도록 -1을 지정합니다. -1(기본 설정 없음)이 지정된 경우 AMI에 IMDSv2가 필요하면 시작 시 기본값은 2이고, 그렇지 않으면 1입니다.

echo -e "Region \t Modified" ; \ echo -e "-------------- \t ---------" ; \ for region in $( aws ec2 describe-regions \ --region us-east-1 \ --query "Regions[*].[RegionName]" \ --output text ); do (output=$( aws ec2 modify-instance-metadata-defaults \ --region $region \ --http-tokens required \ --http-put-response-hop-limit 2 \ --output text) echo -e "$region \t $output" ); done

예상 결과

Region Modified -------------- --------- ap-south-1 True eu-north-1 True eu-west-3 True ...
모든 리전의 인스턴스 메타데이터 옵션에 대한 기본 계정 설정을 보려면 다음을 수행하세요.

get-instance-metadata-defaults 명령을 사용합니다.

echo -e "Region \t Level Hops HttpTokens" ; \ echo -e "-------------- \t ------------ ---- ----------" ; \ for region in $( aws ec2 describe-regions \ --region us-east-1 \ --query "Regions[*].[RegionName]" \ --output text ); do (output=$( aws ec2 get-instance-metadata-defaults \ --region $region \ --output text) echo -e "$region \t $output" ); done

예상 결과

Region Level Hops HttpTokens -------------- ------------ ---- ---------- ap-south-1 ACCOUNTLEVEL 2 required eu-north-1 ACCOUNTLEVEL 2 required eu-west-3 ACCOUNTLEVEL 2 required ...
PowerShell
IMDSv2를 지정된 리전의 계정 기본값으로 설정하는 방법

Edit-EC2InstanceMetadataDefault 명령을 사용하고 IMDS 계정 수준 설정을 수정할 리전을 지정합니다. 인스턴스가 컨테이너를 호스팅할 경우 -HttpToken(required로 설정됨) 및 -HttpPutResponseHopLimit(2로 설정됨)를 포함합니다. 그렇지 않으면 기본 설정 없음을 표시하도록 -1을 지정합니다. -1(기본 설정 없음)이 지정된 경우 AMI에 IMDSv2가 필요하면 시작 시 기본값은 2이고, 그렇지 않으면 1입니다.

Edit-EC2InstanceMetadataDefault ` -Region us-east-1 ` -HttpToken required ` -HttpPutResponseHopLimit 2

예상 결과

True
지정된 리전의 인스턴스 메타데이터 옵션에 대한 기본 계정 설정을 보는 방법

Get-EC2InstanceMetadataDefault 명령을 사용하고 리전을 지정합니다.

Get-EC2InstanceMetadataDefault -Region us-east-1 | Format-List

출력 예시

HttpEndpoint : HttpPutResponseHopLimit : 2 HttpTokens : required InstanceMetadataTags :
IMDSv2를 모든 리전의 계정 기본값으로 설정하려면 다음을 수행하세요.

Edit-EC2InstanceMetadataDefault Cmdlet을 사용하여 모든 리전의 IMDS 계정 수준 설정을 수정합니다. 인스턴스가 컨테이너를 호스팅할 경우 -HttpToken(required로 설정됨) 및 -HttpPutResponseHopLimit(2로 설정됨)를 포함합니다. 그렇지 않으면 기본 설정 없음을 표시하도록 -1을 지정합니다. -1(기본 설정 없음)이 지정된 경우 AMI에 IMDSv2가 필요하면 시작 시 기본값은 2이고, 그렇지 않으면 1입니다.

(Get-EC2Region).RegionName | ` ForEach-Object { [PSCustomObject]@{ Region = $_ Modified = (Edit-EC2InstanceMetadataDefault ` -Region $_ ` -HttpToken required ` -HttpPutResponseHopLimit 2) } } | ` Format-Table Region, Modified -AutoSize

예상 결과

Region Modified ------ -------- ap-south-1 True eu-north-1 True eu-west-3 True ...
모든 리전의 인스턴스 메타데이터 옵션에 대한 기본 계정 설정을 보려면 다음을 수행하세요.

Get-EC2InstanceMetadataDefault Cmdlet을 사용합니다.

(Get-EC2Region).RegionName | ` ForEach-Object { [PSCustomObject]@{ Region = $_ HttpPutResponseHopLimit = (Get-EC2InstanceMetadataDefault -Region $_).HttpPutResponseHopLimit HttpTokens = (Get-EC2InstanceMetadataDefault -Region $_).HttpTokens } } | ` Format-Table -AutoSize

출력 예시

Region HttpPutResponseHopLimit HttpTokens ------ ----------------------- ---------- ap-south-1 2 required eu-north-1 2 required eu-west-3 2 required ...

시작 시 인스턴스 구성

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

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

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

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

컨테이너 환경에서는 IMDSv2가 필요한 경우 홉 제한을 2로 설정하는 것이 좋습니다. 자세한 내용은 인스턴스 메타데이터 액세스 고려 사항 단원을 참조하십시오.

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

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

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

    • (컨테이너 환경) 메타데이터 응답 홉 제한의 경우 2를 선택합니다.

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

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

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

컨테이너 환경에서는 IMDSv2가 필요한 경우 HttpPutResponseHopLimit=2를 사용하여 홉 제한을 2로 설정하는 것이 좋습니다.

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c6i.large \ ... --metadata-options "HttpEndpoint=enabled,HttpTokens=required,HttpPutResponseHopLimit=2"
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 구성

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

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으로 지정합니다.

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 정책 예제는 인스턴스 메타데이터 작업 섹션을 참조하세요.

IMDS IPv4 및 IPv6 엔드포인트 활성화

IMDS에는 인스턴스에 IPv4(169.254.169.254) 및 IPv6([fd00:ec2::254])이라는 두 개의 엔드포인트가 있습니다. IMDS를 활성화하면 IPv4 엔드포인트가 자동으로 활성화됩니다. IPv6 전용 서브넷으로 인스턴스를 시작하는 경우에도 IPv6 엔드포인트는 비활성화된 상태로 유지됩니다. IPv6 엔드포인트를 활성화하려면 명시적으로 활성화해야 합니다. IPv6 엔드포인트가 활성화되면 IPv4 엔드포인트는 활성화된 상태로 유지됩니다.

인스턴스 시작 시 또는 이후에 IPv6 엔드포인트를 활성화할 수 있습니다.

IPv6 엔드포인트 활성화 요구

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

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

    • 메타데이터 IPv6 엔드포인트에 대해 활성화됨을 선택합니다.

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

AWS CLI
인스턴스 시작 시 IMDS IPv6 엔드포인트를 활성화하는 방법

다음 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
인스턴스 시작 시 IMDS IPv6 엔드포인트를 활성화하는 방법

다음 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를 다시 활성화할 수 있습니다.

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

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

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

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 속성을 참조하세요.

인스턴스 메타데이터의 태그에 대한 액세스 허용

기본적으로 인스턴스 태그는 인스턴스 메타데이터에서 액세스할 수 없습니다. 각 인스턴스에 대해 명시적으로 액세스를 허용해야 합니다. 액세스가 허용되면 인스턴스 태그 는 특정 문자 제한을 준수해야 합니다. 그렇지 않으면 인스턴스 시작이 실패합니다. 자세한 내용은 인스턴스 메타데이터의 태그에 대한 액세스 허용 단원을 참조하십시오.