Workforce Identity 連携と Microsoft Entra を使用して Power BI で BigQuery データにアクセスする

このガイドでは、Microsoft Entra グループ内のユーザーが Workforce Identity 連携を使用して、Power BI の BigQuery データにアクセスできるようにする方法について説明します。

Microsoft Entra は ID プロバイダ(IdP)です。Microsoft Entra のグループ クレームは Google Cloud にマッピングされます。グループには、BigQuery データにアクセスするための Identity and Access Management(IAM)権限が付与されます。

このガイドでは、Power BI Desktop または Power BI Web の操作方法について説明します。

始める前に

  1. Google Cloud 組織を設定する必要があります。

  2. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

    gcloud init

  3. Microsoft Entra と Microsoft Graph にアクセスできる必要があります。

  4. Power BI がセットアップされている必要があります。

必要なロール

このセクションでは、管理者とリソースに必要なロールについて説明します。

管理者のためのロール

Workforce Identity 連携の構成に必要な権限を取得するには、組織に対する IAM Workforce プール管理者roles/iam.workforcePoolAdmin)の IAM ロールを付与するように管理者に依頼します。ロールの付与の詳細については、アクセスの管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

また、IAM オーナー(roles/owner)の基本ロールには ID 連携を構成する権限も含まれています。本番環境では基本ロールを付与すべきではありません。基本ロールは、開発環境またはテスト環境で付与してください。

フェデレーション ID のためのロール

Power BI は、トークン交換時に userProject パラメータを送信します。そのため、課金プロジェクトのフェデレーション ID に Service Usage ユーザー(roles/serviceusage.serviceUsageConsumer)ロールを付与するよう管理者に依頼する必要があります。

フェデレーション ID のグループにロールを付与するには、次のコマンドを実行します。

gcloud projects add-iam-policy-binding PROJECT_ID \
    --role="roles/serviceusage.serviceUsageConsumer" \
    --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"

次のように置き換えます。

  • PROJECT_ID: 課金プロジェクト ID。
  • WORKFORCE_POOL_ID: Workforce Identity プールの ID。
  • GROUP_ID: グループ ID(例: admin-group@example.com)。一般的なプリンシパル ID のリストについては、プリンシパル ID をご覧ください。

Workforce Identity プールを作成する

このセクションでは、Workforce Identity プールの作成方法について説明します。Workforce Identity プール プロバイダは、このガイドの後半で作成します。

コンソール

Workforce Identity プールを作成するには、次の操作を行います。

  1. Google Cloud コンソールで、[Workforce Identity プール] ページに移動します。

    [Workforce Identity プール] に移動

  2. [プールを作成] をクリックして、次の操作を行います。

    1. [名前] にプールの名前を入力します。[プール ID] は、入力した名前から自動的に取得されます。

    2. 省略可: ID を更新するには、[編集] をクリックします。

    3. 省略可: [説明] にプールの説明を入力します。

    4. [セッション継続時間] はデフォルトで設定されています。カスタムのセッション継続時間を入力するには、[編集] をクリックします。セッション継続時間は、この Workforce プールの Google Cloud アクセス トークン、コンソール(連携)ログイン セッション、gcloud CLI ログイン セッションの有効期間を決定します。継続時間は 15 分(900 秒)より長く、12 時間(43,200 秒)より短くする必要があります。セッション継続時間が設定されていない場合、デフォルトで 1 時間(3,600 秒)に設定されます。

    5. プールを有効な状態で作成するには、[有効なプール] がオンになっていることを確認します。

    6. Workforce Identity プールを作成するには、[次へ] をクリックします。

gcloud

Workforce Identity プールを作成するには、次のコマンドを実行します。

gcloud iam workforce-pools create WORKFORCE_POOL_ID \
    --organization=ORGANIZATION_ID \
    --description="DESCRIPTION" \
    --session-duration=SESSION_DURATION \
    --location=global

