기존 인스턴스의 인스턴스 메타데이터 옵션 수정하기
기존 인스턴스의 인스턴스 메타데이터 옵션 수정하기
기존 인스턴스의 인스턴스 메타데이터 옵션을 수정할 수 있어요. IMDSv2 사용을 요구하거나, IMDSv1 사용을 복원하거나, PUT 응답 홉 제한을 바꾸거나, IPv6 엔드포인트를 활성화하거나, 메타데이터 액세스를 켜고 끄는 등 다양한 설정을 다룰 수 있습니다.
출처: 문서
본문
기존 인스턴스의 인스턴스 메타데이터 옵션을 수정할 수 있어요.
또한 사용자가 기존 인스턴스의 인스턴스 메타데이터 옵션을 수정하지 못하도록 하는 IAM 정책을 만들 수 있습니다. 인스턴스 메타데이터 옵션을 수정할 수 있는 사용자를 제어하려면, 지정된 역할을 가진 사용자를 제외한 모든 사용자가 ModifyInstanceMetadataOptions API를 사용하지 못하도록 하는 정책을 지정해요. 예시 IAM 정책은 Work with instance metadata를 참고하세요.
Note
어카운트에 선언적 정책(declarative policy)으로 인스턴스 메타데이터 옵션이 구성되었다면 계정 내에서 직접 수정할 수 없어요. 자세한 내용은 AWS Organizations User Guide의 Declarative policies를 참고하세요.
IMDSv2 사용 요구하기 (Require the use of IMDSv2)
다음 방법 중 하나를 사용해 기존 인스턴스의 인스턴스 메타데이터 옵션을 수정해, 인스턴스 메타데이터를 요청할 때 IMDSv2 사용을 요구하도록 만들 수 있어요. IMDSv2가 요구되면 IMDSv1은 사용할 수 없습니다.
Note
IMDSv2 사용을 요구하기 전에 인스턴스가 IMDSv1 호출을 하고 있지 않은지 확인하세요.MetadataNoTokenCloudWatch 지표가 IMDSv1 호출을 추적합니다.MetadataNoToken이 인스턴스에 대해 IMDSv1 사용량 0을 기록하면 인스턴스는 IMDSv2를 요구할 준비가 된 것입니다.
콘솔 (Console)
기존 인스턴스에서 IMDSv2 사용을 요구하려면
- Amazon EC2 콘솔을 엽니다.
- 인스턴스를 선택하고 Actions, Instance settings, Modify instance metadata options를 선택해요.
- Instance metadata service에서 Enable을 선택해요.
- IMDSv2에서 Required를 선택해요.
- Save를 선택해요.
AWS CLI
기존 인스턴스에서 IMDSv2 사용을 요구하려면
modify-instance-metadata-options CLI 명령을 사용하고 http-tokens 파라미터를 required로 설정해요. http-tokens에 값을 지정할 때는 http-endpoint도 enabled로 설정해야 해요.
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567890abcdef0 \
--http-tokens required \
--http-endpoint enabled
PowerShell
기존 인스턴스에서 IMDSv2 사용을 요구하려면
Edit-EC2InstanceMetadataOption cmdlet을 사용하고 HttpTokens 파라미터를 required로 설정해요. HttpTokens에 값을 지정할 때는 HttpEndpoint도 enabled로 설정해야 해요.
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0 `
-HttpTokens required `
-HttpEndpoint enabled).InstanceMetadataOptions
IMDSv1 사용 복원하기 (Restore the use of IMDSv1)
인스턴스에서 IMDSv2가 요구되면 IMDSv1 요청을 사용하면 실패해요. IMDSv2가 선택적(optional)이면 IMDSv2와 IMDSv1이 모두 작동합니다. 따라서 IMDSv1을 복원하려면 다음 방법 중 하나로 IMDSv2를 선택적(httpTokens = optional)으로 설정해요.
httpTokensEnforced IMDS 속성은 기존 인스턴스에서 IMDSv1 활성화 시도도 방지해요. 계정의 리전에서 이 속성이 활성화되면 httpTokens를 optional로 설정하려는 시도는 UnsupportedOperation 예외가 발생합니다. 자세한 내용은 트러블슈팅을 참고하세요.
Important
IMDSv2 강제 적용으로 인스턴스 시작이 실패한다면 시작이 성공하도록 하는 두 가지 옵션이 있어요:
- IMDSv2 전용으로 인스턴스 시작 – 인스턴스에서 실행되는 소프트웨어가 IMDSv2만 사용한다면(IMDSv1 의존성 없음) 인스턴스를 IMDSv2 전용으로 시작할 수 있어요. 이렇게 하려면 시작 파라미터나 계정의 리전 메타데이터 기본값에서
httpTokens = required로 설정해 IMDSv2만 구성하세요.- 강제 적용 비활성화 – 소프트웨어가 여전히 IMDSv1에 의존한다면 계정의 리전에서
httpTokensEnforced를disabled로 설정하세요. 자세한 내용은 Enforce IMDSv2 at the account level을 참고하세요.
콘솔 (Console)
인스턴스에서 IMDSv1 사용을 복원하려면
- Amazon EC2 콘솔을 엽니다.
- 인스턴스를 선택하고 Actions, Instance settings, Modify instance metadata options를 선택해요.
- Instance metadata service에서 Enable이 선택되어 있는지 확인해요.
- IMDSv2에서 Optional을 선택해요.
- Save를 선택해요.
AWS CLI
인스턴스에서 IMDSv1 사용을 복원하려면
http-tokens를 optional로 설정한 modify-instance-metadata-options CLI 명령을 사용해 인스턴스 메타데이터를 요청할 때 IMDSv1 사용을 복원할 수 있어요.
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567890abcdef0 \
--http-tokens optional \
--http-endpoint enabled
PowerShell
인스턴스에서 IMDSv1 사용을 복원하려면
HttpTokens를 optional로 설정한 Edit-EC2InstanceMetadataOption cmdlet을 사용해 인스턴스 메타데이터를 요청할 때 IMDSv1 사용을 복원할 수 있어요.
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0 `
-HttpTokens optional `
-HttpEndpoint enabled).InstanceMetadataOptions
PUT 응답 홉 제한(Hop Limit) 변경하기
기존 인스턴스의 경우 PUT 응답 홉 제한 설정을 변경할 수 있어요. 현재 PUT 응답 홉 제한 변경은 AWS CLI와 AWS SDK만 지원합니다.
AWS CLI
PUT 응답 홉 제한을 변경하려면
modify-instance-metadata-options CLI 명령을 사용하고 http-put-response-hop-limit 파라미터를 필요한 홉 수로 설정해요. 다음 예시에서 홉 제한은 3으로 설정됩니다. http-put-response-hop-limit에 값을 지정할 때는 http-endpoint도 enabled로 설정해야 해요.
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567890abcdef0 \
--http-put-response-hop-limit 3 \
--http-endpoint enabled
PowerShell
PUT 응답 홉 제한을 변경하려면
Edit-EC2InstanceMetadataOption cmdlet을 사용하고 HttpPutResponseHopLimit 파라미터를 필요한 홉 수로 설정해요. 다음 예시에서 홉 제한은 3으로 설정됩니다. HttpPutResponseHopLimit에 값을 지정할 때는 HttpEndpoint도 enabled로 설정해야 해요.
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0 `
-HttpPutResponseHopLimit 3 `
-HttpEndpoint enabled).InstanceMetadataOptions
IMDS IPv4 및 IPv6 엔드포인트 활성화하기 (Enable the endpoints)
IMDS에는 인스턴스에 두 개의 엔드포인트가 있어요: IPv4(169.254.169.254)와 IPv6([fd00:ec2::254]). IMDS를 활성화하면 IPv4 엔드포인트가 자동으로 활성화됩니다. IPv6 전용 서브넷에 인스턴스를 시작해도 IPv6 엔드포인트는 비활성화된 상태로 유지됩니다. IPv6 엔드포인트를 활성화하려면 명시적으로 활성화해야 해요. IPv6 엔드포인트를 활성화하면 IPv4 엔드포인트는 계속 활성화 상태로 유지됩니다.
IPv6 엔드포인트는 인스턴스 시작 시 또는 이후에 활성화할 수 있어요.
IPv6 엔드포인트 활성화 요구사항
- 선택한 인스턴스 유형이 Nitro 기반 인스턴스여야 해요.
- 선택한 서브넷이 IPv6를 지원해야 해요. 서브넷이 듀얼 스택이거나 IPv6 전용이어야 합니다.
현재 인스턴스 시작 후 IMDS IPv6 엔드포인트 활성화는 AWS CLI와 AWS SDK만 지원합니다.
AWS CLI
인스턴스에 IMDS IPv6 엔드포인트를 활성화하려면
modify-instance-metadata-options CLI 명령을 사용하고 http-protocol-ipv6 파라미터를 enabled로 설정해요. http-protocol-ipv6에 값을 지정할 때는 http-endpoint도 enabled로 설정해야 해요.
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567890abcdef0 \
--http-protocol-ipv6 enabled \
--http-endpoint enabled
PowerShell
인스턴스에 IMDS IPv6 엔드포인트를 활성화하려면
Edit-EC2InstanceMetadataOption cmdlet을 사용하고 HttpProtocolIpv6 파라미터를 enabled로 설정해요. HttpProtocolIpv6에 값을 지정할 때는 HttpEndpoint도 enabled로 설정해야 해요.
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0 `
-HttpProtocolIpv6 enabled `
-HttpEndpoint enabled).InstanceMetadataOptions
인스턴스 메타데이터 액세스 켜기 (Turn on access to instance metadata)
사용하는 IMDS 버전과 관계없이 인스턴스에서 IMDS의 HTTP 엔드포인트를 활성화해 인스턴스 메타데이터 액세스를 켤 수 있어요. HTTP 엔드포인트를 비활성화해 언제든지 이 변경을 되돌릴 수 있어요.
콘솔 (Console)
인스턴스 메타데이터 액세스를 켜려면
- Amazon EC2 콘솔을 엽니다.
- 인스턴스를 선택하고 Actions, Instance settings, Modify instance metadata options를 선택해요.
- Instance metadata service에서 Enable을 선택해요.
- Save를 선택해요.
AWS CLI
인스턴스 메타데이터 액세스를 켜려면
modify-instance-metadata-options CLI 명령을 사용하고 http-endpoint 파라미터를 enabled로 설정해요.
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567890abcdef0 \
--http-endpoint enabled
PowerShell
인스턴스 메타데이터 액세스를 켜려면
Edit-EC2InstanceMetadataOption cmdlet을 사용하고 HttpEndpoint 파라미터를 enabled로 설정해요.
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0 `
-HttpEndpoint enabled).InstanceMetadataOptions
인스턴스 메타데이터 액세스 끄기 (Turn off access to instance metadata)
사용하는 IMDS 버전과 관계없이 인스턴스에서 IMDS의 HTTP 엔드포인트를 비활성화해 인스턴스 메타데이터 액세스를 끌 수 있어요. HTTP 엔드포인트를 활성화해 언제든지 이 변경을 되돌릴 수 있어요.
콘솔 (Console)
인스턴스 메타데이터 액세스를 끄려면
- Amazon EC2 콘솔을 엽니다.
- 인스턴스를 선택하고 Actions, Instance settings, Modify instance metadata options를 선택해요.
- Instance metadata service에서 Enable을 선택 해제해요.
- Save를 선택해요.
AWS CLI
인스턴스 메타데이터 액세스를 끄려면
modify-instance-metadata-options CLI 명령을 사용하고 http-endpoint 파라미터를 disabled로 설정해요.
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567890abcdef0 \
--http-endpoint disabled
PowerShell
인스턴스 메타데이터 액세스를 끄려면
Edit-EC2InstanceMetadataOption cmdlet을 사용하고 HttpEndpoint 파라미터를 disabled로 설정해요.
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0 `
-HttpEndpoint disabled).InstanceMetadataOptions
인스턴스 메타데이터의 태그 액세스 허용하기 (Allow access to tags in instance metadata)
실행 중이거나 중지된 인스턴스의 인스턴스 메타데이터에서 태그 액세스를 허용할 수 있어요. 각 인스턴스에 대해 명시적으로 액세스를 허용해야 해요. 액세스가 허용되면 인스턴스 태그 키가 특정 문자 제한을 준수해야 하며, 그렇지 않으면 오류가 발생합니다. 자세한 내용은 Enable access to tags in instance metadata를 참고하세요.
트러블슈팅 (Troubleshooting)
IMDSv1 활성화 인스턴스 수정 실패
설명
다음 오류 메시지를 받아요:
You can't launch instances with IMDSv1 because httpTokensEnforced is enabled for this account. Either launch the instance with httpTokens=required or contact your account owner to disable httpTokensEnforced using the ModifyInstanceMetadataDefaults API or the account settings in the EC2 console.
원인
이 오류는 기존 인스턴스를 IMDSv1 활성화(httpTokens = optional)로 수정하려고 할 때, EC2 계정 설정이나 AWS Organization 선언적 정책이 IMDSv2 사용을 강제(httpTokensEnforced = enabled)하는 계정에서 발생합니다.
해결 방법
기존 인스턴스에서 IMDSv1 지원이 필요하다면 리전의 계정에서 IMDSv2 강제 적용을 비활성화해야 해요. IMDSv2 강제 적용을 비활성화하려면 HttpTokensEnforced를 disabled로 설정해요. 자세한 내용은 Amazon EC2 API Reference의 ModifyInstanceMetadataDefaults를 참고하세요. 콘솔로 이 설정을 구성하려면 Enforce IMDSv2 at the account level을 참고하세요.
IMDSv2만(httpTokens=required) 사용하는 것을 권장합니다. 자세한 내용은 Transition to using Instance Metadata Service Version 2를 참고하세요.