Google Cloud Platform (GCP) の外部で実行されているアプリケーションまたはコンピューティング ワークロードは、サービス アカウントとして認証し、認証にサービス アカウントの ID を使用できます。このようなサービス アカウントのなりすましは、ワークロード ID フェデレーション サービスによって提供されます。このサービスを使用すると、外部 ID プロバイダ (IdP) の認証情報を使用して、一時的にサービス アカウントとして識別される外部アプリケーションまたはワークロードが GCP の外部から Google Cloud サービスおよびリソースにアクセスするために使用できる短期の一時的な認証情報 (トークン) を生成できます。

詳細については、「ワークロード ID フェデレーション」を参照してください。

外部 ID を編成および管理するには、ワークロード ID プールを作成する必要があります。ワークロード ID プールは、外部 ID の論理コンテナです。
注: ベスト プラクティスとして、GCP 環境でプールを隔離します。たとえば、開発環境用の 1 つの GCP ワークロード ID プールと、本番環境用の個別の隔離されたプールなどです。

以下は、ワークロード ID フェデレーション サービスを介して Google サービス アカウントになりすますアプリケーションの基本的なフローです。Carbon Black コンソール アプリケーションによる Google サービス アカウントの段階的なりすまし。

前提条件

CEL 式を熟知していることを確認します。詳細については、「属性マッピング」を参照してください。

手順

  1. Google Cloud コンソールで、ワークロード ID フェデレーションを検索し、関連するドロップダウン メニューから選択します。
    [ワークロード ID プール] 画面が IAM および管理者カテゴリの下に表示されます。
  2. [プールの作成] をクリックします。
  3. 手順 1 の ID プールを作成し、ワークロード ID プールの名前を入力します。
    コンソールは、入力した名前に基づいて ID を生成します。
  4. オプション。ID を編集します。
    ID プールを作成すると、ID を変更できなくなります。
  5. オプション。プールの説明を入力します。
    例えば、 Carbon Black Cloud の統合などです。
    ワークロード ID プールの作成についての詳細。
  6. 変更内容を保存するには、[続行] をクリックします。
  7. 手順 2 で、プロバイダをプールに追加 し、[プロバイダを選択] ドロップダウン メニューをクリックして、[AWS] を選択します。
  8. Carbon Black Cloud パブリック クラウド サービスが実行されているプロバイダの名前と AWS アカウントを入力します。
  9. [続行] をクリックします。
  10. 手順 3 の「プロバイダ属性の構成」で、外部トークンから Google STS トークン属性の値を取得する方法を定義するには、[マッピングの編集] をクリックして属性マッピングを追加します。
    セキュリティ トークン サービスは、Google またはサードパーティの認証情報を Google Cloud リソースへの一時的なアクセス トークンと交換します。
    1. [Google 2] テキスト フィールドに、カスタム トークン属性 (attribute.aws_role) を入力します。
    2. [AWS 1][AWS 2] テキスト フィールドの両方に、抽出する想定ロールの名前または抽出する ID の ARN を指定する抽出式を入力します。
      assertion.arn.contains('assumed-role') ? assertion.arn.extract('{account_arn}assumed-role/') + 'assumed-role/' + assertion.arn.extract('assumed-role/{role_name}/') : assertion.arn
  11. 属性条件セクションで、[Condition CEL]true に設定します。
  12. ID プールを作成するには、[保存] をクリックします。
  13. ID フェデレーション プールを Google Cloud サービス アカウントに関連付けるには、 [アクセス権を付与] をクリックします。
  14. [サービス アカウントへのアクセス権を付与] パネルで、[サービス アカウント] ドロップダウン メニューをクリックし、以前に作成したサービス アカウントを選択します。
    アクセス権を付与し、その権限を使用して Google Cloud リソースにアクセスするサービス アカウント。
  15. 「プリンシパルの選択」セクションで、[フィルタに一致する ID のみ] オプションを選択し、AWS ロールを設定します。
    1. [属性名] ドロップダウン メニューから [aws_role] を選択します。
    2. aws_role の属性値を入力します。
      構文 arn:aws:sts::<aws_id>:assumed-role/<role_name> に従います。ここで、AWS ID は 132308400445 となり、想定ロール名 <role_name> はリージョンに応じて次のいずれかになります。
      オプション 説明
      USA mcs2-app-prd5use1-pub-cloud-gcp-service-role
      ヨーロッパ (eu-west-2) mcs2-app-prd1ew2-pub-cloud-gcp-service-role
      ヨーロッパ (eu-central-1) mcs2-app-prd1ec1-pub-cloud-gcp-service-role
      シドニー mcs2-app-prd1apse2-pub-cloud-gcp-service-role
      東京 mcs2-app-prd1apne1-pub-cloud-gcp-service-role
  16. [アプリケーションの構成] ポップアップで、関連するドロップダウン メニューから ID プロバイダの名前を選択します。
    例えば、 CBC コンソール AWS プロバイダなどです。
  17. [構成のダウンロード] ボタンをクリックします。
    Carbon Black Cloud コンソールは、ダウンロードした構成 JSON ファイルを使用して Google Cloud にアクセスします。