次のように置き換えます。

  • WORKFORCE_POOL_ID: Google Cloud の Workforce プールを表す ID。ID の形式については、API ドキュメントのクエリ パラメータ セクションをご覧ください。
  • ORGANIZATION_ID: Google Cloud 組織の組織 ID。
  • DESCRIPTION: Workforce Identity プールの説明。
  • SESSION_DURATION: セッション継続時間。この Workforce プールの Google Cloud アクセス トークン、コンソール(連携)ログイン セッション、gcloud CLI ログイン セッションの有効期間を決定します。継続時間は 15 分(900 秒)より長く、12 時間(43,200 秒)より短くする必要があります。セッション継続時間が設定されていない場合、デフォルトで 1 時間(3,600 秒)に設定されます。

新しい Microsoft Entra アプリを登録する

このセクションでは、Microsoft Azure Portal を使用して Microsoft Entra アプリを作成する方法について説明します。

  1. 新しい Microsoft Entra アプリケーションを登録します

  2. 登録した Microsoft Entra アプリケーションで、新しいクライアント シークレットを作成します。クライアント シークレットは、メモしておいてください。

  3. Microsoft Entra アプリケーションに API 権限を付与して、Active Directory のユーザーとグループの情報にアクセスできるようにします。Microsoft Graph API の権限を付与する手順は次のとおりです。

    1. アプリケーションで [API 権限] を選択します。
    2. [構成されたアクセス許可] で、[アクセス許可の追加] をクリックします。
    3. [API のアクセス許可の要求] ダイアログで、[Microsoft Graph] を選択します。
    4. [アプリケーションのアクセス許可] を選択します。
    5. [アクセス許可の選択] ダイアログで、次の操作を行います。
      1. 検索フィールドに「User.ReadBasic.All」と入力します。
      2. User.ReadBasic.All をクリックします。
      3. [アクセス許可の追加] をクリックします。
    6. [API のアクセス許可の要求] ダイアログで、[Microsoft Graph] を選択します。
    7. [アプリケーションのアクセス許可] を選択します。
    8. [アクセス許可の選択] ダイアログで、次の操作を行います。
      1. 検索フィールドに「GroupMember.Read.All」と入力します。
      2. GroupMember.Read.All をクリックします。
      3. [アクセス許可の追加] をクリックします。
    9. [構成されたアクセス許可] で、[管理者の同意の付与(ドメイン名)] をクリックします。
    10. 確認メッセージが表示されたら、[はい] をクリックします。
  4. このガイドの後半で Workforce プール プロバイダを構成するために必要な値にアクセスするには、次の操作を行います。

    1. Microsoft Entra アプリケーションの [概要] ページに移動します。
    2. [エンドポイント] をクリックします。
    3. 次の値をメモします。

      • クライアント ID: このガイドの前半で登録した Microsoft Entra アプリの ID。
      • クライアント シークレット: このガイドの前半で生成したクライアント シークレット。
      • テナント ID: このガイドの前半で登録した Microsoft Entra アプリのテナント ID。
      • 発行元 URI: OpenID Connect メタデータ ドキュメントの URI(/.well-known/openid-configuration は省略)。たとえば、OpenID Connect メタデータ ドキュメントの URL が https://login.microsoftonline.com/d41ad248-019e-49e5-b3de-4bdfe1fapple/v2.0/.well-known/openid-configuration の場合、発行元 URI は https://login.microsoftonline.com/d41ad248-019e-49e5-b3de-4bdfe1fapple/v2.0/ になります。

Workforce Identity プール プロバイダを作成する

プロバイダを作成するには、次のコマンドを実行します。

gcloud iam workforce-pools providers create-oidc 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=azure-ad-groups-mail \
    --extra-attributes-filter=FILTER

