본문으로 건너뛰기

InstanceMetadata

1 EC2 Instance Metadata

  • EC2 인스턴스 메타데이터는 인스턴스에 대한 정보를 포함하는 데이터입니다.
  • 인스턴스 내부에서 HTTP 엔드포인트를 통해 액세스할 수 있습니다.
  • 이 데이터를 사용하여 인스턴스 자체 정보를 동적으로 조회할 수 있습니다.

2 주요 기능

2.1 메타데이터 엔드포인트

  • 인스턴스 내부에서 http://169.254.169.254/latest/meta-data/ 엔드포인트를 통해 접근합니다.
  • 이 엔드포인트는 인스턴스에 대한 다양한 정보를 제공합니다.
  • 예를 들어, 인스턴스 ID, AMI ID, 호스트 이름, 보안 그룹 등 다양한 속성을 조회할 수 있습니다.

2.2 유스 케이스

  • 구성 스크립트: 인스턴스 시작 시 초기화 스크립트에서 인스턴스 메타데이터를 사용하여 인스턴스를 구성할 수 있습니다.
    • 예: 사용자 데이터 스크립트에서 메타데이터를 사용하여 애플리케이션 설정
  • 애플리케이션 설정: 애플리케이션이 실행 중인 인스턴스의 정보를 필요로 할 때 메타데이터를 조회하여 동적으로 설정을 변경할 수 있습니다.
    • 예: 인스턴스 역할에 따라 애플리케이션 설정 변경
  • 모니터링 및 로깅: 인스턴스의 상태나 설정을 모니터링하고 로그에 기록할 때 메타데이터를 사용합니다.
    • 예: 로그 파일에 인스턴스 ID 포함

3 메타데이터 카테고리

3.1 인스턴스 정보

  • Instance ID: 인스턴스의 고유 식별자
  • AMI ID: 인스턴스가 시작된 Amazon Machine Image (AMI)의 ID
  • Instance Type: 인스턴스의 유형 (예: t2.micro, m5.large)
  • Host Name: 인스턴스의 호스트 이름

3.2 네트워크 정보

  • Public IPv4: 인스턴스의 공인 IP 주소
  • Private IPv4: 인스턴스의 사설 IP 주소
  • MAC Address: 인스턴스의 네트워크 인터페이스 MAC 주소
  • Security Groups: 인스턴스에 적용된 보안 그룹 목록

4 보안 고려사항

  • 인스턴스 메타데이터는 중요한 정보를 포함하고 있으므로, 접근을 제한해야 합니다.
  • 최신 버전의 메타데이터 서비스(IMDSv2)를 사용하여 보안을 강화할 수 있습니다.
    • IMDSv2는 세션 토큰을 요구하여, 메타데이터 접근 시 추가적인 보안 계층을 제공합니다.
  • IAM 역할을 사용하여 인스턴스의 메타데이터 접근을 제어할 수 있습니다.

5 IMDSv1 vs. IMDSv2

  • Amazon EC2 Instance Metadata Service에는 두 가지 버전, IMDSv1과 IMDSv2가 있습니다.
  • 이 두 버전은 EC2 인스턴스에 대한 메타데이터 접근 방법을 제공합니다.

5.1 IMDSv1

  • HTTP GET 요청: IMDSv1은 단순한 HTTP GET 요청을 통해 메타데이터를 제공합니다.
  • 사용 편의성: IMDSv1은 간단한 접근 방식으로 사용이 편리합니다.
  • 보안 취약점: 보안 취약점이 존재하여, 메타데이터 URL이 노출되면 임의의 사용자나 애플리케이션이 접근할 수 있습니다.
  • 사용 예시: curl http://169.254.169.254/latest/meta-data/

5.2 IMDSv2

  • HTTP PUT 및 세션 토큰 사용: IMDSv2는 보안을 강화하기 위해 세션 기반 접근 방식을 사용합니다. 클라이언트는 HTTP PUT 요청으로 세션 토큰을 얻은 후, 해당 토큰을 사용하여 HTTP GET 요청을 통해 메타데이터에 접근합니다.
  • 보안 강화: 세션 토큰을 사용함으로써 메타데이터 접근을 더욱 안전하게 관리할 수 있습니다. 세션 토큰은 제한된 시간 동안만 유효합니다.
  • 하위 호환성: IMDSv1과의 하위 호환성을 유지하면서도 보안 수준을 높입니다.
  • 사용 예시:
    1. 세션 토큰 생성: TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
    2. 메타데이터 요청: curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/

5.3 IMDSv1 vs. IMDSv2 비교

5.3.1 보안

  • IMDSv1: HTTP GET 요청만으로 접근 가능하여 보안 취약점이 있습니다.
  • IMDSv2: 세션 토큰을 사용하여 보안을 강화합니다. 토큰이 있어야만 메타데이터에 접근할 수 있습니다.

5.3.2 접근 방식

  • IMDSv1: 단순 HTTP GET 요청으로 메타데이터에 접근합니다.
  • IMDSv2: 세션 토큰을 얻기 위한 HTTP PUT 요청 후, HTTP GET 요청으로 메타데이터에 접근합니다.

5.3.3 사용 편의성

  • IMDSv1: 사용이 매우 간단합니다.
  • IMDSv2: 초기 설정이 약간 복잡하지만, 보안이 강화됩니다.

5.3.4 하위 호환성

  • IMDSv1: 기존 애플리케이션에서 바로 사용 가능합니다.
  • IMDSv2: 하위 호환성을 제공하지만, 보안 강화를 위해 약간의 코드 변경이 필요할 수 있습니다.

6 결론

  • EC2 인스턴스 메타데이터는 인스턴스의 다양한 정보를 제공하여, 설정, 모니터링, 애플리케이션 구성 등에 유용합니다.
  • 보안을 강화하기 위해 IMDSv2를 사용하는 것이 권장됩니다.
  • 새로운 애플리케이션에서는 IMDSv2를 사용하고, 기존 애플리케이션도 가능한 한 IMDSv2로 마이그레이션하는 것이 좋습니다.
  • 이를 통해 EC2 인스턴스의 메타데이터 접근을 보다 안전하게 관리할 수 있습니다.