IMDS 에뮬레이터 사용 설정

이 페이지에서는 AWS 인스턴스 메타데이터 서비스(IMDS)를 에뮬레이션하는 IMDS 에뮬레이터를 사용 설정하는 방법을 설명합니다. 에뮬레이터를 사이드카로 실행하여 기존 워크로드를 AWS용 GKE 노드 풀에서 실행할 수 있습니다. 워크로드 아이덴티티를 직접 지원하지 않는 기존 워크로드가 있는 경우 이 에뮬레이터를 사용하여 IMDS 데이터에 액세스하세요.

제한사항

  • 클러스터는 Kubernetes 버전 1.24 이상을 사용해야 합니다.
  • 에뮬레이터는 GKE on AWS의 이전 세대에서 지원되지 않습니다.
  • IMDS 에뮬레이터 서버는 사용자 인증 정보 요청(API_VERSION/meta-data/iam/security-credentials/)만 처리합니다. 다른 모든 메타데이터 요청은 404 오류를 반환합니다.
  • 사이드카 배포를 위해서는 init 컨테이너에 NET_ADMINNET_RAW 보안 컨텍스트 용량이 있어야 합니다. 컨테이너에 이러한 컨텍스트가 있는지 확실하지 않으면 보안팀에 문의하세요.
  • AWS STS 토큰은 1시간 동안 지속될 수 있습니다. EC2 메타데이터의 역할 토큰은 24시간 동안 지속될 수 있습니다. 에뮬레이터 사용에는 영향을 미치지 않지만 보안 감사를 수행할 때 이 정보를 알아야 할 수도 있습니다.
  • IMDS 에뮬레이터는 IMDSv1 응답만 에뮬레이션합니다. IMDSv2는 지원되지 않습니다.

에뮬레이터 사용 설정

IMDS 에뮬레이터를 사용 설정하려면 포드의 메타데이터에 라벨과 주석을 추가합니다. 배포, DaemonSet 또는 포드를 만드는 다른 리소스를 사용하여 에뮬레이터를 사용 설정할 수도 있습니다.

  1. 다음 라벨과 값을 포드에 추가합니다.

    gkemulticloud.googleapis.com/aws-imds-emulator-enabled: "True"
    

    이 라벨에 사용할 수 있는 유일한 값은 True입니다. 다른 모든 값(소문자 t가 있는 true 포함)은 에뮬레이터를 사용 중지합니다.

  2. 포드에 다음 주석을 추가합니다.

    gkemulticloud.googleapis.com/aws-imds-emulator-role-arn: ARN_ROLE
    

    ARN_ROLE을 리소스에 부여하려는 역할을 지정하는 Amazon 리소스 이름(ARN)으로 바꿉니다.

다음 예시는 IMDS 에뮬레이터가 사용 설정된 포드입니다.

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    gkemulticloud.googleapis.com/aws-imds-emulator-enabled: "True"
  annotations:
    gkemulticloud.googleapis.com/aws-imds-emulator-role-arn: "arn:aws:iam::123456789012:role/my-example-role"
spec:
 serviceAccountName: my-sa
 containers:
 - name: nginx
   image: nginx