Microsoft Entra ID の認証で Google Cloud Console へログインしてみる
ウィスキー、シガー、パイプをこよなく愛する大栗です。
企業で Google Cloud のサービスを利用する場合には ID 管理を Google の Cloud Identity で行うことが一般的ですが、それ以外の ID プロバイダーを利用することもできます。今回は Entra ID で Google Cloud Console にログインする構成を試してみます。
Google Cloud の ID 連携
Google Cloud では外部の ID プロバイダの認証を連携して、リソースを操作することができます。連携の対象によって、Workforce Identity Federation や Workload Identity Federation を利用します。Workforce Identity Federation は人間のユーザーを連携して、Workload Identity Federation はプログラムなどのマシン ワークロードを連携します。
今回は Cloud Console へログインすることを目的とするので、Workforce Identity Federation を使用して Entra ID と連携します。
似た機能として、GCDS(Google Cloud Directory Sync)や Directory Sync(名称がややこしい。。。)という機能もあります。こちらは Microsoft Active Directory などに保存されたオブジェクトを Cloud Identity へ同期する機能です。GCDS はソフトウェアをインストールして Active Directory や OpenLDAP などの LDAP 準拠のディレクトリがサポートされています。Directory Sync はクラウドベースのソリューションで Microsoft Active Directory と Microsoft Entra ID がサポートされています。なお Directory Sync は現在 Public Beta の状態です。
やってみる
ID プロバイダーを Microsoft Entra ID として、Workforce Identity Federation で Cloud Console へログインするまでをやってみます。
基本的には以下のドキュメントの手順を元に実施します。
Configure Workforce Identity Federation with Microsoft Entra ID and sign in users
前提
以下のような前提で操作します。
- Entra ID のテナントがあり、管理しているユーザーが存在している
- OpenID Connect で連携する
- Google Cloud プロジェクトは組織に属している
- 操作する Google Cloud ユーザーには組織への IAM 従業員プール管理者(
roles/iam.workforcePoolAdmin
)が付与されている
Entra ID アプリケーションの作成
Microsoft Entra 管理センターにログインして、[Entra ID] - [アプリの登録] へ移動して 新規登録
をクリックします。
名前に任意の名称を入力して、サポートされているアカウントの種類で この組織ディレクトリのみに含まれるアカウント (既定のディレクトリ のみ - シングル テナント)
を選択して、リダイレクト URI のプラットフォームで Web
を選択して https://auth.cloud.google/signin-callback/locations/global/workforcePools/<WORKFORCE_POOL_ID>/providers/<WORKFORCE_PROVIDER_ID>
の形式で URI を入力して 登録
をクリックします。
URI のパラメータは以下となります。4〜32 文字で [a-z0-9-] の文字を含められます。プレフィックスの gcp-
は Google で予約されています。
- WORKFORCE_POOL_ID : Workforce Identity プールを作成するときに使用する ID
- WORKFORCE_PROVIDER_ID : Workforce Identity プール プロバイダを作成するときに使用する ID
登録したアプリケーションの [トークン構成] で グループ要求の追加
をクリックします。
Google Cloud へ連携させるグループを選択して 追加
をクリックします。本エントリではセキュリティ グループを連携します。
Workforce Identity プールの作成
Google Cloud Console で対象の組織の [IAM と管理] - [Workforce Identity の連携] へ移動して プールを作成
をクリックします。
名前に「Entra ID アプリケーションの作成」で設定した WORKFORCE_POOL_ID
の値を入力します。もしプール ID が異なる値になった場合には編集をクリックして WORKFORCE_POOL_ID
の値を入力します。説明に任意の内容を入力して 次へ
をクリックします。
Entra ID Workforce Identity プール プロバイダの作成
Microsoft Entra 管理センターで登録したアプリケーションの [概要] の エンドポイント
をクリックします。
OpenID Connect メタデータドキュメント
をコピーします。
OpenID Connect メタデータドキュメント
の URL のレスポンスの JSON から issuer
の値をコピーします。ここでは cURL と jq で取り出す例を表示します。
curl <OpenID Connect メタデータドキュメント> -s | jq -r .issuer
https://login.microsoftonline.com/1a2b3c4d-1234-abcd-1234-1a2b3c4d5e6f/v2.0
Microsoft Entra 管理センターで登録したアプリケーションの [概要] の アプリケーション(クライアント) ID
をコピーします。
[証明書とシークレット] - [クライアント シークレット] で 新しいクライアント シークレット
をクリックします。
クライアント シークレットの説明と有効期限を設定して、追加
をクリックします。
クライアント シークレットの値をコピーします。作成直後を除き、クライアント シークレットの値を表示できないので注意してください。
Google Cloud Console で対象の組織の [IAM と管理] - [Workforce Identity の連携] へ移動して、作成したプールを選択します。プロバイダの Add provider
をクリックします。
認証プロトコルで OpenID Connect(OIDC)
を選択して、名前に「Entra ID アプリケーションの作成」で設定した WORKFORCE_PROVIDER_ID
の値を入力します。もしプール ID が異なる値になった場合には編集をクリックして WORKFORCE_PROVIDER_ID
の値を入力します。必要に応じて説明を入力します。発行元(URL)に OpenID Connect メタデータドキュメントの issuer の値を入力して、クライアント ID に Microsoft Entra 管理センターで登録したアプリケーションの アプリケーション(クライアント) ID を入力して、
続行` をクリックします。
フロータイプで Code
を選択して、アサーション クレームの動作で User info and ID token
を選択して、クライアント シークレットに Microsoft Entra 管理センターで登録したアプリケーションの [証明書とシークレット] のクライアント シークレットの値を入力して、続行
をクリックします。
マッピングを追加
をクリックして項目を 2 個追加して、以下のように入力します。必要に応じて詳細なロギングを有効にして 送信
をクリックします。
- 1 行目
- Google 1 :
google.subject
(入力済み) - OIDC 1 :
assertion.sub
- Google 1 :
- 2 行目
- Google 2 :
google.groups
- OIDC 2 :
assertion.groups
- Google 2 :
- 3 行目
- Google 3 :
google.display_name
- OIDC 3 :
assertion.preferred_username
- Google 3 :
Google Cloud リソースへのアクセス管理
Entra ID のユーザーに対して、グループ単位で権限を付与します。
gcloud CLI で以下のように操作します。--member
オプションを変更すると、権限の付与対象を単一のユーザーや所属部署などに変更可能です。以下のコマンドでは ストレージ管理者
権限を与えています。
- <TEST_PROJECT_ID> : プロジェクト ID
- <WORKFORCE_POOL_ID> : Workforce Identity プールを作成するときに使用する ID
- <GROUP_ID> : マッピングされた Entra ID のグループ
$ gcloud projects add-iam-policy-binding <TEST_PROJECT_ID> \
--role="roles/storage.admin" \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/<WORKFORCE_POOL_ID>/group/<GROUP_ID>"
Updated IAM policy for project [<TEST_PROJECT_ID>].
bindings:
- members:
- principalSet://iam.googleapis.com/locations/global/workforcePools/entra-id-20250917/group/Federation-Group-1
role: roles/storage.admin
etag: A1b2C3d4E5f6
version: 1
Google Cloud へのアクセス確認
実際に Google Cloud Console へアクセスして確認を行います。
Google Cloud Console で対象の組織の [IAM と管理] - [Workforce Identity の連携] へ移動して Workforce Identity プール プロバイダのログイン URL をコピーして、ブラウザでアクセスします。
ログインする Entra ID のユーザーを入力します。
パスワードを入力します。
承諾
をクリックします。
これで Entra ID を使って Gogle Cloud Console へログインできました。
さいごに
IT システムのユーザー管理に Entra ID を使用している企業が多いと思います。Google Cloud にも ID プロバイダーの Cloud Identity がありますが、二重管理を避けるために一つの ID プロバイダーでシングル・サインオンをすることが望まれます。そのような要件の場合には本エントリーが役に立つかと思われます。
この次は、本エントリーを前提として Entra ID で Google Agentspace を使う内容のブログを書こうと思います。