IMDS エミュレータを有効にする

このページでは、AWS インスタンス メタデータ サービス(IMDS)をエミュレートする IMDS エミュレータを有効にする方法について説明します。エミュレータをサイドカーとして実行すると、GKE on AWS のノードプールで以前のワークロードを実行できます。Workload Identity を直接サポートしていない以前のワークロードがある場合は、このエミュレータを使用して 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 エミュレータを有効にするには、Pod のメタデータにラベルとアノテーションを追加します。Deployment、DaemonSet、または Pod を作成するその他のリソースを使用してエミュレータを有効にすることもできます。

  1. 次のラベルと値を Pod に追加します。

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

    このラベルで許容される値は True のみです。他のすべての値(小文字の t で始まる true を含む)を使用すると、エミュレータが無効になります。

  2. 次のアノテーションを Pod に追加します。

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

    ARN_ROLE は、リソースに必要なロールを指定する Amazon リソース名(ARN)に置き換えます。

次の例は、IMDS エミュレータが有効になっている Pod です。

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