Google Cloud の BigQuery にあるデータを PowerBI で扱い、データ活用に使いたいというニーズはあるかと思います。
BigQuery は、Google が提供するフルマネージドのデータウェアハウスサービスで、大規模なデータセットに対して高速なクエリ処理が可能です。
一方、PowerBI は、Microsoft が提供するビジネスインテリジェンス(BI)ツールで、直感的な操作でデータの可視化やレポート作成ができます。
BigQuery と連携することで、異なる種類のデータの可視化や分析に強い力を発揮すると考えられます。
そこで本記事では、Workforce Identity 連携を使って Azure EntraID(旧 Azure AD)と連携し、安全に PowerBI から BigQuery に接続する方法をご紹介します。
これにより既存の ID、会社の Azure EntraID(会社管理のユーザーアカウント)を利用できるようになります。
特に、多くの企業で既に Azure EntraID を利用している場合、既存の ID 基盤を活用できるため、導入のハードルが低く、セキュリティポリシーの一貫性も保てます。
この記事では、Azure EntraID と Google Cloud の Workforce Identity 連携を設定し、PowerBI から BigQuery に安全に接続する手順を追っていきたいと思います。
参考リンク
設定を行うにあたり、下記のドキュメントが大変参考になります。
手順
Azure の設定
Entra ID でアプリの登録を作成する〜クライアントシークレットの発行
Azure 環境にログインし「アプリの登録」ページから新しいアプリを作成します。

作成後、「証明書またはシークレットの追加」を選択し「クライアントシークレット」を作成します。
その際に、必ずクライアントシークレットの「値」を控えます。この値は作成時に一度しか表示されないことに注意が必要です。

