GCP入門:Workload Identity プールの作成

スポンサーリンク
GCP入門:Workload Identity プールの作成 環境構築
GCP入門:Workload Identity プールの作成
この記事は約6分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、Workload Identity プールの作成について解説しています。

スポンサーリンク

背景

Workload Identity プールの作成について調査する機会がありましたので、その時の内容を備忘として記事に残しました。

Workload Identity プールとは

Workload Identity プールはGoogle Cloud Platform (GCP) のセキュリティ機能の1つで、以下のような特徴があります:

  1. 目的:
    クラウド上のワークロード(アプリケーションやサービス)に、より安全で管理しやすい方法でGCPリソースへのアクセス権を付与するためのものです。
  2. 主な利点:
  • サービスアカウントキーの管理が不要になり、セキュリティリスクを低減できます。
  • 短期的な認証情報を使用するため、セキュリティが向上します。
  • クラウドプロバイダー間での一貫したアイデンティティ管理が可能になります。
  1. 仕組み:
  • 外部IDプロバイダー(例:AWS IAM)とGCPのサービスアカウントをマッピングします。
  • ワークロードは一時的な認証トークンを取得し、それを使用してGCPリソースにアクセスします。
  1. ユースケース:
  • マルチクラウド環境でのアプリケーション運用
  • Kubernetes上で動作するアプリケーションへのGCPリソースアクセス権付与
  • CI/CDパイプラインでのセキュアな認証
  1. 設定手順:
  • Workload Identity プールの作成
  • プロバイダーの設定
  • サービスアカウントとの関連付け
  • アプリケーション側での認証情報の取得と使用

Workload Identity プールは、特にマルチクラウド環境や近代的なアプリケーションアーキテクチャにおいて、セキュリティと管理性を向上させる重要な機能です。

手順

下記のコマンドで作成します。

gcloud iam workload-identity-pools create poc-terraform-pool \
    --location="global" \
    --description="PoC terraform cloud 連携"

gcloud iam workload-identity-pools providers create-oidc poc-terraform-20240715 \
  --location="global" \
  --workload-identity-pool="poc-terraform-pool" \
  --issuer-uri="https://app.terraform.io" \
  --attribute-mapping="google.subject=assertion.sub,attribute.terraform_workspace_name=assertion.terraform_workspace_name" \
  --attribute-condition="assertion.terraform_organization_name==\"terraform組織名\""

解説

これらのコマンドは、Google Cloud Platform (GCP) で Workload Identity プールを作成し、Terraform Cloud との連携のためのOIDCプロバイダーを設定するものです。各コマンドを詳しく解説します。

  1. Workload Identity プールの作成:
gcloud iam workload-identity-pools create poc-terraform-pool \
    --location="global" \
    --description="PoC terraform cloud 連携"
  • create poc-terraform-pool: “poc-terraform-pool” という名前の新しいWorkload Identity プールを作成します。
  • --location="global": プールをグローバルロケーションに作成します。
  • --description="PoC terraform cloud 連携": プールの説明を設定します。
  1. OIDCプロバイダーの作成:
gcloud iam workload-identity-pools providers create-oidc poc-terraform-20240715 \
  --location="global" \
  --workload-identity-pool="poc-terraform-pool" \
  --issuer-uri="https://app.terraform.io" \
  --attribute-mapping="google.subject=assertion.sub,attribute.terraform_workspace_name=assertion.terraform_workspace_name" \
  --attribute-condition="assertion.terraform_organization_name==\"terraform組織名\""
  • create-oidc poc-terraform-20240715: “poc-terraform-20240715” という名前のOIDCプロバイダーを作成します。
  • --location="global": プロバイダーをグローバルロケーションに作成します。
  • --workload-identity-pool="poc-terraform-pool": 先ほど作成したWorkload Identity プールに関連付けます。
  • --issuer-uri="https://app.terraform.io": Terraform CloudのIssuer URIを指定します。
  • --attribute-mapping=...: IDトークンの属性をGCP属性にマッピングします。
  • google.subject=assertion.sub: サブジェクトをマッピング
  • attribute.terraform_workspace_name=assertion.terraform_workspace_name: Terraformワークスペース名をマッピング
  • --attribute-condition="assertion.terraform_organization_name==\"Terraform組織名\"": Terraform組織名が “Terraform組織名” の場合のみ認証を許可する条件を設定します。

これらのコマンドにより、Terraform CloudからGCPリソースへのセキュアなアクセスが可能になります。Terraform Cloudで実行されるワークフローが、このWorkload Identity プールを通じてGCPリソースにアクセスできるようになります。

おわりに

今日は、 Workload Identity プールの作成について解説しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました