ビュー:
プロファイル適用性: レベル2
GKEメタデータサーバを実行することで、ワークロードが機密性の高いインスタンスメタデータにアクセスするのを防ぎ、ワークロードアイデンティティを容易にします。
すべてのノードはメタデータをメタデータサーバに保存します。このメタデータの一部、例えばkubelet認証情報やVMインスタンスのアイデンティティトークンは機密性が高く、Kubernetesワークロードに公開されるべきではありません。GKEメタデータサーバを有効にすると、ホストネットワークで実行されていないポッドがこのメタデータにアクセスするのを防ぎ、Workload Identityを容易にします。
指定されていない場合、デフォルト設定では、実行中のポッドがノードの基盤となるメタデータサーバに完全にアクセスできるようになります。
注意
注意
デフォルトでは、実行中のポッドはノードの基盤となるメタデータサーバへの完全なアクセス権を持ちます。

影響

Workload Identityを使用する場合、GKE Metadata Serverを実行する必要があります。Workload IdentityはMetadata Concealmentを使用する必要がなくなるため、これら2つのアプローチは互換性がありません。GKE Metadata ServerとWorkload Identityが有効になっている場合、Podがホストネットワーク上で実行されていない限り、PodはCompute Engineのデフォルトサービスアカウントを使用できません。
ワークロードがGKEドキュメントのアイデンティティとして記載されているワークロードアイデンティティを使用するためには、修正が必要になる場合があります。

監査

Google Cloud Consoleを使用する
  1. Google Cloud コンソール Kubernetes Engine ページ にアクセスして Kubernetes Engine に移動します
  2. クラスタのリストから、対象のクラスタの名前をクリックし、クラスタ内の各ノードプールについて、詳細ペインを開き、GKEメタデータサーバが有効になっていることを確認してください。
コマンドラインを使用する
クラスター内の各ノードプールに対してGKEメタデータサーバが有効かどうかを確認するには、クラスター名、ロケーション、プロジェクトの3つの変数を定義し、次のコマンドを実行します。
gcloud container clusters describe $CLUSTER_NAME --location $LOCATION -- project $PROJECT_ID --format json | jq '.nodePools[].config.workloadMetadataConfig' 
 
各ノードプールに対して次の結果を返す必要があります。
{ 
      "mode": "GKE_METADATA" 
} 
GKEメタデータサーバが有効でない場合、Null ({ }) が返されます。

修復

GKEメタデータサーバは、クラスターでWorkload Identityを有効にする必要があります。クラスターを変更してWorkload Identityを有効にし、GKEメタデータサーバを有効にしてください。
Google Cloud Consoleを使用する
  1. Google Cloud コンソール Kubernetes Engine ページ にアクセスして Kubernetes Engine に移動します
  2. クラスターのリストから、Workload Identityが無効になっているクラスターを選択してください。
  3. DETAILSペインのセキュリティサブセクションまでスクロールしてください。
  4. Edit Workload Identityと名付けられた鉛筆アイコンをクリックし、ポップアップウィンドウでEnable Workload Identityをクリックし、ドロップダウンボックスからワークロードプールを選択します。デフォルトでは、クラスタを含むクラウドプロジェクトの名前空間になります。例: <project_id>.svc.id.goog。
  5. 変更を保存をクリックし、クラスターの更新を待ちます。
  6. クラスターが更新されたら、クラスターの詳細ページ内で各ノードプールを選択してください。
  7. 各ノードプールについて、ノードプール詳細ページ内のEDITを選択します。
  8. [ノードプールの編集] ペインで、[GKEメタデータサーバを有効にする] チェックボックスをオンにします。
  9. 保存をクリック。
コマンドラインを使用する
gcloud container clusters update <cluster_name> --identity- namespace=<project_id>.svc.id.goog
既存のノードプールには影響がありません。新しいノードプールはデフォルトで--workload-metadata-from-node=GKE_METADATA_SERVERになります。
既存のノードプールを変更してGKEメタデータサーバを有効にするには:
gcloud container node-pools update <node_pool_name> --cluster=<cluster_name> --workload-metadata-from-node=GKE_METADATA_SERVER
ワークロードがGKEドキュメントのアイデンティティとして記載されているワークロードアイデンティティを使用するためには、修正が必要になる場合があります。