使用服务主体和应用密钥嵌入 Power BI 信息内容

服务主体是一种身份验证方法,可用于让 Microsoft Entra 应用程序访问 Power BI 服务内容和 API。

创建Microsoft Entra 应用时,会创建 服务主体对象 。 服务主体对象(也称为 服务主体)允许Microsoft Entra ID 对应用进行身份验证。 身份验证后,应用可以访问 Microsoft Entra 租户资源。

若要进行身份验证,服务主体使用 Microsoft Entra 应用 的应用程序 ID 和以下项之一:

  • 证书
  • 应用程序机密

本文介绍使用 应用程序 ID应用程序机密的服务主体身份验证。

注释

建议使用证书而不是机密密钥来保护后端服务。

方法

若要使用服务主体和应用程序 ID 进行嵌入式分析,请执行以下步骤。 后续部分详细介绍了这些步骤。

  1. 创建Microsoft Entra 应用。

    1. 为 Microsoft Entra 应用创建机密。
    2. 获取应用 的应用程序 ID应用程序机密

    注释

    这些步骤在 步骤 1 中介绍。 有关创建 Microsoft Entra 应用的详细信息,请参阅 创建 Microsoft Entra 应用

  2. 创建 Microsoft Entra 安全组。

  3. 启用 Power BI 服务管理员设置。

  4. 将服务主体添加到工作区。

  5. 嵌入内容。

重要

创建服务主体后,Microsoft Entra 应用程序不需要在 Azure 门户中配置任何委派的权限或应用程序权限。 为服务主体创建Microsoft Entra 应用程序以访问 Power BI REST API 时,建议 避免添加权限。 它们从未被使用过,可能会导致难以进行故障排除的错误。

步骤 1 - 创建 Microsoft Entra 应用

可以从 Azure 门户或使用 PowerShell 创建Microsoft Entra 应用:

若要从 Azure 门户创建Microsoft Entra 应用和机密,请按照 “注册应用”中的说明进行作。

注释

离开此窗口后,客户端机密值处于隐藏状态,无法再次查看或复制它。

步骤 2 - 创建Microsoft Entra 安全组

服务主体无权访问任何 Power BI 内容和 API。 若要授予服务主体访问权限,请在 Microsoft Entra ID 中创建安全组。 然后,将创建的服务主体添加到该安全组。

注释

如果要为整个组织启用服务主体访问权限,请跳过此步骤。

可通过两种方法创建Microsoft Entra 安全组:

手动创建安全组

若要手动创建 Azure 安全组,请按照 “创建基本组”中的说明作。 目前不要向组添加成员。

使用 PowerShell 创建安全组

以下示例脚本将创建新的安全组。 它还将您之前创建的服务主体添加到新的安全组中。

  • 在运行脚本之前,请将 <app-client-ID> 替换为您之前为新应用记录的客户端 ID。
  • 运行脚本后,请记下新安全组的对象 ID,可在脚本输出中找到该 ID。
# Sign in as an admin.
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "Application.ReadWrite.All"

# Get the service principal that you created earlier.
$servicePrincipal = Get-MgServicePrincipal -Filter "AppId eq '<app-client-ID>'"

# Create an Azure AD security group.
$group = New-MgGroup -DisplayName "securitygroup1" -SecurityEnabled -MailEnabled:$False -MailNickName "notSet"
Write-Host "Object ID of new security group: " $($group.Id)

# Add the service principal to the group.
New-MgGroupMember -GroupId $($group.Id) -DirectoryObjectId $($servicePrincipal.Id)

步骤 3 - 启用 Power BI 服务管理员设置

若要让Microsoft Entra 应用访问 Power BI 内容和 API,Power BI 管理员需要启用以下设置:

  • 在应用中嵌入内容
  • 允许服务主体使用 Power BI API

Power BI 管理门户中,转到 “租户设置”,然后向下滚动到 “开发人员”设置

  • 您可以在整个组织或您在 Microsoft Entra ID 中创建的特定安全组中,选择在应用中启用嵌入内容。

    管理门户的“租户设置”部分中“开发人员设置”的屏幕截图。启用在应用中嵌入内容的选项。

  • 启用 “允许服务主体”对整个 组织或Microsoft Entra ID 中创建的特定安全组使用 Power BI API。

    “开发人员设置”部分的屏幕截图。为一个安全组启用了允许服务主体使用 Power BI API 的选项。

    重要

    服务主体有权访问为其启用的任何租户设置。 根据管理员设置,这包括特定的安全组或整个组织。

    若要限制对特定租户设置的服务主体访问权限,请仅允许访问特定安全组。 或者,可以为服务主体创建专用安全组,并将其从所需的租户设置中排除。

