プロファイル適用性: レベル2
GKEメタデータサーバを実行することで、ワークロードが機密のインスタンスメタデータにアクセスするのを防ぎ、Workload Identityを容易にします。
各ノードはメタデータをメタデータサーバに保存します。このメタデータの一部、例えばkubelet認証情報やVMインスタンスのアイデンティティトークンは機密性が高く、Kubernetesワークロードに公開すべきではありません。GKEメタデータサーバを有効にすると、ホストネットワーク上で実行されていないポッドがこのメタデータにアクセスするのを防ぎ、Workload
Identityを容易にします。
指定されていない場合、デフォルト設定では、実行中のポッドがノードの基礎となるメタデータサーバへの完全なアクセスを許可します。
![]() |
注意デフォルトでは、実行中のポッドはノードの基盤となるメタデータサーバへのフルアクセス権を持ちます。
|
影響
Workload Identityを使用する場合、GKEメタデータサーバを実行する必要があります。Workload Identityはメタデータの隠蔽を使用する必要がなくなるため、この2つのアプローチは互換性がありません。
GKEメタデータサーバとワークロードアイデンティティが有効になっている場合、Podがホストネットワーク上で実行されていない限り、PodはCompute Engineのデフォルトサービスアカウントを使用できません。
ワークロードアイデンティティを使用するために、ワークロードの修正が必要になる場合があります。詳細については、GKE ドキュメントを参照してください。
監査
Google Cloud Consoleを使用する:
- Kubernetes Engine のウェブサイトにアクセスしてください。
- クラスターのリストから、目的のクラスター名をクリックしてください。
- クラスター内の各ノードプールについて、[詳細] ペインを開き、GKEメタデータサーバが
Enabled
に設定されていることを確認してください。
コマンドラインの使用:
クラスター内の各ノードプールに対してGKEメタデータサーバが有効かどうかを確認するには、次のコマンドを実行してください。
gcloud container clusters describe <cluster_name> --zone <cluster_zone> -- format json | jq .nodePools[].config.workloadMetadataConfig
これは各ノードプールに対して次の結果を返す必要があります:
{ "mode": "GKE_METADATA" }
GKEメタデータサーバが有効でない場合、
{ }
はNullを返します。修復
GKEメタデータサーバは、クラスターでWorkload Identityを有効にする必要があります。クラスターを変更してWorkload Identityを有効にし、GKEメタデータサーバを有効にしてください。
Google Cloud Consoleを使用する:
- Kubernetes Engine のウェブサイトにアクセスしてください。
- クラスタのリストから、ワークロードアイデンティティが無効になっているクラスタを選択してください。
- [詳細]ペインの下にあるセキュリティサブセクションに移動します。
- [Edit Workload Identity]という名前の鉛筆アイコンをクリックし、ポップアップウィンドウで[Enable Workload Identity]をクリックし、ドロップダウンボックスからワークロードプールを選択します。デフォルトでは、クラスタを含むクラウドプロジェクトの名前空間になります。例:
<project_id>.svc.id.goog.
- [SAVE CHANGES]をクリックし、クラスタが更新されるのを待ちます。
- クラスターが更新されたら、クラスターの詳細ページ内の各ノードプールを選択してください。
- 各ノードプールについて、ノードプール詳細ページ内で[EDIT]を選択してください。
- [Edit node pool]ペイン内で、[Enable GKE Metadata Server]チェックボックスをオンにします。
- [保存] をクリックします。
コマンドラインの使用:
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 ドキュメントを参照してください。