13
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerBI と BigQuery の接続を Workforce Identity 連携で行う!

Last updated at Posted at 2025-12-04

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 環境にログインし「アプリの登録」ページから新しいアプリを作成します。
azure_image1.png

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

APIのアクセス許可の構成を作成する

作成したアプリ画面の「管理」から「APIのアクセス許可」を選択します。

azure_image3.png

APIの選択画面が開きますので、「Microsoft Graph」を選びます。

azure_image4.png

その後、「アプリケーションの許可」を選択すると、許可する権限の検索画面が表示されるので、以下のように設定します。

azure_image5.png

アクセス許可の選択で「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_image6.png
azure_image7.png

Azure のエンタープライズアプリケーション設定

Azure の画面で「エンタープライズアプリケーション」と検索し、サービスの画面に移動します。
前述の手順で作成した「アプリの登録」と同名の「エンタープライズアプリケーション」が存在するので、それを選択して設定を進めていきます。

ここでは、Workforce Identity を使ってログインできるユーザーを限定するために、エンタープライズアプリケーションにユーザーを追加し、割り当ての必要を有効にします。

azure_image8.png

「ユーザーとグループ」を選択し、「ユーザーまたはグループの追加」をクリックして、設定画面に移動します。

azure_image9.png

「ユーザーとグループ」を選択し、検索ボックスから追加したいユーザー名(グループ名)を検索します。検索候補に出てきた該当のユーザー(グループ)にチェックを入れて「選択」を押します。

azure_image10.png

ユーザー(グループ)が選択された状態だと「割り当て」が押せるようになります。「割り当て」を押すことで選択したユーザー(グループ)がエンタープライズアプリケーションに追加されます

azure_image11.png

割り当て後、ユーザー(グループ)が追加されていることが確認できます。

azure_image12.png

また、追加したユーザー(グループ)のオブジェクト ID は後の設定に必要となるので、控えておく必要があります。

azure_image13.png

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 が該当します。

gc_image1.png

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
  • 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

また今回の目的のためには追加で必要な権限が 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 の画面で「作成」から「データの取得」を選択します。

pbi_image1.png

「データソースの選択」画面で「Google BigQuery(Microsoft Entra ID)」を選択します。

pbi_image2.png

接続の作成画面では「課金プロジェクト 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 です

pbi_image3.png

接続名を入力して、サインインしていない場合はサインインしてください。EntraID でのサインインが行われます。
問題がなければ「次へ」が押せるようになります。

pbi_image4.png

接続の作成に成功すると、以下の画面のように BigQuery のデータが参照可能になります。

pbi_image5.png

「レポートの作成」を押すと、選択した BigQuery テーブルのデータをソースにしてセマンティックモデルとレポートが作成できます。

まとめ

本記事では、Workforce Identity 連携を使用して Azure EntraID と Google Cloud を連携し、Power BI から BigQuery へ安全に接続する方法を解説しました。

この構成が解決する課題

マルチクラウド環境でデータを活用する際、以下のような課題に直面することがあります:

  • アカウント管理の複雑化: クラウドごとに異なるアカウントを発行・管理する必要がある
  • セキュリティリスク: 個別のアカウント管理により、退職者のアクセス権削除漏れなどが発生しやすい
  • 導入コスト: 新しい ID 管理の仕組みを追加で構築する必要がある

Workforce Identity 連携により、既に利用している Azure EntraID をそのまま活用できるため、これらの課題を解決できます。

得られるメリット

  • 既存 ID 基盤の活用: 企業で既に運用している Azure EntraID のアカウントをそのまま使用可能
  • 一元的なアクセス管理: Azure 側でのユーザー管理で、Google Cloud リソースへのアクセスも制御できる
  • セキュリティの向上: 統合認証により、アカウントのライフサイクル管理が一元化され、セキュリティリスクが低減

設定は複数のステップに分かれますが、一度構築すれば組織全体で安全にクロスクラウドのデータ活用が実現できます。データ分析の際の手法の 1 つとしてお役に立てれば幸いです!

13
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?