透過 Workforce Identity Federation 和 Microsoft Entra,在 Power BI 中存取 BigQuery 資料

本指南說明如何使用員工身分聯盟,讓 Microsoft Entra 群組中的使用者在 Power BI 中存取 BigQuery 資料。

Microsoft Entra 是識別資訊提供者 (IdP)。系統會將 Microsoft Entra 的群組聲明對應至 Google Cloud。系統會授予群組身分與存取權管理 (IAM) 權限,讓群組存取 BigQuery 資料。

本指南提供 Power BI Desktop 或網頁版的操作說明。

事前準備

  1. 確認您已 Google Cloud 設定機構。
  2. 安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:

    gcloud init

    如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

  3. 您必須具備 Microsoft Entra 和 Microsoft Graph 的存取權。
  4. 您必須設定 Power BI。

費用

員工身分聯盟是免付費功能。不過,員工身分聯盟詳細稽核記錄會使用 Cloud Logging。如要瞭解 Logging 定價,請參閱 Google Cloud Observability 定價

必要的角色

本節說明管理員和資源所需的角色。

管理員角色

如要取得設定員工身分聯盟所需的權限,請要求管理員授予您機構的 IAM 工作團隊集區管理員 (roles/iam.workforcePoolAdmin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

或者,IAM 擁有者 (roles/owner) 基本角色也包含設定身分聯盟的權限。您不應在正式版環境中授予基本角色,但可以在開發或測試環境中授予。

聯合身分角色

Power BI 會在權杖交換期間傳送 userProject 參數。因此,您必須請管理員將「服務使用情形消費者」(roles/serviceusage.serviceUsageConsumer) 角色授予帳單專案的同盟身分。

如要將角色授予一組同盟身分,請執行下列指令:

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:工作團隊身分集區 ID。
  • GROUP_ID:群組 ID,例如 admin-group@altostrat.com。如要查看常見主體 ID 清單,請參閱「主體 ID」。

建立工作團隊身分集區

本節說明如何建立員工身分集區。您會在稍後的指南中建立工作團隊身分集區提供者。

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:您選擇代表工作團隊集區的 ID。 Google Cloud 如要瞭解如何設定 ID 格式,請參閱 API 說明文件中的「查詢參數」一節。
  • ORGANIZATION_ID:員工身分集區的 Google Cloud 機構數值 ID。員工身分集區適用於機構中的所有專案和資料夾。
  • DISPLAY_NAME:選用。工作團隊身分識別集區的顯示名稱。
  • DESCRIPTION:選用。工作團隊身分集區說明。
  • SESSION_DURATION:選用。工作階段時間長度,以附加 s 的數字表示,例如 3600s。工作階段時間長度決定了從這個工作團隊集區取得的 Google Cloud 存取權杖、控制台 (聯盟) 登入工作階段,以及 gcloud CLI 登入工作階段的有效時間。工作階段持續時間預設為一小時 (3600 秒)。工作階段時間值必須介於 15 分鐘 (900 秒) 和 12 小時 (43200 秒) 之間。

主控台

如要建立工作團隊身分識別集區,請執行下列操作:

  1. 前往 Google Cloud 控制台的「Workforce Identity Pools」(員工身分集區) 頁面:

    前往「Workforce Identity Pools」(員工身分集區) 頁面

  2. 選取員工身分集區的機構。機構中的所有專案和資料夾都可使用 Workforce 身分集區。

  3. 按一下「建立集區」,然後執行下列操作:

    1. 在「名稱」欄位中,輸入集區的顯示名稱。系統會在您輸入名稱時自動衍生集區 ID,並顯示在「名稱」欄位下方。如要更新集區 ID,請點選集區 ID 旁的「編輯」

    2. 選用:在「說明」中輸入集區說明。

    3. 如要建立員工身分集區,請按「Next」(下一步)

工作團隊身分集區的工作階段持續時間預設為一小時 (3600 秒)。 工作階段時間長度決定了這個工作團隊集區的 Google Cloud 存取權杖、控制台 (聯盟) 和 gcloud CLI 登入工作階段的有效時間。建立集區後,您可以更新集區,設定自訂工作階段時間長度。工作階段持續時間必須介於 15 分鐘 (900 秒) 至 12 小時 (43,200 秒) 之間。

註冊新的 Microsoft Entra 應用程式

本節說明如何使用 Microsoft Azure 入口網站建立 Microsoft Entra 應用程式。

  1. 註冊新的 Microsoft Entra 應用程式

  2. 在您註冊的 Microsoft Entra 應用程式中,建立新的用戶端密碼。記下用戶端密鑰。

  3. 將 API 權限授予 Microsoft Entra 應用程式,以便存取 Active Directory 中的使用者和群組資訊。如要授予 Microsoft Graph API 的權限,請按照下列步驟操作:

    1. 在應用程式中選取「API Permissions」
    2. 在「已設定的權限」中,按一下「新增權限」
    3. 在「Request API permissions」對話方塊中,選取「Microsoft Graph」
    4. 選取「應用程式權限」
    5. 在「選取權限」對話方塊中,執行下列操作:
      1. 在搜尋欄位中輸入 User.ReadBasic.All
      2. 按一下「User.ReadBasic.All」User.ReadBasic.All
      3. 按一下「Add permissions」。
    6. 在「Request API permissions」對話方塊中,選取「Microsoft Graph」
    7. 選取「應用程式權限」
    8. 在「選取權限」對話方塊中,執行下列操作:
      1. 在搜尋欄位中輸入 GroupMember.Read.All
      2. 按一下「GroupMember.Read.All」GroupMember.Read.All
      3. 按一下「Add permissions」。
    9. 在「已設定的權限」中,按一下「針對 (網域名稱) 授與系統管理員同意」
    10. 系統要求您確認時,請按一下「是」
  4. 如要存取本指南稍後設定工作團隊集區供應商時所需的值,請按照下列步驟操作:

    1. 前往 Microsoft Entra 應用程式的「總覽」頁面。
    2. 按一下 [端點]
    3. 請注意下列值:

      • 用戶端 ID:您在本指南稍早註冊的 Microsoft Entra 應用程式 ID。
      • 用戶端密鑰:您在本指南中稍早產生的用戶端密鑰。
      • 用戶群 ID:您在本指南稍早註冊的 Microsoft Entra 應用程式用戶群 ID。
      • 核發者 URI:OpenID Connect 中繼資料文件的 URI,省略 /.well-known/openid-configuration。舉例來說,如果 OpenID Connect 中繼資料文件網址為 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/

建立工作團隊身分集區提供者

如要建立供應商,請執行下列指令:

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- 為保留字元,不得用於供應商 ID。

  • WORKFORCE_POOL_ID:要將 IdP 連線至的員工身分集區 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:您先前記下的簽發者用戶端密鑰。

  • EXTRA_GROUPS_TYPE:群組 ID 類型,可以是下列其中一種:

    • azure-ad-groups-mail:系統會從 IdP 擷取群組電子郵件地址,例如:admin-group@altostrat.com

    • azure-ad-groups-id:代表群組的 UUID 會從 IdP 擷取,例如:abcdefgh-0123-0123-abcdef

  • EXTRA_FILTER:用於要求從 IdP 傳遞特定聲明的篩選器。方法是為從 IdP 傳遞的使用者群組聲明指定 --extra-attributes-type=azure-ad-groups-mail--extra-attributes-filter 篩選器。根據預設,系統會擷取與使用者相關聯的所有群組。使用的群組必須啟用郵件和安全性功能。詳情請參閱「使用 $search 查詢參數」。

    以下範例會篩選與以 gcp 開頭的使用者電子郵件地址相關聯的群組:

    --extra-attributes-filter='"mail:gcp"'
    以下範例會篩選與使用者相關聯的群組,這些使用者的電子郵件地址開頭為 gcp,且 displayName 包含 example
    --extra-attributes-filter='"mail:gcp" AND "displayName:example"'

  • 員工身分聯盟詳細稽核記錄會將從 IdP 收到的資訊記錄到 Cloud Logging。詳細稽核記錄有助於排解工作團隊身分識別集區提供者設定問題。如要瞭解如何透過詳細的稽核記錄排解屬性對應錯誤,請參閱「一般屬性對應錯誤」。如要瞭解 Logging 定價,請參閱 Google Cloud Observability 定價

    如要停用工作團隊身分集區提供者的詳細稽核記錄功能,請在執行 gcloud iam workforce-pools providers create 時省略 --detailed-audit-logging 旗標。如要停用詳細稽核記錄,您也可以更新供應商

建立 IAM 政策

在本節中,您將建立 IAM 允許政策,在儲存 BigQuery 資料的專案中,將 BigQuery 資料檢視者角色 (roles/bigquery.dataViewer) 授予對應的群組。這項政策允許群組中的所有身分檢視專案中儲存的 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:員工身分集區 ID
  • GROUP_ID:群組 ID,取決於用於建立員工身分集區提供者的 --extra-attributes-type 值,如下所示:

    • azure-ad-groups-mail:群組 ID 是電子郵件地址,例如:admin-group@altostrat.com

    • azure-ad-groups-id:群組 ID 是群組的 UUID,例如:abcdefgh-0123-0123-abcdef

從 Power BI Desktop 存取 BigQuery 資料

如要透過 Power BI Desktop 存取 BigQuery 資料,請按照下列步驟操作:

  1. 開啟 Power BI。
  2. 按一下「取得資料」
  3. 按一下「資料庫」
  4. 在資料庫清單中,選取「Google BigQuery (Microsoft Entra ID) (Beta)」
  5. 按一下「連線」
  6. 填寫下列必填欄位:

    • 帳單專案 ID:帳單專案 ID。
    • 目標對象 URI: Google Cloud URI,格式如下:

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

      更改下列內容:

      • WORKFORCE_POOL_ID:員工身分集區 ID。

      • WORKFORCE_PROVIDER_ID:工作團隊身分集區供應商 ID。

  7. 按一下 [確定]。

  8. 點選「下一步」

  9. 按一下「選取資料」

如果系統要求您登入,請使用群組成員的 Microsoft Entra 身分。

現在您可以在 Power BI Desktop 中使用 BigQuery 的資料。

從 Power BI Web 存取 BigQuery 資料

如要透過 Power BI Web 存取 BigQuery 資料,請按照下列步驟操作:

  1. 前往 Power BI 網頁版。

  2. 按一下「Power Query」新增資料來源。

  3. 按一下「取得資料」

  4. 在清單中,找出並選取「Google BigQuery (Microsoft Entra ID) (Beta)」

  5. 填寫下列必填欄位:

    • 帳單專案 ID: Google Cloud 帳單專案

    • 目標對象 URI:目標對象 URI,格式如下:

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

      更改下列內容:

      • WORKFORCE_POOL_ID:員工身分集區 ID

      • WORKFORCE_PROVIDER_ID:工作團隊身分集區提供者 ID

  6. 依序點選「連線憑證」>「驗證類型」

  7. 選取「機構帳戶」

  8. 點按「Sign in」

  9. 點選「下一步」

  10. 按一下「選取資料」

您現在可以在 Power BI Web 中使用 BigQuery 的資料。

後續步驟