メインコンテンツまでスキップ

GCP向けOIDC

OIDCトークンをBitriseビルド中に生成し、Google Cloud Platform(GCP)のスコープ付きアクセストークンと交換します。

GCPでOIDCトークンを使用するには、次の操作が必要です。

  • ワークロードIDプールを作成します。
  • IDプールにGoogleサービスアカウントを接続します。

Bitriseでは、Get OIDC Identity TokenStepまたはAuthenticate with Google Cloud Platform(GCP)Stepのいずれかを使用してトークンを取得できます。

ワークロードIDプールの作成Click to copy link​

Workload Identity Federationを有効にするには、GCPでワークロードIDプールを作成します。

Workload Identity Federation

Workload Identity Federationを使用した認証の仕組みについて詳しくは、GCPのGoogle公式ドキュメントをご覧ください。

  1. Google Cloudコンソールで、IAM & Adminに移動し、次にWorkload Identity Federationを選択します。

  2. Create an identity poolセクションで、次のフィールドに値を入力します。

    • Name: プールの名前です。この名前はプールIDとして使用され、後から変更できません。
    • Description: プールの目的です。
  3. Add a provider to poolで、Bitriseをプロバイダとして追加します。

    • Select a providerフィールドで、OpenID Connect(OIDC)を選択します。
    • Provider name: 名前を入力します。わかりやすくするため、Bitriseの使用をお勧めします。
    • Issuer URL: https://token.builds.bitrise.io.
    • Audience: SelectAllowed audience。トークンを使用する際、GCPは許可されたaudienceがaudクレームにエンコードされたaudienceと一致するかを確認します。Bitriseでは、OIDCサービスを提供するStepsでaudienceを設定できます: Fetching and exchanging tokens with GCP.
  4. Continueをクリックします。

  5. Configure provider attributesで、必要な属性マッピングの値を設定します:

    • google.subjectキーは、ユーザーの一意の識別子です。assertion.subを使用して、トークンをリクエストしたビルドを特定できます。
    • attribute.NAME形式を使用すると、最大50個のカスタム属性を追加でき、各属性の値はassertion.VALUE形式で指定します。利用可能な属性の一覧は、Bitriseトークン内にあります: Information in the OIDC token.
    明示的なマッピングが必要です

    使用したいすべての属性をマッピングする必要があります。Googleでは、明示的にマッピングされた属性のみを使用できます。詳しくはGoogleのドキュメントの属性マッピングをご覧ください。

  6. 必要に応じて、属性条件を追加します。サービスアカウントを作成する際に、プールレベルで属性に基づいてIDトークンを直接フィルタリングすることもできます。

ワークロードIDプールへのGoogleサービスアカウントの接続Click to copy link​

GCPサービスでOIDC認証を使用するには、ワークロードIDプールをGoogleサービスアカウントに接続する必要があります。これには次の作業が含まれます:

  • サービスアカウントの作成。
  • サービスアカウントの権限借用を使用したIDプールへのアクセス許可の付与。

サービスアカウントの作成Click to copy link​

  1. Google Cloudコンソールで、IAM & Adminに移動し、次にService accountsを選択します。

  2. Create service accountをクリックします。

  3. 表示名、一意のサービスアカウントID、説明を追加します。

  4. Create and continueをクリックします。

  5. 権限で、必要なall rolesを追加します。

    IAM conditions

    必要に応じて、Add IAM conditionをクリックすることで、先ほどマッピングした属性値に基づいてIAM conditionsを追加できます。

  6. Doneをクリックします。

ワークロードIDプールへのアクセス許可の付与Click to copy link​

  1. Google Cloudコンソールで、IAM & Adminに移動し、次にWorkload Identity Federationを選択します。

  2. 自分のIDプールを選択します。

  3. Grant accessをクリックします。

  4. Grant access using service account impersonationオプションを選択します。

  5. 作成したservice accountを選択します。

  6. プリンシパル(サービスアカウントにアクセスできるID)を選択します。

    利用可能なオプションは、IDプールのプロバイダ属性マッピングにあるキーに限定されます。たとえば、属性マッピングgoogle.subject=assertion.subを使用する場合、Attribute nameをsubjectに、Attribute valueをsubに設定します。利用可能な値は、Bitriseトークン内で確認できます:

  7. Saveをクリックします。

  8. ダイアログで、Bitrise OIDCトークン用に作成したプロバイダを選択します。

  9. OIDCのIDトークンパス:https://token.builds.bitrise.ioを追加し、形式をtextに設定します。

  10. Download configをクリックし、アクセス可能な場所にファイルを保存します。

GCPでのトークンの取得と交換Click to copy link​

ワークロードIDプールの設定とGoogleサービスアカウントへの接続が完了すると、BitriseビルドはGCPとトークンを交換できるようになります。次のいずれかの方法を使用できます:

  • Authenticate with GCP Stepを使用して、プロセス全体を処理します。
  • Get OIDC Identity Token Stepでトークンを取得し、スクリプトで認証情報の交換を行います。
OIDCトークン内の情報

Bitriseは、OIDCトークンに次のクレームを含めます: Information in the OIDC token.

Authenticate with GCP Stepの使用Click to copy link​

  1. BitriseでWorkflow Editorを開きます。

  2. Authenticate with GCP StepをWorkflowに追加します。

  3. Client configとToken audienceの入力を設定します:

    • token audienceは、Google Cloudでワークロードのプールを設定する際に設定した許可されたaudienceと一致させる必要があります。
    • Client configの入力は、プロセスの最後にダウンロードしたファイルを指す必要があります。

Get OIDC Identity token Stepの使用Click to copy link​

  1. BitriseでWorkflow Editorを開きます。

  2. Get OIDC Identity Token StepをWorkflowに追加します。

  3. BITRISE_IDENTITY_TOKEN環境変数を使用します: ファイルに書き込み、client library configuration fileを更新して、その環境変数を含むファイルを参照するようにします。これはScriptStepで設定できます:

    tmpfile="$(mktemp)"
    printf '%s' "$BITRISE_IDENTITY_TOKEN" > "$tmpfile"

    # Replace the token path in client library configuration

    gcloud auth login --cred-file=/path/to/updated-client-library-config.json
    gcloud auth list

    その後、gcloud CLIが自動的にそれらを検出して使用します。CLIを介したあらゆる操作が問題なく動作します。