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を使用した認証の仕組みについて詳しくは、GCPのGoogle公式ドキュメントをご覧ください。
-
Google Cloudコンソールで、IAM & Adminに移動し、次にWorkload Identity Federationを選択します。
-
Create an identity poolセクションで、次のフィールドに値を入力します。
- Name: プールの名前です。この名前はプールIDとして使用され、後から変更できません。
- Description: プールの目的です。
-
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.
-
Continueをクリックします。
-
Configure provider attributesで、必要な属性マッピングの値を設定します:
google.subjectキーは、ユーザーの一意の識別子です。assertion.subを使用して、トークンをリクエストしたビルドを特定できます。attribute.NAME形式を使用すると、最大50個のカスタム属性を追加でき 、各属性の値はassertion.VALUE形式で指定します。利用可能な属性の一覧は、Bitriseトークン内にあります: Information in the OIDC token.
明示的なマッピングが必要です使用したいすべての属性をマッピングする必要があります。Googleでは、明示的にマッピングされた属性のみを使用できます。詳しくはGoogleのドキュメントの属性マッピングをご覧ください。
-
必要に応じて、属性条件を追加します。サービスアカウントを作成する際に、プールレベルで属性に基づいてIDトークンを直接フィルタリングすることもできます。
ワークロードIDプールへのGoogleサービスアカウントの接続Click to copy link
GCPサービスでOIDC認証を使用するには、ワークロードIDプールをGoogleサービスアカウントに接続する必要があります。これには次の作業が含まれます:
- サービスアカウントの作成。
- サービスアカウントの権限借用を使用したIDプールへのアクセス許可の付与。
サービスアカウントの作成Click to copy link
-
Google Cloudコンソールで、IAM & Adminに移動し、次にService accountsを選択します。
-
Create service accountをクリックします。
-
表示名、一意のサービスアカウントID、説明を追加します。
-
Create and continueをクリックします。
-
権限で、必要なall rolesを追加します。
IAM conditions必要に応じて、Add IAM conditionをクリックすることで、先ほどマッピングした属性値に基づいてIAM conditionsを追加できます。
-
Doneをクリックします。
ワークロードIDプールへのアクセス許可の付与Click to copy link
-
Google Cloudコンソールで、IAM & Adminに移動し、次にWorkload Identity Federationを選択します。
-
自分のIDプールを選択します。
-
Grant accessをクリックします。
-
Grant access using service account impersonationオプションを選択します。
-
作成したservice accountを選択します。
-
プリンシパル(サービスアカウントにアクセスできるID)を選択します。
利用可能なオプションは、IDプールのプロバイダ属性マッピングにあるキーに限定されます。たとえば、属性マッピング
google.subject=assertion.subを使用する場合、Attribute nameをsubjectに、Attribute valueをsubに設定します。利用可能な値は、Bitriseトークン内で確認できます: -
Saveをクリックします。
-
ダイアログで、Bitrise OIDCトークン用に作成したプロバイダを選択しま す。
-
OIDCのIDトークンパス:https://token.builds.bitrise.ioを追加し、形式をtextに設定します。
-
Download configをクリックし、アクセス可能な場所にファイルを保存します。
GCPでのトークンの取得と交換Click to copy link
ワークロードIDプールの設定とGoogleサービスアカウントへの接続が完了すると、BitriseビルドはGCPとトークンを交換できるようになります。次のいずれかの方法を使用できます:
- Authenticate with GCP Stepを使用して、プロセス全体を処理します。
- Get OIDC Identity Token Stepでトークンを取得し、スクリプトで認証情報の交換を行います。
Bitriseは、OIDCトークンに次のクレームを含めます: Information in the OIDC token.
Authenticate with GCP Stepの使用Click to copy link
-
BitriseでWorkflow Editorを開きます。
-
Authenticate with GCP StepをWorkflowに追加します。
-
Client configとToken audienceの入力を設定します:
- token audienceは、Google Cloudでワークロードのプールを設定する際に設定した許可されたaudienceと一致させる必要があります。
- Client configの入力は、プロセスの最後にダウンロードしたファイルを指す必要があります。
Get OIDC Identity token Stepの使用Click to copy link
-
BitriseでWorkflow Editorを開きます。
-
Get OIDC Identity Token StepをWorkflowに追加します。
-
BITRISE_IDENTITY_TOKEN環境変数を使用します: ファイルに書き込み、client library configuration fileを更新して、その環境変数を含むファイルを参照するようにします。これはScriptStepで設定できます:
tmpfile="$(mktemp)"printf '%s' "$BITRISE_IDENTITY_TOKEN" > "$tmpfile"# Replace the token path in client library configurationgcloud auth login --cred-file=/path/to/updated-client-library-config.jsongcloud auth listその後、gcloud CLIが自動的にそれらを検出して使用します。CLIを介したあらゆる操作が問題なく動作します。