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

인스턴스 메타데이터 옵션 구성

인스턴스 메타데이터 서비스(IMDS)는 모든 EC2 인스턴스에서 로컬로 실행됩니다. 인스턴스 메타데이터 옵션은 EC2 인스턴스에서 IMDS의 액세스 가능성과 동작을 제어하는 일련의 구성입니다.

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

인스턴스 메타데이터 서비스(IMDS): enabled | disabled

인스턴스에서 IMDS를 활성화 또는 비활성화할 수 있습니다. 비활성화하면 사용자 또는 다른 코드에서 인스턴스의 인스턴스 메타데이터에 액세스할 수 없습니다.

IMDS에는 인스턴스에 IPv4(169.254.169.254) 및 IPv6([fd00:ec2::254])이라는 두 개의 엔드포인트가 있습니다. IMDS를 활성화하면 IPv4 엔드포인트가 자동으로 활성화됩니다. IPv6 엔드포인트를 활성화하려면 명시적으로 활성화해야 합니다.

IMDS IPv6 엔드포인트: enabled | disabled

인스턴스에서 IPv6 IMDS 엔드포인트를 명시적으로 활성화할 수 있습니다. IPv6 엔드포인트가 활성화된 경우 IPv4 엔드포인트는 활성화된 상태로 유지됩니다. IPv6 엔드포인트는 AWS Nitro 시스템에 구축된 인스턴스에서만 지원됩니다.

메타데이터 버전: IMDSv1 or IMDSv2 (token optional) | IMDSv2 only (token required)

인스턴스 메타데이터를 요청할 때 IMDSv2를 직접 호출하려면 토큰이 필요합니다. IMDSv1 직접 호출에는 토큰이 필요하지 않습니다. IMDSv1 또는 IMDSv2 직접 호출(토큰은 선택 사항)을 허용하거나 IMDSv2 직접 호출만(토큰은 필수) 허용하도록 인스턴스를 구성할 수 있습니다.

메타데이터 응답 홉 제한: 164

홉 제한은 PUT 응답에 허용된 네트워크 홉 수입니다. 홉 제한을 최소 1 및 최대 64로 설정할 수 있습니다. 컨테이너 환경에서는 홉 제한을 2로 설정하는 것이 좋습니다. 자세한 내용은 고려 사항 단원을 참조하십시오.

인스턴스 메타데이터에서 태그에 대한 액세스: enabled | disabled

인스턴스 메타데이터에서 인스턴스의 태그에 대한 액세스를 활성화하거나 비활성화할 수 있습니다. 자세한 내용은 인스턴스 메타데이터의 인스턴스 태그 작업 단원을 참조하십시오.

인스턴스 메타데이터 옵션을 구성하는 위치

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

  • 계정 - 각 AWS 리전의 계정 수준에서 인스턴스 메타데이터 옵션의 기본값을 설정할 수 있습니다. 인스턴스가 시작되면 인스턴스 메타데이터 옵션이 계정 수준 값으로 자동 설정됩니다. 이러한 값은 시작할 때 변경할 수 있습니다. 계정 수준의 기본값은 기존 인스턴스에 영향을 주지 않습니다.

  • AMI - AMI를 등록하거나 수정할 때 imds-support 파라미터를 v2.0으로 설정할 수 있습니다. 이 AMI로 인스턴스를 시작하면 인스턴스 메타데이터 버전이 자동으로 IMDSv2로 설정되고 홉 제한은 2로 설정됩니다.

  • 인스턴스 - 시작할 때 인스턴스의 모든 인스턴스 메타데이터 옵션을 변경하여 기본 설정을 재정의할 수 있습니다. 실행 중이거나 중지된 인스턴스에서 시작 후 인스턴스 메타데이터 옵션을 변경할 수도 있습니다. 단, IAM 또는 SCP 정책에 따라 변경이 제한될 수 있습니다.

자세한 내용은 새 인스턴스에 대한 인스턴스 메타데이터 옵션 구성기존 인스턴스에 대한 인스턴스 메타데이터 옵션 수정 단원을 참조하세요.

인스턴스 메타데이터 옵션의 우선순위

