Workload Identity (WIF)は、クラスタのワークロードが Kubernetes サービス アカウントで外部クラウド リソースにアクセスできるようにするメカニズムです。WIF は、GKE 接続クラスタ内で実行されているアプリケーションが Google Cloud サービスにアクセスする場合におすすめの方法です。クラスタを登録すると、GKE 接続クラスタ API が WIF に必要なすべてのインフラストラクチャを作成し、一般公開または限定公開のいずれかの OIDC 発行者を使用するクラスタをサポートします。
Connect やテレメトリー エージェントなど、Google Cloud に接続し直すすべての GKE Enterprise サービスは、Workload Identity を使用します。
Kubernetes サービス アカウントと Workload Identity
Pod が実行されると、それは Kubernetes サービス アカウントを使用して、クラスタ内でホストされているリソースへのアクセスを承認します。WIF を使用することで、Pod は同じ Kubernetes サービス アカウント(KSA)を使用して、クラスタの外部でホストされているリソースにアクセスするための有効期間が短いトークンを取得します。
WIF には、クラスタ内部の OIDC ID プロバイダと Google Cloud IAM などの外部リソース プロバイダの間の信頼関係が必要です。接続クラスタを登録すると、登録プロセスは、Google Cloud プロジェクトにバインドされているデフォルトの Workload Identity プールにクラスタの OIDC サービスを追加することで、この信頼関係を自動的に作成します。
この Workload Identity プールは、Google プロジェクトの信頼できる ID プロバイダのプールで、PROJECT_ID.svc.id.goog
という名前です。ここで、PROJECT_ID
は、接続クラスタに関連付けられている Google プロジェクト ID です。
通常の Google Cloud IAM ポリシーを使用して、Kubernetes サービス アカウントによる Google Cloud サービスへのアクセスを制御できます。Kubernetes サービス アカウント プリンシパルは、Workload Identity プール内の KSA を表します。これらの形式は次のとおりです。
serviceAccount:WORKLOAD_IDENTITY_POOL_NAME[KSA_NAMESPACE/KSA_NAME]
Kubernetes サービス アカウントにロールを付与するには、次のコマンドを使用します。
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_ID.svc.id.goog[KSA_NAMESPACE/KSA_NAME]" \
--role=IAM_ROLE
次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID
- KSA_NAMESPACE: このサービス アカウントが存在するクラスタの名前空間
- KSA_NAME: アクセス許可を付与する Kubernetes サービス アカウントの名前
- IAM_ROLE: この KSA に付与する Google Cloud ロール