本指南說明如何使用員工身分聯盟,讓 Microsoft Entra 群組中的使用者在 Power BI 中存取 BigQuery 資料。
Microsoft Entra 是識別資訊提供者 (IdP)。系統會將 Microsoft Entra 的群組聲明對應至 Google Cloud。系統會授予群組身分與存取權管理 (IAM) 權限,讓群組存取 BigQuery 資料。
本指南提供 Power BI Desktop 或網頁版的操作說明。
事前準備
- 確認您已 Google Cloud 設定機構。
-
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
- 您必須具備 Microsoft Entra 和 Microsoft Graph 的存取權。
- 您必須設定 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 秒) 之間。
主控台
如要建立工作團隊身分識別集區,請執行下列操作:
前往 Google Cloud 控制台的「Workforce Identity Pools」(員工身分集區) 頁面:
選取員工身分集區的機構。機構中的所有專案和資料夾都可使用 Workforce 身分集區。
按一下「建立集區」,然後執行下列操作:
在「名稱」欄位中,輸入集區的顯示名稱。系統會在您輸入名稱時自動衍生集區 ID,並顯示在「名稱」欄位下方。如要更新集區 ID,請點選集區 ID 旁的「編輯」。
選用:在「說明」中輸入集區說明。
如要建立員工身分集區,請按「Next」(下一步)。
工作團隊身分集區的工作階段持續時間預設為一小時 (3600 秒)。 工作階段時間長度決定了這個工作團隊集區的 Google Cloud 存取權杖、控制台 (聯盟) 和 gcloud CLI 登入工作階段的有效時間。建立集區後,您可以更新集區,設定自訂工作階段時間長度。工作階段持續時間必須介於 15 分鐘 (900 秒) 至 12 小時 (43,200 秒) 之間。
註冊新的 Microsoft Entra 應用程式
本節說明如何使用 Microsoft Azure 入口網站建立 Microsoft Entra 應用程式。
在您註冊的 Microsoft Entra 應用程式中,建立新的用戶端密碼。記下用戶端密鑰。
將 API 權限授予 Microsoft Entra 應用程式,以便存取 Active Directory 中的使用者和群組資訊。如要授予 Microsoft Graph API 的權限,請按照下列步驟操作:
- 在應用程式中選取「API Permissions」。
- 在「已設定的權限」中,按一下「新增權限」。
- 在「Request API permissions」對話方塊中,選取「Microsoft Graph」。
- 選取「應用程式權限」。
- 在「選取權限」對話方塊中,執行下列操作:
- 在搜尋欄位中輸入
User.ReadBasic.All
。 - 按一下「User.ReadBasic.All」User.ReadBasic.All。
- 按一下「Add permissions」。
- 在搜尋欄位中輸入
- 在「Request API permissions」對話方塊中,選取「Microsoft Graph」。
- 選取「應用程式權限」。
- 在「選取權限」對話方塊中,執行下列操作:
- 在搜尋欄位中輸入
GroupMember.Read.All
。 - 按一下「GroupMember.Read.All」GroupMember.Read.All。
- 按一下「Add permissions」。
- 在搜尋欄位中輸入
- 在「已設定的權限」中,按一下「針對 (網域名稱) 授與系統管理員同意」。
- 系統要求您確認時,請按一下「是」。
如要存取本指南稍後設定工作團隊集區供應商時所需的值,請按照下列步驟操作:
- 前往 Microsoft Entra 應用程式的「總覽」頁面。
- 按一下 [端點]。
請注意下列值:
- 用戶端 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
:員工身分集區 IDGROUP_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 資料,請按照下列步驟操作:
- 開啟 Power BI。
- 按一下「取得資料」。
- 按一下「資料庫」。
- 在資料庫清單中,選取「Google BigQuery (Microsoft Entra ID) (Beta)」。
- 按一下「連線」。
填寫下列必填欄位:
- 帳單專案 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。
按一下 [確定]。
點選「下一步」。
按一下「選取資料」。
如果系統要求您登入,請使用群組成員的 Microsoft Entra 身分。
現在您可以在 Power BI Desktop 中使用 BigQuery 的資料。
從 Power BI Web 存取 BigQuery 資料
如要透過 Power BI Web 存取 BigQuery 資料,請按照下列步驟操作:
前往 Power BI 網頁版。
按一下「Power Query」新增資料來源。
按一下「取得資料」。
在清單中,找出並選取「Google BigQuery (Microsoft Entra ID) (Beta)」。
填寫下列必填欄位:
帳單專案 ID: Google Cloud 帳單專案
目標對象 URI:目標對象 URI,格式如下:
//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
更改下列內容:
WORKFORCE_POOL_ID
:員工身分集區 IDWORKFORCE_PROVIDER_ID
:工作團隊身分集區提供者 ID
依序點選「連線憑證」>「驗證類型」。
選取「機構帳戶」。
點按「Sign in」,
點選「下一步」。
按一下「選取資料」。
您現在可以在 Power BI Web 中使用 BigQuery 的資料。
後續步驟
- 如要刪除員工身分聯盟使用者及其資料,請參閱「刪除員工身分聯盟使用者及其資料」一文。
- 如要瞭解 Google Cloud 產品對員工身分聯盟的支援情形,請參閱「身分聯盟:支援的產品和限制」。