각 인스턴스 메타데이터 옵션의 값은 계층적 우선순위에 따라 인스턴스를 시작할 때 결정됩니다. 계층 구조는 다음과 같습니다(맨 위의 우선순위가 가장 높음).

  • 우선순위 1: 시작 시 인스턴스 구성 - 시작 템플릿 또는 인스턴스 구성에서 값을 지정할 수 있습니다. 여기에 지정된 모든 값은 계정 수준 또는 AMI에서 지정된 값을 재정의합니다.

  • 우선순위 2: 계정 설정 - 인스턴스 시작 시 값을 지정하지 않은 경우 계정 수준 설정(각 AWS 리전에 대해 설정됨)에 따라 값이 결정됩니다. 계정 수준 설정은 각 메타데이터 옵션의 값을 포함하거나 기본 설정이 없음을 나타냅니다.

  • 우선순위 3: AMI 구성 - 인스턴스 시작 시 또는 계정 수준에서 값이 지정되지 않은 경우 AMI 구성에 따라 값이 결정됩니다. 이것은 HttpTokensHttpPutResponseHopLimit에만 적용됩니다.

각 메타데이터 옵션은 개별적으로 평가됩니다. 인스턴스는 직접 인스턴스 구성, 계정 수준 기본값 및 AMI의 구성을 혼합하여 구성할 수 있습니다.

IAM 또는 SCP 정책에 의해 변경이 제한되지 않는 한, 실행 중이거나 중지된 인스턴스에서 시작 후 모든 메타데이터 옵션의 값을 변경할 수 있습니다.

메타데이터 옵션 값 결정 - 예 1

이 예에서는 계정 수준에서 HttpPutResponseHopLimit1로 설정된 리전에서 EC2 인스턴스가 시작됩니다. 지정된 AMI에서 ImdsSupportv2.0으로 설정되었습니다. 시작할 때 인스턴스에서 직접 메타데이터 옵션이 지정되지 않습니다. 인스턴스는 다음 메타데이터 옵션으로 시작됩니다.