步骤 4 - 将服务主体添加到工作区

Microsoft Entra 应用只有在作为 成员管理员 被授权访问 Power BI 工作区时,才能访问 Power BI 报表、仪表板和语义模型。可以通过将应用的服务主体或其安全组添加到工作区来提供该访问权限。

可通过三种方法将服务主体或其安全组添加到工作区:

手动添加服务主体或安全组

  1. 在 Power BI 服务中,滚动到要为其启用访问权限的工作区。 从“ 更多 ”菜单中,选择 “工作区访问”。

    显示工作区中“更多”菜单展开的屏幕截图。在该菜单上,突出显示了工作区访问权限。

  2. “访问 ”窗格中的 “添加管理员”、“成员”或“参与者”下,添加以下项之一:

    • 服务主体对象。 服务主体的名称是Microsoft Entra 应用的 显示名称 ,如Microsoft Entra 应用的概述选项卡中所示。
    • 包含服务主体的 安全组
  3. 在下拉菜单中,选择 “成员 ”或“ 管理员”。

  4. 选择 并添加

使用 PowerShell 添加服务主体或安全组

以下部分提供了示例 PowerShell 脚本,用于将服务主体和安全组作为成员添加到 Power BI 工作区。

使用 PowerShell 将服务主体添加为工作区成员

以下脚本将服务主体添加为工作区成员。 运行脚本之前:

  • <service-principal-object-ID>替换为您此前为新服务主体记录的对象ID。
  • 替换为 <workspace-name> 要授予服务主体访问权限的工作区的名称。
# Sign in to Power BI.
Login-PowerBI

# Set up the service principal ID.
$SPObjectID = "<service-principal-object-ID>"

# Get the workspace.
$pbiWorkspace = Get-PowerBIWorkspace -Filter "name eq '<workspace-name>'"

# Add the service principal to the workspace.
Add-PowerBIWorkspaceUser -Id $($pbiWorkspace.Id) -AccessRight Member -PrincipalType App -Identifier $($SPObjectID)

使用 PowerShell 将安全组添加为工作区成员

以下脚本将安全组添加为工作区成员。 运行脚本之前:

  • 替换为 <security-group-object-ID> 之前为新安全组记录的对象 ID。
  • 请将 <workspace-name> 替换为要授予安全组访问权限的工作区的名称。
# Sign in to Power BI.
Login-PowerBI

# Set up the security group object ID.
$SGObjectID = "<security-group-object-ID>"

# Get the workspace.
$pbiWorkspace = Get-PowerBIWorkspace -Filter "name eq '<workspace-name>'"

# Add the security group to the workspace.
Add-PowerBIWorkspaceUser -Id $($pbiWorkspace.Id) -AccessRight Member -PrincipalType Group -Identifier $($SGObjectID)

第 5 步 - 嵌入内容

可以在 示例应用程序中嵌入内容,也可以在自己的应用程序中嵌入内容。

嵌入内容后,即可 迁移到生产环境。

注释

若要使用证书保护您的内容,请按照使用服务主体和证书嵌入 Power BI 内容中所述的步骤执行操作。

注意事项和限制

  • 使用服务主体时不支持我的工作区
  • 迁移到生产环境时需要容量。
  • 您无法使用服务主体登录 Power BI 门户。
  • 在 Power BI 管理门户中的开发人员设置中启用服务主体需要 Power BI 管理员权限。
  • 嵌入到您组织的应用程序中不能使用服务主体。
  • 不支持数据流管理。
  • 并非所有只读 API 都受服务主体支持。 若要为只读管理员 API 启用服务主体支持,请在租户中启用 Power BI 服务管理员设置。
  • 将服务主体与 Azure Analysis Services 数据源配合使用时,服务主体本身必须具有 Azure Analysis Services 实例权限。 为此目的使用包含服务主体的安全组是无法工作的。