Mengaktifkan emulator IMDS

Halaman ini menjelaskan cara mengaktifkan emulator IMDS, yang mengemulasi layanan metadata instance AWS (IMDS). Anda dapat menjalankan emulator sebagai file bantuan untuk menjalankan workload lama di GKE pada node pool AWS. Jika Anda memiliki beban kerja lama yang tidak secara langsung mendukung Workload Identity, gunakan emulator ini untuk mengakses data IMDS.

Batasan

  • Cluster Anda harus menggunakan Kubernetes versi 1.24 atau yang lebih baru.
  • Emulator tidak didukung di GKE generasi sebelumnya di AWS.
  • Server emulator IMDS hanya menayangkan permintaan kredensial (API_VERSION/meta-data/iam/security-credentials/). Semua permintaan metadata lainnya akan menampilkan error 404.
  • Deployment file bantuan mengharuskan container init memiliki kapasitas konteks keamanan NET_ADMIN dan NET_RAW. Jika tidak yakin apakah container tersebut memiliki konteks tersebut, hubungi tim keamanan Anda.
  • Token AWS STS dapat bertahan selama satu jam. Token peran dari metadata EC2 dapat bertahan selama 24 jam. Hal ini tidak akan memengaruhi penggunaan emulator, tetapi Anda mungkin perlu mengetahui informasi ini selama audit keamanan.
  • Emulator IMDS hanya mengemulasi respons IMDSv1. IMDSv2 tidak didukung.

Mengaktifkan emulator

Untuk mengaktifkan emulator IMDS, tambahkan label dan anotasi ke metadata untuk Pod. Anda juga dapat mengaktifkan emulator menggunakan Deployment, DaemonSet, atau resource lain yang membuat Pod:

  1. Tambahkan label dan nilai berikut ke Pod Anda:

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

    Satu-satunya nilai yang dapat diterima untuk label ini adalah True. Semua nilai lainnya (termasuk true dengan t huruf kecil) akan menonaktifkan emulator.

  2. Tambahkan anotasi berikut ke Pod Anda:

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

    Ganti ARN_ROLE dengan Amazon Resource Name (ARN) yang menentukan peran yang Anda inginkan untuk resource.

Contoh

Contoh berikut adalah Pod dengan emulator IMDS diaktifkan:

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