"MetadataOptions": { ... "HttpTokens": "required", "HttpPutResponseHopLimit": 1, ...

이러한 값은 다음과 같이 결정됩니다.

  • 시작 시 지정된 메타데이터 옵션 없음: 인스턴스를 시작하는 동안 인스턴스 시작 파라미터나 시작 템플릿에 메타데이터 옵션의 특정 값이 제공되지 않습니다.

  • 계정 설정이 다음 우선순위: 시작 시 지정된 특정 값이 없는 경우 리전 내 계정 수준의 설정이 우선됩니다. 즉, 계정 수준에서 구성된 기본값이 적용됩니다. 이 경우에는 HttpPutResponseHopLimit1로 설정되었습니다.

  • AMI 설정이 마지막 우선순위: 시작 시 또는 HttpTokens에 대한 계정 수준(인스턴스 메타데이터 버전)에서 특정 값이 지정되지 않은 경우 AMI 설정이 적용됩니다. 이 경우 AMI 설정 ImdsSupport: v2.0HttpTokensrequired로 설정되었음을 확인했습니다. AMI 설정 ImdsSupport: v2.0HttpPutResponseHopLimit: 2를 설정하도록 설계되었지만 우선순위가 더 높은 계정 수준 설정 HttpPutResponseHopLimit: 1로 재정의되었습니다.

메타데이터 옵션 값 결정 - 예 2

이 예에서 EC2 인스턴스는 이전 예 1과 동일한 설정으로 시작되지만 시작 시 인스턴스에서 HttpTokensoptional로 직접 설정되어 있습니다. 인스턴스는 다음 메타데이터 옵션으로 시작됩니다.

"MetadataOptions": { ... "HttpTokens": "optional", "HttpPutResponseHopLimit": 1, ...

HttpPutResponseHopLimit의 값은 예 1과 같은 방식으로 결정됩니다. 하지만 HttpTokens의 값은 다음과 같이 결정됩니다. 시작할 때 인스턴스에서 구성된 메타데이터 옵션이 우선 적용됩니다. AMI가 ImdsSupport: v2.0(즉, HttpTokensrequired로 설정됨)으로 구성되어 있더라도 시작 시 인스턴스에 지정된 값(HttpTokensoptional로 설정됨)이 우선됩니다.

인스턴스 메타데이터 버전 설정

인스턴스 시작 시 인스턴스 메타데이터 버전 값은 IMDSv1 or IMDSv2 (token optional) 또는 IMDSv2 only (token required)입니다.

인스턴스를 시작할 때 메타데이터 버전의 값을 수동으로 지정하거나 기본값을 사용할 수 있습니다. 값을 수동으로 지정하면 해당 값이 기본값을 재정의합니다. 값을 수동으로 지정하지 않는 경우 다음 테이블에 설명된 대로 기본 설정의 조합에 따라 값이 결정됩니다.

이 테이블에서는 시작 시 인스턴스의 메타데이터 버전(4번째 열의 결과 인스턴스 구성으로 표시됨)이 다양한 구성 수준의 설정에 따라 어떻게 결정되는지를 보여줍니다. 우선순위는 왼쪽에서 오른쪽 순서이며, 다음과 같이 첫 번째 열이 우선순위가 가장 높습니다.

  • 열 1: 시작 파라미터 - 시작 시 수동으로 지정하는 인스턴스의 설정을 나타냅니다.

  • 열 2: 계정 수준 기본값 - 계정 설정을 나타냅니다.

  • 열 3: AMI 기본값 - AMI의 설정을 나타냅니다.

시작 파라미터 계정 수준 기본값 AMI 기본값 결과 인스턴스 구성
V2 전용(토큰 필요) 기본 설정 없음 V2 전용 V2 전용
V2 전용(토큰 필요) V2 전용 V2 전용 V2 전용
V2 전용(토큰 필요) V1 또는 V2 V2 전용 V2 전용
V1 또는 V2(토큰 선택 사항) 기본 설정 없음 V2 전용 V1 또는 V2
V1 또는 V2(토큰 선택 사항) V2 전용 V2 전용 V1 또는 V2
V1 또는 V2(토큰 선택 사항) V1 또는 V2 V2 전용 V1 또는 V2
설정되지 않음 기본 설정 없음 V2 전용 V2 전용
설정되지 않음 V2 전용 V2 전용 V2 전용
설정되지 않음 V1 또는 V2 V2 전용 V1 또는 V2
V2 전용(토큰 필요) 기본 설정 없음 null V2 전용
V2 전용(토큰 필요) V2 전용 null V2 전용
V2 전용(토큰 필요) V1 또는 V2 null V2 전용
V1 또는 V2(토큰 선택 사항) 기본 설정 없음 null V1 또는 V2
V1 또는 V2(토큰 선택 사항) V2 전용 null V1 또는 V2
V1 또는 V2(토큰 선택 사항) V1 또는 V2 null V1 또는 V2
설정되지 않음 기본 설정 없음 null V1 또는 V2
설정되지 않음 V2 전용 null V2 전용
설정되지 않음 V1 또는 V2 null V1 또는 V2

IAM 조건 키를 사용하여 인스턴스 메타데이터 옵션 제한

다음과 같이 IAM 정책 또는 SCP에서 IAM 조건 키를 사용할 수 있습니다.

  • IMDSv2를 사용해야 하도록 구성된 경우에만 인스턴스를 시작하도록 허용

  • 허용된 홉 수 제한

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

참고

PowerShell 버전이 4.0 이전 버전인 경우 IMDSv2를 사용하려면 Windows Management Framework 4.0으로 업그레이드해야 합니다.

참고

작업을 조심스럽게 진행해야 하며 무엇이든 변경하기 전에 세심하게 테스트해야 합니다. 다음에 유의하세요.

  • IMDSv2를 사용해야 하도록 설정하면 인스턴스 메타데이터 액세스에 IMDSv1를 사용하는 애플리케이션이나 에이전트는 중단됩니다.

  • 인스턴스 메타데이터에 대한 모든 액세스를 끄면 인스턴스 메타데이터 액세스를 이용하여 작동하는 애플리케이션이나 에이전트는 중단됩니다.

  • IMDSv2의 경우 토큰을 검색할 때 /latest/api/token을 사용해야 합니다.