コンテンツにスキップ

Google Cloud Workload Identity Federation の設定

Google Cloud Workload Identity Federation(WIF)を使用すると、サービスアカウントキーやその他のシークレットを使わずに、AikidoにGoogle Cloudプロジェクトをスキャンさせることができます。

Workload Identity Federation のプールとプロバイダーを設定することで、AikidoはAikido固有の認証情報をお使いのGCP環境で有効な認証情報と交換できるようになります。これらの認証情報は短命でどこにも保存されないため、この方式ははるかに安全であり、各種コンプライアンス要件にも準拠しています。

WIFについての詳細はGoogle Cloudのドキュメントをご参照ください。

Workload Identity Federation を使う理由

Section titled “Workload Identity Federation を使う理由”
  • 長期間有効なサービスアカウントキーを排除できます。
  • キーのローテーションとシークレット管理を簡素化します。
  • より厳格なコンプライアンスおよびセキュリティ要件を満たします。

Workload Identity Federation は、Google Cloud オンボーディングウィザードの「Configure Access」ステップでオプションとして利用できます。

Aikido の GCP オンボーディングにおける Service Account と Workload Identity Federation の選択

Aikidoは、お使いのGoogle Cloudプロジェクトに Workload Identity プールとプロバイダーをセットアップするために必要なCLIコマンドを提供します。

他の方法でWIFを設定したい場合、以下の情報が必要になります。

  • プロバイダー: AWS(これによりAikidoはAWS IAM認証情報をGCP認証情報と交換できます)
  • AWSアカウントID: 881830977366(Aikidoが認証情報交換を開始するAWSアカウントです)
  • 属性マッピング(これらはAWSのデフォルトマッピングです):
    • google.subject = assertion.arn
    • attribute.aws_role = assertion.arn.contains('assumed-role') ? assertion.arn.extract('{account_arn}assumed-role/') + 'assumed-role/' + assertion.arn.extract('assumed-role/{role_name}/') : assertion.arn

Aikido AWSアカウントのすべてのプリンシパルに対してではなく、必要な特定のAikido IAMロールにのみアクセスを許可します。

Aikido IAMロール用のプリンシパルを組み立てる方法は以下の通りです。

principalSet://iam.googleapis.com/projects/ + <your_project_number> + /locations/global/workloadIdentityPools/ + <your_wif_pool> + /attribute.aws_role/arn:aws:sts:: + <aikido_aws_acocunt_id> + :assumed-role/ + <aikido_aws_role_name>

Aikidoは、プロジェクトまたは組織レベルで以下の権限を必要とします。

  • Aikidoロール lambda-gcp-cloud-findings-role-1muvqxle に対する Viewer/Reader(Readerが利用可能な場合はそちらを推奨)および Security Reviewer
  • 以下のための Artifact Registry Viewer:
    • Artifact RegistryのコンテナイメージをAikidoにスキャンさせたい場合は、Aikidoロール lambda-container-image-scanner-role-pb0qotst に対して。
    • または、Artifact Registry Vulnerability Scanningの検出結果のみをAikidoに取り込ませたい場合は、Aikidoロール lambda-gcp-cloud-findings-role-1muvqxle に対して。

Workload Identity Federation のプールとプロバイダー、およびIAM権限の設定が完了したら、Aikidoにアップロードする設定ファイルを生成します。推奨されるよりシンプルな方法は(サービスアカウントのなりすましではなく)直接アクセスです。

直接アクセスを使用したGoogle Cloud WIF設定ファイルの生成

  • すでに接続済みのGCPプロジェクトをサービスアカウントからWIFに移行できますか?

はい。アプリ内の手順に従ってプロジェクトでWIFを設定し、オンボーディングを完了する代わりに、生成された設定ファイルで、すでに接続済みのGCPプロジェクトの認証情報を更新してください。

  • 既存のWIFプールを使用できますか?

はい、既存のWIFプールの1つに新しいプロバイダーを追加できます。既存のプール名を使用するようCLIコマンドを調整する必要があります。

  • WIFプロバイダーに属性条件も設定すべきですか?

すでに(WIFプール全体ではなく)特定のAikidoプリンシパルにのみアクセスを許可しているため、属性条件の重要性は低くなります。ただし、自社のポリシーで必須とされている場合は、前述の2つのIAMロールに対して条件を追加できます。

  • サービスアカウントのなりすましを使ってアクセスを設定できますか?

はい、直接アクセスの方がシンプルですが可能です。すべての外部IDがサービスアカウントを介して動作することを組織で義務付けている場合はなりすましを使用してください。サービスアカウントを作成し、前述のAikidoプリンシパルがそれをなりすませるようにし(roles/iam.workloadIdentityUser)、必要なIAM権限を付与した上で、そのサービスアカウント用の設定ファイルを生成できます。

サービスアカウント用の設定ファイルの生成

  • これに対応するTerraformモジュールはありますか?

あります。こちらから入手できます: https://github.com/AikidoSec/gcp-onboarding-terraform-module。プロジェクト用と組織用の2種類のバリエーションがあります。