プロファイル適用性: レベル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を使用する
- Google Cloud コンソール Kubernetes Engine ページ にアクセスして Kubernetes Engine に移動します
- クラスタのリストから、対象のクラスタの名前をクリックし、クラスタ内の各ノードプールについて、詳細ペインを開き、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を使用する
- Google Cloud コンソール Kubernetes Engine ページ にアクセスして Kubernetes Engine に移動します
- クラスターのリストから、Workload Identityが無効になっているクラスターを選択してください。
- DETAILSペインのセキュリティサブセクションまでスクロールしてください。
- Edit Workload Identityと名付けられた鉛筆アイコンをクリックし、ポップアップウィンドウでEnable Workload Identityをクリックし、ドロップダウンボックスからワークロードプールを選択します。デフォルトでは、クラスタを含むクラウドプロジェクトの名前空間になります。例: <project_id>.svc.id.goog。
- 変更を保存をクリックし、クラスターの更新を待ちます。
- クラスターが更新されたら、クラスターの詳細ページ内で各ノードプールを選択してください。
- 各ノードプールについて、ノードプール詳細ページ内のEDITを選択します。
- [ノードプールの編集] ペインで、[GKEメタデータサーバを有効にする] チェックボックスをオンにします。
- 保存をクリック。
コマンドラインを使用する
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ドキュメントのアイデンティティとして記載されているワークロードアイデンティティを使用するためには、修正が必要になる場合があります。