次のように置き換えます。

  • PROVIDER_ID: 一意のプロバイダ ID。接頭辞 gcp- は予約されているため、プロバイダ ID では使用できません。
  • WORKFORCE_POOL_ID: IdP を接続する Workforce Identity プール ID。
  • DISPLAY_NAME: プロバイダのわかりやすい表示名(省略可)。
  • ISSUER_URI: 発行元 URI の値(https://sts.windows.net/TENANT_ID の形式)。TENANT_ID の部分は、先ほどメモしたテナント ID で置き換えてください。
  • ATTRIBUTE_MAPPING: グループのマッピングと、必要な場合は Microsoft Entra のクレームから Google Cloud 属性に対応する、その他の属性マッピング(例: google.groups=assertion.groups, google.subject=assertion.sub)。このグループには、このガイドの後半で BigQuery データへのアクセス権が付与されます。
  • APP_ISSUER_URI: 先ほどメモした Microsoft Entra アプリケーションの発行元 URI。
  • APP_CLIENT_ID: 前述の発行元クライアント ID。
  • APP_CLIENT_SECRET: 先ほどメモした発行元のクライアント シークレット。
  • FILTER: IdP から渡された特定のアサーションをリクエストするために使用されるフィルタ。--extra-attributes-type=azure-ad-groups-mail を指定すると、IdP から渡されるユーザーのグループ クレームに対して --extra-attributes-filter のフィルタが実行されます。デフォルトでは、ユーザーに関連付けられているすべてのグループが取得されます。使用するグループは、メールとセキュリティが有効になっている必要があります。詳細については、$search クエリ パラメータを使用するをご覧ください。取得できるグループは最大 100 個です。

    次の例では、gcp で始まるユーザーのメールアドレスに関連付けられているグループをフィルタしています。

    --extra-attributes-filter='"mail:gcp"'
    次の例では、gcp で始まるメールアドレスと、example を含む displayName を持つユーザーに関連付けられているグループをフィルタしています。
    --extra-attributes-filter='"mail:gcp" AND "displayName:example"'

IAM ポリシーを作成する

このセクションでは、BigQuery データが保存されているプロジェクトのマッピングされたグループに BigQuery データ閲覧者(roles/bigquery.dataViewer)ロールを付与する IAM 許可ポリシーを作成します。このポリシーにより、グループ内のすべての ID は、プロジェクトに保存されている BigQuery テーブルとビューのデータにアクセスできます。

ポリシーを作成するには、次のコマンドを実行します。

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"

次のように置き換えます。

  • BIGQUERY_PROJECT_ID: BigQuery のデータとメタデータが保存されているプロジェクト ID
  • WORKFORCE_POOL_ID: Workforce Identity プールの ID
  • GROUP_ID: グループ(例: admin-group@example.com

Power BI Desktop から BigQuery データにアクセスする

Power BI Desktop から BigQuery データにアクセスする手順は次のとおりです。

  1. Power BI を開きます。
  2. [データを取得] をクリックします。
  3. [データベース] をクリックします。
  4. データベースのリストで、[Google BigQuery (Azure AD) (Beta)] を選択します。
  5. [接続] をクリックします。
  6. 次の必須フィールドに入力します。

    • 課金プロジェクト ID: 課金プロジェクト ID。
    • オーディエンス URI: Google Cloud の URI。形式は次のとおりです。

      //iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID
      

      次のように置き換えます。

      • WORKFORCE_POOL_ID: Workforce Identity プールの ID。

      • PROVIDER_ID: Workforce Identity プール プロバイダ ID。

  7. [OK] をクリックします。

  8. [次へ] をクリックします。

  9. [データの選択] をクリックします。

ログインを求められた場合は、グループのメンバーである Microsoft Entra ID を使用してください。

以上の操作により、Power BI Desktop で BigQuery のデータを使用できるようになります。

Power BI Web から BigQuery データにアクセスする

Power BI Web から BigQuery データにアクセスする手順は次のとおりです。

  1. Power BI Web に移動します。

  2. [Power Query] をクリックして、新しいデータソースを追加します。

  3. [データを取得] をクリックします。

  4. リストで [Google BigQuery (Azure AD) (Beta)] を見つけて選択します。

  5. 次の必須フィールドに入力します。

    • 課金プロジェクト ID: Google Cloud 課金プロジェクト

    • オーディエンス URI: オーディエンス URI の形式は次のとおりです。

      //iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID
      

      次のように置き換えます。

      • WORKFORCE_POOL_ID: Workforce Identity プールの ID

      • PROVIDER_ID: Workforce Identity プール プロバイダ ID

  6. [接続の資格情報] > [認証の種類] をクリックします。

  7. [組織アカウント] を選択します。

  8. [サインイン] をクリックします。

  9. [次へ] をクリックします。

  10. [データの選択] をクリックします。

以上の操作により、Power BI Web で BigQuery のデータを使用できるようになります。

次のステップ