새 인스턴스에 대한 인스턴스 메타데이터 옵션 구성
다음 인스턴스 메타데이터 옵션을 구성할 수 있습니다.
다음 방법을 사용하여 인스턴스에서 IMDSv2를 필수적으로 사용하도록 합니다.
IMDSv2를 계정 기본값으로 설정
각 AWS 리전에서 기본 인스턴스 메타데이터 버전을 설정할 수 있습니다. 인스턴스가 시작되면 인스턴스 메타데이터 버전이 계정 수준 값으로 자동 설정됩니다.
계정 수준 기본값을 변경한 적이 없는 경우 기본 설정 없음으로 나타납니다.
계정에서 모든 새 인스턴스를 반드시 IMDSv2로 실행하도록(즉, IMDSv1은 비활성화됨) 인스턴스 메타데이터 버전의 계정 기본값을 IMDSv2로 설정할 수 있습니다. 이 계정 기본값을 사용하면 인스턴스를 시작할 때 인스턴스의 기본값은 다음과 같습니다.
메타데이터 버전의 계정 기본값을 V2 전용(토큰 필요)으로 설정하기 전에 인스턴스가 IMDSv1을 직접 호출하지 않는지 확인합니다. MetadataNoToken
CloudWatch 지표는 IMDSv1 직접 호출을 추적합니다. MetadataNoToken
에서 IMDSv1 사용량을 0으로 기록하면 인스턴스가 IMDSv2 사용으로 완전히 전환할 준비가 된 것입니다.
시작할 때 인스턴스 구성에서 값을 변경할 수 있습니다. 자세한 내용은 인스턴스 메타데이터 버전 설정 단원을 참조하십시오.
- Console
-
IMDSv2를 지정된 리전의 계정 기본값으로 설정하는 방법
https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.
-
AWS 리전을(를) 변경하려면 페이지의 오른쪽 상단 모서리에 있는 리전 선택기를 사용합니다.
-
탐색 창에서 EC2 대시보드를 선택합니다.
-
계정 속성에서 데이터 보호 및 보안을 선택합니다.
-
IMDS 기본값 옆에서 관리를 선택합니다.
-
IMDS 기본값 관리 페이지에서 다음을 수행합니다.
-
인스턴스 메타데이터 서비스에서 활성화됨을 선택합니다.
-
메타데이터 버전(Metadata version)에 V2만 해당(토큰 필요)(V2 only (token required))를 선택합니다.
-
메타데이터 응답 홉 제한에서 인스턴스가 컨테이너를 호스팅하는 경우 2를 지정합니다. 그렇지 않으면 기본 설정 없음을 선택합니다. 기본 설정이 지정되지 않은 경우 AMI에 IMDSv2가 필요하면 시작 시 기본값은 2이고, 그렇지 않으면 기본값은 1입니다.
-
업데이트를 선택합니다.
- 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를 사용하도록 인스턴스를 구성할 수 있습니다.
IMDSv2를 사용하도록 지정하면 메타데이터 액세스 가능을 활성화됨(콘솔)로 설정하거나 HttpEndpoint
를 enabled
(AWS CLI)로 설정하여 인스턴스 메타데이터 서비스(IMDS) 엔드포인트도 활성화해야 합니다.
- New console
-
새 인스턴스에서 IMDSv2를 사용해야 하도록 설정하려면
- Old console
-
새 인스턴스에서 IMDSv2를 사용해야 하도록 설정하려면
자세한 내용은 3단계: 인스턴스 세부 정보 구성 섹션을 참조하세요.
- AWS CLI
-
새 인스턴스에서 IMDSv2를 사용해야 하도록 설정하려면
다음 run-instances 예에서는 c6i.large
를 --metadata-options
로 설정하여 HttpTokens=required
인스턴스를 시작합니다. 또한 HttpTokens
의 값을 지정할 때 HttpEndpoint
를 enabled
로 설정해야 합니다. 메타데이터 검색 요청에 대해 보안 토큰 헤더가 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_HttpEndpoint
를 enabled
로 설정하고 MetadataOptions_HttpTokens
파라미터를 required
로 설정하여 c6i.large
인스턴스를 시작합니다. 또한 HttpTokens
의 값을 지정할 때 HttpEndpoint
를 enabled
로 설정해야 합니다. 메타데이터 검색 요청에 대해 보안 토큰 헤더가 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를 수정할 때 imds-support
파라미터를 v2.0
로 설정할 수 있습니다. 이 AMI에서 시작된 인스턴스의 Metadata version(메타데이터 버전)은 V2 only (token required)(V2 전용(토큰 필요))(콘솔)로 설정되거나 HttpTokens
는 required
(AWS CLI)로 설정됩니다. 이러한 설정을 사용하면 인스턴스에서 인스턴스 메타데이터를 요청할 때 IMDSv2를 사용하도록 지정됩니다.
imds-support
를 v2.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'
사용자가 새 인스턴스에서 IMDSv2를 사용하도록 지정하지 않는 경우 새 인스턴스를 시작하지 못하게 하는 IAM 정책을 생성할 수 있습니다.
IAM 정책을 사용하여 모든 새 인스턴스에서 IMDSv2를 사용해야 하도록 설정
사용자가 인스턴스 메타데이터 요청 시 IMDSv2를 사용해야 하는 인스턴스만 시작할 수 있도록 하려면 IMDSv2를 사용해야 한다는 조건을 충족한 후에만 인스턴스를 시작할 수 있도록 지정할 수 있습니다. IAM 정책 예제는 인스턴스 메타데이터 작업 섹션을 참조하세요.
기본적으로 IPv6 엔드포인트는 비활성화되어 있습니다. IPv6 전용 서브넷으로 인스턴스를 시작하는 경우에도 마찬가지입니다. 인스턴스 시작 시 IPv6 엔드포인트를 활성화하도록 선택할 수 있습니다.
IMDS용 IPv6 엔드포인트는 AWS Nitro 시스템에 구축된 인스턴스에서만 액세스할 수 있습니다.
다음 방법 중 하나를 사용하여 IMDS에 대해 활성화된 IPv6 엔드포인트로 인스턴스를 시작합니다.
- New console
-
시작 시 IMDS IPv6 엔드포인트를 활성화하는 방법
자세한 내용은 고급 세부 정보 단원을 참조하십시오.
- AWS CLI
-
다음 run-instances 예제는 IMDS에 대해 활성화된 IPv6 엔드포인트로 c6i.large
인스턴스를 시작합니다. IPv6 엔드포인트를 활성화하려면 --metadata-options
파라미터에 대해 HttpProtocolIpv6=enabled
를 지정합니다. 또한 HttpProtocolIpv6
의 값을 지정할 때 HttpEndpoint
를 enabled
로 설정해야 합니다.
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_HttpProtocolIpv6
를 enabled
로 지정합니다. 또한 MetadataOptions_HttpProtocolIpv6
의 값을 지정할 때 MetadataOptions_HttpEndpoint
를 enabled
로 설정해야 합니다.
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
-
시작 시 인스턴스 메타데이터에 대한 액세스 끄기
자세한 내용은 고급 세부 정보 단원을 참조하십시오.
- Old console
-
시작 시 인스턴스 메타데이터에 대한 액세스 끄기
자세한 내용은 3단계: 인스턴스 세부 정보 구성 단원을 참조하십시오.
- AWS CLI
-
시작 시 인스턴스 메타데이터에 대한 액세스 끄기
--metadata-options
를 HttpEndpoint=disabled
로 설정하여 인스턴스를 시작합니다.
aws ec2 run-instances \
--image-id ami-0abcdef1234567890
\
--instance-type c6i.large
\
...
--metadata-options "HttpEndpoint=disabled"
- PowerShell
-
시작 시 인스턴스 메타데이터에 대한 액세스 끄기
다음 New-EC2Instance Cmdlet 예에서는 MetadataOptions_HttpEndpoint
를 disabled
로 설정하여 인스턴스를 시작합니다.
New-EC2Instance `
-ImageId ami-0abcdef1234567890
`
-InstanceType c6i.large
`
-MetadataOptions_HttpEndpoint disabled
- AWS CloudFormation
-
AWS CloudFormation을 사용하여 인스턴스에 대한 메타데이터 옵션을 지정하려면 AWS CloudFormation 사용 설명서의 AWS::EC2::LaunchTemplate MetadataOptions 속성을 참조하세요.