새 인스턴스의 인스턴스 메타데이터 옵션 구성하기
새 인스턴스의 인스턴스 메타데이터 옵션 구성하기
새 인스턴스에 대해 다음 인스턴스 메타데이터 옵션을 구성할 수 있어요.
출처: 문서
본문
옵션
- IMDSv2 사용 요구하기
- IMDS IPv4/IPv6 엔드포인트 활성화하기
- 인스턴스 메타데이터 접근 끄기
- 인스턴스 메타데이터에서 태그 접근 허용하기
참고 — 이 옵션들의 설정은 계정 수준(계정에서 직접 또는 선언적 정책(declarative policy) 사용)에서 구성돼요. 인스턴스 메타데이터 옵션을 구성하려는 각 AWS 리전에서 구성해야 해요. 선언적 정책을 사용하면 여러 리전에 동시에, 그리고 여러 계정에 동시에 설정을 적용할 수 있어요. 선언적 정책이 사용 중이면 계정 내에서 직접 설정을 수정할 수 없어요. 이 주제는 계정 내에서 직접 설정을 구성하는 방법을 설명해요. 선언적 정책 사용에 대한 내용은 AWS Organizations 사용 설명서의 선언적 정책(Declarative policies) 을 참고하세요.
IMDSv2 사용 요구하기
새 인스턴스에서 IMDSv2 사용을 요구하려면 다음 방법을 사용할 수 있어요.
- 계정 기본값을 IMDSv2로 설정
- 계정 수준에서 IMDSv2 시행(Enforce)
- 시작 시 인스턴스 구성
- AMI 구성
- IAM 정책 사용
계정 기본값을 IMDSv2로 설정
각 AWS 리전에 대해 계정 수준에서 인스턴스 메타데이터 서비스(IMDS)의 기본 버전을 설정할 수 있어요. 즉 새 인스턴스를 실행할 때 인스턴스 메타데이터 버전이 자동으로 계정 수준 기본값으로 설정됩니다. 그러나 시작 시 또는 시작 후에 값을 수동으로 재정의할 수 있어요. 계정 수준 설정과 수동 재정의가 인스턴스에 어떤 영향을 미치는지에 대한 자세한 내용은 인스턴스 메타데이터 옵션의 우선 순위(Order of precedence) 를 참고하세요.
참고 — 계정 수준 기본값을 설정해도 기존 인스턴스는 리셋되지 않아요. 예를 들어 계정 수준 기본값을 IMDSv2로 설정해도 IMDSv1로 설정된 기존 인스턴스에는 영향을 주지 않아요. 기존 인스턴스의 값을 바꾸려면 인스턴스 자체에서 값을 수동으로 변경해야 해요.
계정의 인스턴스 메타데이터 버전 기본값을 IMDSv2로 설정해 계정의 모든 새 인스턴스가 IMDSv2 필수로 실행되고 IMDSv1이 비활성화되도록 할 수 있어요. 이 계정 기본값을 사용하면 인스턴스를 실행할 때 인스턴스의 기본값은 다음과 같아요.
- 콘솔: Metadata version이 V2 only (token required) 로, Metadata response hop limit이
2로 설정됩니다. - AWS CLI:
HttpTokens가required로,HttpPutResponseHopLimit이2로 설정됩니다.
참고 — 계정 기본값을 IMDSv2로 설정하기 전에 인스턴스가 IMDSv1에 의존하지 않는지 확인하세요. 자세한 내용은 IMDSv2를 요구하기 위한 권장 경로 를 참고하세요.
콘솔
지정된 리전에 대해 계정 기본값을 IMDSv2로 설정하기
- Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
- AWS 리전을 바꾸려면 페이지 오른쪽 위의 리전 선택기를 사용합니다.
- 탐색 창에서 Dashboard를 선택합니다.
- Account attributes 카드의 Settings 아래에서 Data protection and security를 선택합니다.
- IMDS defaults 옆에서 Manage를 선택합니다.
- Manage IMDS defaults 페이지에서 다음을 수행합니다:
- Instance metadata service에서 Enabled를 선택합니다.
- Metadata version에서 V2 only (token required) 를 선택합니다.
- Metadata response hop limit에서 인스턴스가 컨테이너를 호스팅한다면
2를 지정합니다. 그렇지 않으면 No preference를 선택합니다. 기본 설정이 지정되지 않으면 시작 시 AMI에ImdsSupport: v2.0설정이 있을 때 값이2로 기본 설정되고, 그렇지 않으면1로 기본 설정됩니다.
- Update를 선택합니다.
AWS CLI
지정된 리전에 대해 계정 기본값을 IMDSv2로 설정하기
modify-instance-metadata-defaults 명령을 사용하고 IMDS 계정 수준 설정을 수정할 리전을 지정합니다. 인스턴스가 컨테이너를 호스팅한다면 --http-tokens를 required로, --http-put-response-hop-limit을 2로 지정합니다. 그렇지 않으면 기본 설정 없음을 나타내도록 -1을 지정합니다. -1(기본 설정 없음)이 지정되면 시작 시 AMI에 ImdsSupport: v2.0 설정이 있을 때 값이 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
},
"ManagedBy": "account"
}
ManagedBy 필드는 설정을 구성한 주체를 나타냅니다. 이 예시에서 account는 설정이 계정에서 직접 구성됐음을 나타냅니다. declarative-policy 값은 설정이 선언적 정책에 의해 구성됐음을 의미합니다(자세한 내용은 AWS Organizations 사용 설명서의 선언적 정책 참고).
모든 리전에 대해 계정 기본값을 IMDSv2로 설정하기
modify-instance-metadata-defaults 명령을 사용해 모든 리전의 IMDS 계정 수준 설정을 수정합니다.
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 cmdlet을 사용하고 IMDS 계정 수준 설정을 수정할 리전을 지정합니다. 인스턴스가 컨테이너를 호스팅한다면 -HttpToken을 required로, -HttpPutResponseHopLimit을 2로 지정합니다. 그렇지 않으면 -1을 지정합니다.
Edit-EC2InstanceMetadataDefault `
-Region us-east-1 `
-HttpToken required `
-HttpPutResponseHopLimit 2
예시 출력:
True
지정된 리전의 인스턴스 메타데이터 옵션에 대한 기본 계정 설정 보기
Get-EC2InstanceMetadataDefault cmdlet을 사용하고 리전을 지정합니다.
Get-EC2InstanceMetadataDefault -Region us-east-1 | Format-List
예시 출력:
HttpEndpoint :
HttpPutResponseHopLimit : 2
HttpTokens : required
InstanceMetadataTags :
모든 리전에 대해 계정 기본값을 IMDSv2로 설정하기
Edit-EC2InstanceMetadataDefault cmdlet을 사용해 모든 리전의 IMDS 계정 수준 설정을 수정합니다.
(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 시행하기
각 AWS 리전에 대해 계정 수준에서 IMDSv2 사용을 시행할 수 있어요. 시행되면 인스턴스는 IMDSv2를 요구하도록 구성된 경우에만 실행할 수 있어요. 이 시행은 인스턴스나 AMI가 어떻게 구성됐는지와 무관하게 적용됩니다.
참고 — 계정 수준에서 IMDSv2 시행을 활성화하기 전에 애플리케이션과 AMI가 IMDSv2를 지원하는지 확인하세요(자세한 내용은 IMDSv2를 요구하기 위한 권장 경로 참고). IMDSv2 시행이 활성화되고 시작 시 인스턴스 구성, 계정 설정, 또는 AMI 구성에서
httpTokens가required로 설정되지 않으면 인스턴스 시작이 실패합니다. 문제 해결 정보는 IMDSv1 사용 인스턴스 실행 실패 를 참고하세요.
참고 — 이 설정은 기존 인스턴스의 IMDS 버전을 바꾸지 않지만, 현재 IMDSv1이 비활성화된 기존 인스턴스에서 IMDSv1을 활성화하는 것을 차단합니다.
콘솔
지정된 리전의 계정에 IMDSv2 시행하기
- Amazon EC2 콘솔을 엽니다.
- AWS 리전을 바꾸려면 페이지 오른쪽 위의 리전 선택기를 사용합니다.
- 탐색 창에서 Dashboard를 선택합니다.
- Account attributes 카드의 Settings 아래에서 Data protection and security를 선택합니다.
- IMDS defaults 옆에서 Manage를 선택합니다.
- Manage IMDS defaults 페이지에서 다음을 수행합니다:
- Metadata version에서 V2 only (token required) 를 선택합니다.
- Enforce IMDSv2에서 Enabled를 선택합니다.
- Update를 선택합니다.
AWS CLI
지정된 리전의 계정에 IMDSv2 시행하기
modify-instance-metadata-defaults 명령을 사용하고 IMDSv2를 시행할 리전을 지정합니다.
aws ec2 modify-instance-metadata-defaults \
--region us-east-1 \
--http-tokens required \
--http-tokens-enforced enabled
예시 출력:
{
"Return": true
}
특정 리전의 계정에 대한 IMDSv2 시행 설정 보기
get-instance-metadata-defaults 명령을 사용하고 리전을 지정합니다.
aws ec2 get-instance-metadata-defaults --region us-east-1
예시 출력:
{
"AccountLevel": {
"HttpTokens": "required",
"HttpTokensEnforced": "enabled"
},
"ManagedBy": "account"
}
ManagedBy 필드는 설정을 구성한 주체를 나타냅니다. 이 예시에서 account는 계정에서 직접 구성됐음을 나타내고, declarative-policy 값은 선언적 정책에 의해 구성됐음을 의미합니다.
모든 리전의 계정에 IMDSv2 시행하기
modify-instance-metadata-defaults 명령을 사용해 모든 리전에서 IMDSv2를 시행합니다.
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-enforced enabled \
--output text)
echo -e "$region \t $output"
);
done
예시 출력:
Region Modified
-------------- ---------
ap-south-1 True
eu-north-1 True
eu-west-3 True
...
모든 리전의 계정에 대한 IMDSv2 시행 설정 보기
get-instance-metadata-defaults 명령을 사용합니다.
echo -e "Region \t Level HttpTokensEnforced" ; \
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 \
--query 'AccountLevel.HttpTokensEnforced' \
--output text)
echo -e "$region \t ACCOUNTLEVEL $output"
);
done
예시 출력:
Region Level HttpTokensEnforced
-------------- ------------ ------------------
ap-south-1 ACCOUNTLEVEL enabled
eu-north-1 ACCOUNTLEVEL enabled
eu-west-3 ACCOUNTLEVEL enabled
...
PowerShell
지정된 리전의 계정에 IMDSv2 시행하기
Edit-EC2InstanceMetadataDefault cmdlet을 사용하고 IMDSv2를 시행할 리전을 지정합니다.
Edit-EC2InstanceMetadataDefault `
-Region us-east-1 `
-HttpToken required `
-HttpPutResponseHopLimit 2
예시 출력:
@{
Return = $true
}
특정 리전의 계정에 대한 IMDSv2 시행 설정 보기
Get-EC2InstanceMetadataDefault 명령을 사용하고 리전을 지정합니다.
Get-EC2InstanceMetadataDefault -Region us-east-1
예시 출력:
@{
AccountLevel = @{
HttpTokens = "required"
HttpTokensEnforced = "enabled"
}
ManagedBy = "account"
}
ManagedBy 필드는 설정을 구성한 주체를 나타냅니다.
시작 시 인스턴스 구성하기
인스턴스를 실행할 때 다음 필드를 구성해 인스턴스가 IMDSv2 사용을 요구하도록 할 수 있어요.
- Amazon EC2 콘솔: Metadata version을 V2 only (token required) 로 설정.
- AWS CLI:
HttpTokens를required로 설정.
IMDSv2가 필수임을 지정하면 Metadata accessible을 Enabled(콘솔) 또는 HttpEndpoint를 enabled(AWS CLI)로 설정해 Instance Metadata Service(IMDS) 엔드포인트도 활성화해야 해요.
컨테이너 환경에서는 IMDSv2가 필수일 때 호프 제한(hop limit)을 2로 설정하는 것을 권장해요(자세한 내용은 인스턴스 메타데이터 접근 고려 사항 참고).
콘솔
새 인스턴스에서 IMDSv2 사용 요구하기
새 인스턴스를 Amazon EC2 콘솔에서 실행할 때 Advanced details를 확장하고:
- Metadata accessible에서 Enabled를 선택합니다.
- Metadata version에서 V2 only (token required) 를 선택합니다.
- (컨테이너 환경) Metadata response hop limit에서
2를 선택합니다.
자세한 내용은 Advanced details를 참고하세요.
AWS CLI
새 인스턴스에서 IMDSv2 사용 요구하기
다음 run-instances 예시는 --metadata-options를 HttpTokens=required로 설정해 c6i.large 인스턴스를 실행합니다. HttpTokens 값을 지정하면 HttpEndpoint도 enabled로 설정해야 해요. 메타데이터 검색 요청의 보안 토큰 헤더가 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_HttpEndpoint를 enabled로, MetadataOptions_HttpTokens 파라미터를 required로 설정해 c6i.large 인스턴스를 실행합니다.
New-EC2Instance `
-ImageId ami-0abcdef1234567890 `
-InstanceType c6i.large `
-MetadataOptions_HttpEndpoint enabled `
-MetadataOptions_HttpTokens required
CloudFormation
CloudFormation을 사용해 인스턴스의 메타데이터 옵션을 지정하려면 AWS CloudFormation 사용 설명서의 AWS::EC2::LaunchTemplate의 MetadataOptions 속성을 참고하세요.
AMI 구성하기
새 AMI를 등록하거나 기존 AMI를 수정할 때 imds-support 파라미터를 v2.0으로 설정할 수 있어요. 이 AMI에서 실행된 인스턴스는 Metadata version이 V2 only (token required)(콘솔) 또는 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 구성하기
다음 방법 중 하나를 사용해 IMDSv2용 새 AMI를 구성합니다.
AWS CLI
다음 register-image 예시는 EBS 루트 볼륨의 지정된 스냅샷을 디바이스 /dev/xvda로 사용해 AMI를 등록합니다. imds-support 파라미터에 v2.0을 지정해 이 AMI에서 실행된 인스턴스가 인스턴스 메타데이터를 요청할 때 IMDSv2를 요구하도록 합니다.
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를 등록합니다. 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 예시는 기존 AMI를 IMDSv2 전용으로 수정합니다. imds-support 파라미터에 v2.0을 지정합니다.
aws ec2 modify-image-attribute \
--image-id ami-0abcdef1234567890 \
--imds-support v2.0
PowerShell
다음 Edit-EC2ImageAttribute cmdlet 예시는 기존 AMI를 IMDSv2 전용으로 수정합니다. ImdsSupport에 v2.0을 지정합니다.
Edit-EC2ImageAttribute `
-ImageId ami-0abcdef1234567890 `
-ImdsSupport 'v2.0'
IAM 정책 사용하기
다음 중 하나를 수행하는 IAM 정책을 만들 수 있어요.
- 새 인스턴스에서 IMDSv2를 요구하지 않는 한 사용자가 새 인스턴스를 실행하지 못하게 하기.
- 사용자가
ModifyInstanceMetadataOptionsAPI를 호출해 실행 중인 인스턴스의 메타데이터 옵션을 변경하지 못하게 하기.ModifyInstanceMetadataOptions의httpTokens속성에 대한 접근을 제한해 실행 중인 인스턴스의 의도치 않은 업데이트를 방지합니다. - 사용자가
ModifyInstanceMetadataDefaultsAPI를 호출해httpTokens와httpTokensEnforced의 계정 기본 설정을 변경하지 못하게 하기. 이 두 속성에 대한 접근을 제한하면 승인된 역할만 계정 기본값을 수정할 수 있게 됩니다.
IAM 정책으로 모든 새 인스턴스에서 IMDSv2 사용 시행하기
사용자가 인스턴스 메타데이터를 요청할 때 IMDSv2 사용을 요구하는 인스턴스만 실행할 수 있게 하려면:
ModifyInstanceMetadataOptions와ModifyInstanceMetadataDefaultsAPI 모두, 그리고 더 구체적으로httpTokens와httpTokensEnforced속성에 대한 접근을 제한합니다.- 그런 다음 계정 기본값을
httpTokens = required와httpTokensEnforced = enabled로 설정합니다.
예시 IAM 정책은 인스턴스 메타데이터 작업하기 를 참고하세요.
IMDS IPv4 및 IPv6 엔드포인트 활성화하기
IMDS는 인스턴스에 IPv4(169.254.169.254)와 IPv6([fd00:ec2::254]) 두 엔드포인트가 있어요. IMDS를 활성화하면 IPv4 엔드포인트가 자동으로 활성화됩니다. IPv6 전용 서브넷에 인스턴스를 실행해도 IPv6 엔드포인트는 비활성화된 채로 유지돼요. IPv6 엔드포인트를 활성화하려면 명시적으로 활성화해야 해요. IPv6 엔드포인트를 활성화하면 IPv4 엔드포인트는 계속 활성화된 상태로 유지됩니다.
IPv6 엔드포인트는 인스턴스 시작 시 또는 그 이후에 활성화할 수 있어요.
IPv6 엔드포인트 활성화 요구 사항
- 선택한 인스턴스 유형이 Nitro 기반 인스턴스 여야 해요.
- 선택한 서브넷이 IPv6를 지원해야 해요(서브넷이 dual stack이거나 IPv6 전용이어야 해요).
IMDS IPv6 엔드포인트를 활성화한 상태로 인스턴스를 실행하려면 다음 방법 중 하나를 사용하세요.
콘솔
인스턴스 시작 시 IMDS IPv6 엔드포인트 활성화하기
Advanced details 아래에서 Metadata IPv6 endpoint를 Enabled로 선택해 Amazon EC2 콘솔에서 인스턴스를 실행합니다. 자세한 내용은 Advanced details를 참고하세요.
AWS CLI
인스턴스 시작 시 IMDS IPv6 엔드포인트 활성화하기
다음 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
인스턴스 시작 시 IMDS IPv6 엔드포인트 활성화하기
다음 New-EC2Instance cmdlet 예시는 IMDS의 IPv6 엔드포인트가 활성화된 c6i.large 인스턴스를 실행합니다.
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를 다시 활성화할 수 있어요.
콘솔
시작 시 인스턴스 메타데이터 접근 끄기
Advanced details 아래에서 Metadata accessible을 Disabled로 선택해 Amazon EC2 콘솔에서 인스턴스를 실행합니다. 자세한 내용은 Advanced details를 참고하세요.
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
CloudFormation
CloudFormation을 사용해 인스턴스의 메타데이터 옵션을 지정하려면 CloudFormation 사용 설명서의 AWS::EC2::LaunchTemplate의 MetadataOptions 속성을 참고하세요.
인스턴스 메타데이터에서 태그 접근 허용하기
기본적으로 인스턴스 태그는 인스턴스 메타데이터에서 접근할 수 없어요. 각 인스턴스에 대해 명시적으로 접근을 허용해야 해요. 접근이 허용되면 인스턴스 태그 키가 특정 문자 제한을 준수해야 하며, 그렇지 않으면 인스턴스 시작이 실패합니다. 자세한 내용은 인스턴스 메타데이터에서 태그 접근 활성화하기 를 참고하세요.
더 알아보기
- IMDS 옵션 구성하기
- 기존 인스턴스