よっしー
こんにちは。よっしーです(^^)
今日は、Workload Identity プールの作成について解説しています。
背景
Workload Identity プールの作成について調査する機会がありましたので、その時の内容を備忘として記事に残しました。
Workload Identity プールとは
Workload Identity プールはGoogle Cloud Platform (GCP) のセキュリティ機能の1つで、以下のような特徴があります:
- 目的:
クラウド上のワークロード(アプリケーションやサービス)に、より安全で管理しやすい方法でGCPリソースへのアクセス権を付与するためのものです。 - 主な利点:
- サービスアカウントキーの管理が不要になり、セキュリティリスクを低減できます。
- 短期的な認証情報を使用するため、セキュリティが向上します。
- クラウドプロバイダー間での一貫したアイデンティティ管理が可能になります。
- 仕組み:
- 外部IDプロバイダー(例:AWS IAM)とGCPのサービスアカウントをマッピングします。
- ワークロードは一時的な認証トークンを取得し、それを使用してGCPリソースにアクセスします。
- ユースケース:
- マルチクラウド環境でのアプリケーション運用
- Kubernetes上で動作するアプリケーションへのGCPリソースアクセス権付与
- CI/CDパイプラインでのセキュアな認証
- 設定手順:
- 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プロバイダーを設定するものです。各コマンドを詳しく解説します。
- 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 連携"
: プールの説明を設定します。
- 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 プールの作成について解説しました。
よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント