本指南介绍如何使 Microsoft Entra 群组中的用户使用员工身份联合访问 Power BI 中的 BigQuery 数据。
Microsoft Entra 是身份提供方 (IdP)。Microsoft Entra 中的群组声明会映射到 Google Cloud。群组被授予 Identity and Access Management (IAM) 权限来访问 BigQuery 数据。
本指南提供有关 Power BI Desktop 或 Web 的说明。
准备工作
您必须设置一个 Google Cloud 组织。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
您必须有权访问 Microsoft Entra 和 Microsoft Graph。
您必须设置 Power BI。
所需的角色
本部分介绍管理员和资源所需的角色。
管理员角色
如需获得配置员工身份联合所需的权限,请让您的管理员向您授予组织的 IAM Workforce Pool Admin (roles/iam.workforcePoolAdmin
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此外,IAM Owner (roles/owner
) 基本角色还具有配置身份联合的权限。您不应在生产环境中授予基本角色,但可以在开发或测试环境中授予这些角色。
联合身份角色
Power BI 在令牌交换期间发送 userProject
参数。因此,您必须让管理员为结算项目上的联合身份授予 Service Usage Consumer (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@example.com
。如需查看常见主账号标识符的列表,请参阅主账号标识符。
创建员工身份池
本部分介绍如何创建员工身份池。在本指南的后面部分,您将创建员工身份池提供方。
控制台
如需创建员工身份池,请执行以下操作:
在 Google Cloud 控制台中,转到员工身份池页面:
点击创建池,然后执行以下操作:
在名称字段中,输入池的显示名称。池 ID 是根据您输入的名称自动派生的,并显示在名称字段下方。您可以点击池 ID 旁边的修改来更新池 ID。
可选:在说明中,输入池的说明。
默认情况下已设置会话时长。如需输入自定义会话时长,请点击修改。会话时长,用于确定来自此员工池的 Google Cloud 访问令牌、控制台(联合)登录会话和 gcloud CLI 登录会话的有效时长。时长必须大于 15 分钟(900 秒)且小于 12 小时(43200 秒)。如果未设置会话时长,则默认为 1 小时(3600 秒)。
如需创建状态为已启用的池,请确保已启用池处于开启状态。
如需创建员工身份池,请点击下一步。
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 员工池的 ID。如需了解如何设置 ID 的格式,请参阅 API 文档中的查询参数部分。ORGANIZATION_ID
:您的 Google Cloud 组织的数字 ID。DISPLAY_NAME
:可选。您的员工身份池的显示名称。DESCRIPTION
:可选。员工身份池说明。SESSION_DURATION
:可选。会话时长,用于确定来自此员工池的 Google Cloud 访问令牌、控制台(联合)登录会话和 gcloud CLI 登录会话的有效时长。时长必须大于 15 分钟(900 秒)且小于 12 小时(43200 秒)。如果未设置会话时长,则默认为 1 小时(3600 秒)。
注册新的 Microsoft Entra 应用
本部分介绍如何使用 Microsoft Azure 门户创建 Microsoft Entra 应用。
在您注册的 Microsoft Entra 应用中,创建新的客户端密钥。记下客户端密钥。
向 Microsoft Entra 应用授予 API 权限,以便该应用可以从 Active Directory 中访问用户和群组信息。如需为 Microsoft Graph API 授予权限,请执行以下操作:
- 在您的应用中,选择 API 权限。
- 在已配置的权限中,点击添加权限。
- 在请求 API 权限对话框中,选择 Microsoft Graph。
- 选择应用权限。
- 在选择权限对话框中,执行以下操作:
- 在搜索字段中,输入
User.ReadBasic.All
。 - 点击 User.ReadBasic.All。
- 点击添加权限。
- 在搜索字段中,输入
- 在请求 API 权限对话框中,选择 Microsoft Graph。
- 选择应用权限。
- 在选择权限对话框中,执行以下操作:
- 在搜索字段中,输入
GroupMember.Read.All
。 - 点击 GroupMember.Read.All。
- 点击添加权限。
- 在搜索字段中,输入
- 在已配置的权限中,点击为(域名)授予管理员同意。
- 当系统要求您确认时,点击是。
如需访问在本指南后面部分配置员工池提供方所需的值,请执行以下操作:
- 进入 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 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 所关联的员工身份池的 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
,--extra-attributes-filter
可过滤从 IdP 传递的用户群组声明。默认情况下,系统会提取与用户关联的所有群组。使用的群组必须启用邮件和安全功能。如需了解详情,请参阅使用 $search 查询参数。最多可以提取 100 个组。以下示例过滤与以
gcp
开头的用户电子邮件地址关联的群组: 以下示例过滤与电子邮件地址以--extra-attributes-filter='"mail:gcp"'
gcp
开头且 displayName 包含example
的用户关联的群组:--extra-attributes-filter='"mail:gcp" AND "displayName:example"'
创建 IAM 政策
在本部分中,您将创建 IAM 允许政策,以将 BigQuery Data Viewer (roles/bigquery.dataViewer
) 角色授予用于存储 BigQuery 数据的项目上的映射群组。该政策允许群组中的所有身份查看项目中存储的 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 数据和元数据的项目的 IDWORKFORCE_POOL_ID
:员工身份池 IDGROUP_ID
:群组,例如admin-group@example.com
从 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/PROVIDER_ID
替换以下内容:
WORKFORCE_POOL_ID
:员工身份池 ID。PROVIDER_ID
:员工身份池提供方 ID。
点击确定。
点击下一步。
点击选择数据。
如果系统要求您登录,请使用属于该群组的 Microsoft Entra 身份。
您现在可以在 Power BI Desktop 中使用 BigQuery 中的数据了。
从 Power BI Web 访问 BigQuery 数据
如需从 Power BI Web 访问 BigQuery 数据,请执行以下操作:
转到 Power BI Web。
点击 Power 查询以添加新数据源。
点击获取数据。
在列表中,找到并选择 Google BigQuery (Microsoft Entra ID)(Beta 版)。
填写以下必填字段:
结算项目 ID:Google Cloud 结算项目
目标对象 URI:目标对象 URI,格式如下:
//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID
替换以下内容:
WORKFORCE_POOL_ID
:员工身份池 IDPROVIDER_ID
:员工身份池提供方 ID
点击连接凭据 > 身份验证种类。
选择组织账号。
点击登录。
点击下一步。
点击选择数据。
您现在可以在 Power BI Web 中使用 BigQuery 中的数据了。
后续步骤
- 如需删除员工身份联合用户及其数据,请参阅删除员工身份联合用户及其数据
- 如需了解 Google Cloud 产品对员工身份联合的支持,请参阅身份联合:支持的产品和限制