Google Cloud には、ワークロードに次の種類の ID が用意されています。
Workload Identity 連携と Workload Identity Federation for GKE を使用すると、ワークロードは外部 ID プロバイダ(IdP)で認証されたフェデレーション ID を使用して、ほとんどの Google Cloud サービスにアクセスできます。Google Cloud が ID をプリンシパルとして認証すると、プリンシパルは付与された IAM ロールを使用してリソースにアクセスできます。
Workload Identity 連携は、Google Cloud 上のワークロードまたは AWS、Azure、GitHub、GitLab などのプラットフォームで実行される外部ワークロードで使用できます。
GKE クラスタで実行されているワークロードで Workload Identity Federation for GKE を使用すると、Google Cloud リソースへのアクセス権を付与できます。
Google Cloud サービス アカウントは、本番環境でワークロードの ID として機能します。ワークロードへのアクセス権を直接付与するのではなく、サービス アカウントにアクセス権を付与し、ワークロードでサービス アカウントを ID として使用します。
マネージド ワークロード ID(プレビュー)を使用すると、厳密に証明された ID を Compute Engine ワークロードにバインドできます。マネージド ワークロード ID は、mTLS を使用してワークロード間の認証を行うことができますが、Google Cloud APIs に対する認証には使用できません。
ワークロードに使用できる ID の種類とその構成方法は、ワークロードの実行場所によって異なります。
Google Cloud 上のワークロード
Google Cloud でワークロードを実行している場合は、次の方法でワークロードの ID を構成できます。
- 接続されたサービス アカウント
- Workload Identity Federation for GKE(Google Kubernetes Engine で実行されるワークロードのみ)
- マネージド ワークロード ID(Compute Engine で実行されるワークロードのみ)
- サービス アカウント キー
接続されたサービス アカウント
一部の Google Cloud リソースでは、リソースがデフォルトの ID として使用するユーザー管理のサービス アカウントを指定できます。このプロセスは、サービス アカウントをリソースに「接続する」、またはサービス アカウントとリソースを「関連付ける」といいます。リソースで実行されているコードが Google Cloud のサービスとリソースにアクセスすると、そのリソースに関連付けられているサービス アカウントが ID として使用されます。たとえば、サービス アカウントを Compute Engine インスタンスに接続し、そのインスタンスのアプリケーションがクライアント ライブラリを使用して Google Cloud APIs を呼び出す場合、これらのアプリケーションは、認証と認可に接続されたサービス アカウントを自動的に使用します。
ほとんどの場合、リソースの作成時にリソース アカウントをサービス アカウントに関連付ける必要があります。リソースの作成後に、リソースに関連付けられているサービス アカウントを変更することはできません。Compute Engine インスタンスは例外です。必要に応じて、インスタンスに接続するサービス アカウントを変更できます。
詳細については、サービス アカウントをリソースに接続するをご覧ください。
Workload Identity Federation for GKE
GKE で実行されるワークロードの場合、Workload Identity Federation for GKE を使用すると、クラスタ内のアプリケーションごとに、個々のきめ細かいプリンシパル セットに対して IAM ロールを付与できます。Workload Identity Federation for GKE を使用すると、GKE クラスタ内の Kubernetes サービス アカウントが Workforce Identity 連携を使用して Google Cloud リソースに直接アクセスしたり、IAM サービス アカウントの権限を借用して間接的にアクセスできます。
リソースへの直接アクセスを使用すると、Google Cloud サービスのリソースで Kubernetes サービス アカウント ID に IAM ロールを直接付与できます。ほとんどの Google Cloud APIs は、リソースへの直接アクセスをサポートしています。ただし、ID 連携を使用すると、一部の API メソッドに制限が適用される場合があります。これらの制限の一覧については、サポートされているプロダクトと制限事項をご覧ください。
別の方法として、ワークロードでサービス アカウントの権限を借用することもできます。この場合、構成された Kubernetes ServiceAccount は IAM サービス アカウントにバインドされ、Google Cloud APIs へのアクセス時に ID として機能します。
Workload Identity Federation for GKE の詳細については、Workload Identity Federation for GKE をご覧ください。
マネージド ワークロード ID
マネージド ワークロード ID を使用すると、厳密に証明された ID を Compute Engine ワークロードにバインドできます。マネージド ワークロード ID は、mTLS を使用してワークロード間の認証を行うことができますが、Google Cloud APIs に対する認証には使用できません。
マネージド ワークロード ID の詳細については、マネージド ワークロード ID の概要をご覧ください。
Compute Engine ワークロードでマネージド ワークロード ID を使用する方法については、mTLS を使用してワークロード間で認証を行うをご覧ください。
外部ワークロード
Google Cloud の外部でワークロードを実行している場合は、次の方法でワークロードの ID を構成できます。
- Workload Identity 連携
- サービス アカウント キー
Workload Identity 連携
Workload Identity 連携を使用すると、AWS や Azure Active Directory などの外部 ID プロバイダの認証情報を使用して有効期間の短い認証情報を生成できます。ワークロードは、この認証情報を使用して、サービス アカウントの権限を一時的に権限できます。これにより、ワークロードはサービス アカウントを ID として Google Cloud リソースにアクセスできるようになります。
外部ワークロードの ID を構成する場合は、Workload Identity 連携を使用することをおすすめします。
Workload Identity 連携の詳細については、Workload Identity 連携をご覧ください。
サービス アカウント キー
サービス アカウント キーを使用すると、ワークロードでサービス アカウントとして認証を行い、サービス アカウントの ID で認可を行うことができます。
ローカルでの開発
ローカル環境で開発している場合は、認証と認可にユーザー認証情報またはサービス アカウントを使用するようにワークロードを構成できます。詳細については、認証ドキュメントのローカル開発環境をご覧ください。
次のステップ
- サービス アカウントを使用して認証を設定する方法を学習する。
- ローカル開発環境で認証を設定する方法を学習する。
- サービス アカウントにリソースへのアクセス権を付与する方法を学習する。