APIのアクセス許可の構成を作成する
作成したアプリ画面の「管理」から「APIのアクセス許可」を選択します。
APIの選択画面が開きますので、「Microsoft Graph」を選びます。
その後、「アプリケーションの許可」を選択すると、許可する権限の検索画面が表示されるので、以下のように設定します。
アクセス許可の選択で「User.ReadBasic.All」を検索し「アクセス許可の追加」をします。
もう一度「APIのアクセス許可」を選択し「GroupMember.Read.All」を検索して「アクセス許可の追加」をします。
構成されたアクセス許可に「User.Read」、「GroupMember.Read.All」、「User.ReadBasic.All」の 3 つの許可が付与された状態になっていれば正しいです。
後続の設定に必要な値を控える
以下に列挙する値を控えます
- アプリケーション(クライアント)ID
- ディレクトリ(テナント)ID
- OpenID Connect メタデータ ドキュメントの「v2.0/」まで
- クライアントシークレットの値
アプリケーション ID とディレクトリ ID はそれぞれ、該当アプリの「概要」ページから、OpenID Connect メタデータドキュメントは「概要」ページの「エンドポイント」から取得できます。
Azure のエンタープライズアプリケーション設定
Azure の画面で「エンタープライズアプリケーション」と検索し、サービスの画面に移動します。
前述の手順で作成した「アプリの登録」と同名の「エンタープライズアプリケーション」が存在するので、それを選択して設定を進めていきます。
ここでは、Workforce Identity を使ってログインできるユーザーを限定するために、エンタープライズアプリケーションにユーザーを追加し、割り当ての必要を有効にします。
「ユーザーとグループ」を選択し、「ユーザーまたはグループの追加」をクリックして、設定画面に移動します。
「ユーザーとグループ」を選択し、検索ボックスから追加したいユーザー名(グループ名)を検索します。検索候補に出てきた該当のユーザー(グループ)にチェックを入れて「選択」を押します。
ユーザー(グループ)が選択された状態だと「割り当て」が押せるようになります。「割り当て」を押すことで選択したユーザー(グループ)がエンタープライズアプリケーションに追加されます
割り当て後、ユーザー(グループ)が追加されていることが確認できます。
また、追加したユーザー(グループ)のオブジェクト ID は後の設定に必要となるので、控えておく必要があります。
Google Cloud の設定
Workforce Identity プールの作成
Workforce Identity プールは組織レベルで作成します。
作成には次の gcloud コマンドを実行します。
gcloud iam workforce-pools create WORKFORCE_POOL_ID \
--organization=ORGANIZATION_ID \
--display-name="DISPLAY_NAME" \
--description="DESCRIPTION" \
--session-duration=SESSION_DURATION \
--location=global
-
WORKFORCE_POOL_ID: Google Cloud Workforce プールを表す ID です。4~32 文字で、小文字英数字とハイフン(-)が使用できます。
gcp-で始まる名前は使用できません -
ORGANIZATION_ID: Workforce Identity プールを作成する組織の ID です
-
DISPLAY_NAME(省略可): Workforce Identity プールの表示名です
-
DESCRIPTION(省略可): Workforce Identity プールの説明です
-
SESSION_DURATION(省略可): Workforce プールの Google Cloud アクセス トークン、コンソールログイン セッション、gcloud CLI ログイン セッションの有効期間を決める値です。15 分(900 秒)~12 時間(43,200 秒)で指定し、デフォルトは 1 時間(3600 秒)です。指定には
3600sのように秒数+sで指定します
組織の ID が以下の画面のように確認できます。
プロジェクト選択の「すべて」の中で種類が「組織」になっているオブジェクトの ID が該当します。
Workforce Identity プール プロバイダを作成する
注意として、2025 年 12 月現在においてこのユースケースでは、プロパイダの作成は cli で行う必要があります。
コンソールからでは「--web-sso-response-type=id-token」と「--extra-attributes-client-secret-value」の組み合わせが実現できません。
gcloud iam workforce-pools providers create-oidc WORKFORCE_PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=global \
--display-name=DISPLAY_NAME \
--issuer-uri=ISSUER_URI \
--client-id=https://analysis.windows.net/powerbi/connector/GoogleBigQuery \
--attribute-mapping=ATTRIBUTE_MAPPING \
--web-sso-response-type=id-token \
--web-sso-assertion-claims-behavior=only-id-token-claims \
--extra-attributes-issuer-uri=APP_ISSUER_URI \
--extra-attributes-client-id=APP_CLIENT_ID \
--extra-attributes-client-secret-value=APP_CLIENT_SECRET \
--extra-attributes-type=EXTRA_GROUPS_TYPE \
--extra-attributes-filter=EXTRA_FILTER \
--detailed-audit-logging
- WORKFORCE_PROVIDER_ID: このプロパイダの一意の ID。接頭辞
gcp-は予約されているため、ここでは使用できません - WORKFORCE_POOL_ID: 先に作成した Workforce Identity プール ID
- DISPLAY_NAME: プロバイダのわかりやすい表示名(省略可)
- ISSUER_URI: 発行元 URI の値(
https://sts.windows.net/TENANT_IDの形式)。TENANT_IDの部分は、Azure 側で控えたアプリの「テナント ID」に置き換わります - ATTRIBUTE_MAPPING: グループのマッピングと、必要な場合は Microsoft Entra のクレームから Google Cloud 属性に対応する、その他の属性マッピング(例:
google.groups=assertion.groups,google.subject=assertion.sub) - APP_ISSUER_URI: Azure 側の設定で控えた、「OpenID Connect メタデータドキュメントの「v2.0/」まで」の URI に相当します
- APP_CLIENT_ID: Azure 側の設定で控えた、アプリケーション(クライアント)ID
- APP_CLIENT_SECRET: Azure 側でアプリの登録の際に作成した「クライアントシークレットの値」に相当します
- EXTRA_GROUPS_TYPE: グループ ID のタイプ。次のいずれかになります。
- azure-ad-groups-mail: グループのメールアドレス(例:
admin-group@altostrat.com) - azure-ad-groups-id: グループを表す UUID(例:
abcdefgh-0123-0123-abcdef)
- azure-ad-groups-mail: グループのメールアドレス(例:
- EXTRA_FILTER: IdP から渡される特定のアサーションをリクエストするために使用されるフィルタ
これらを設定することで、Workforce Identity のプール内にプロパイダが作成されます。
IAM ポリシーの設定
ここでは必要な IAM ポリシーの作成と権限の作成をします。
gcloud projects add-iam-policy-binding BIGQUERY_PROJECT_ID \
--role="roles/bigquery.dataViewer" \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
上記のコマンドは、指定したプロジェクト ID において、WIF プール経由で認証したユーザーのうち、Azure AD のグループ ID が GROUP_ID であるユーザーの集合に対して、BigQuery のデータを閲覧する権限(bigquery.dataViewer)を付与するという意味です。
- BIGQUERY_PROJECT_ID: BigQuery のデータとメタデータが保存されているプロジェクト ID
- WORKFORCE_POOL_ID: Workforce Identity プールの ID
- GROUP_ID: グループ ID。Workforce Identity プール プロバイダの作成に使用された --extra-attributes-type の値によって指定するものが異なる
- azure-ad-groups-mail: グループのメールアドレス(例:
admin-group@altostrat.com) - azure-ad-groups-id: グループを表す UUID(例:
abcdefgh-0123-0123-abcdef)
- azure-ad-groups-mail: グループのメールアドレス(例:
また今回の目的のためには追加で必要な権限が 3 つあり、最終的には以下の 4 つの権限が必要です。
- BigQuery Connection User BigQuery が外部データソースへ接続するための「接続情報」を利用する際に必要
- BigQuery ジョブユーザー Power BI からクエリを実行する際、BigQuery 内で「クエリジョブ」を作成して処理するため、その作成権限が必要
- BigQuery データ閲覧者 クエリジョブの実行後、実際にテーブルのデータを読み取り、その結果を取得するために必要
- Service Usage ユーザー Power BI が BigQuery API 自体を利用するために必要
Power BI での設定
Power BI Web から BigQuery への接続の作成
Power BI Web の画面で「作成」から「データの取得」を選択します。
「データソースの選択」画面で「Google BigQuery(Microsoft Entra ID)」を選択します。
接続の作成画面では「課金プロジェクト ID」と「対象ユーザーの URI」を入力します。
対象ユーザー URI は以下の形式になります。
//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
- WORKFORCE_POOL_ID: 作成した Workforce プールの ID です
- WORKFORCE_PROVIDER_ID: 作成した Workforce プールプロバイダの ID です
接続名を入力して、サインインしていない場合はサインインしてください。EntraID でのサインインが行われます。
問題がなければ「次へ」が押せるようになります。
接続の作成に成功すると、以下の画面のように BigQuery のデータが参照可能になります。
「レポートの作成」を押すと、選択した BigQuery テーブルのデータをソースにしてセマンティックモデルとレポートが作成できます。
まとめ
本記事では、Workforce Identity 連携を使用して Azure EntraID と Google Cloud を連携し、Power BI から BigQuery へ安全に接続する方法を解説しました。
この構成が解決する課題
マルチクラウド環境でデータを活用する際、以下のような課題に直面することがあります:
- アカウント管理の複雑化: クラウドごとに異なるアカウントを発行・管理する必要がある
- セキュリティリスク: 個別のアカウント管理により、退職者のアクセス権削除漏れなどが発生しやすい
- 導入コスト: 新しい ID 管理の仕組みを追加で構築する必要がある
Workforce Identity 連携により、既に利用している Azure EntraID をそのまま活用できるため、これらの課題を解決できます。
得られるメリット
- 既存 ID 基盤の活用: 企業で既に運用している Azure EntraID のアカウントをそのまま使用可能
- 一元的なアクセス管理: Azure 側でのユーザー管理で、Google Cloud リソースへのアクセスも制御できる
- セキュリティの向上: 統合認証により、アカウントのライフサイクル管理が一元化され、セキュリティリスクが低減
設定は複数のステップに分かれますが、一度構築すれば組織全体で安全にクロスクラウドのデータ活用が実現できます。データ分析の際の手法の 1 つとしてお役に立てれば幸いです!
















