PowerBI API 使用服务主体更新数据集时出错

问题描述

要求:通过服务主体使用 Powershell 脚本更新 PowerBI 数据集计划。使用 PowerBI API。参考:MicrosoftDocs

错误消息:“消息”:“应用程序无法访问 API”

我做了什么:

  1. 在 Azure AD 中提供 PowerBI 应用程序 API 权限。在 PowerBI 工作区中授予服务主体管理员访问权限。

    API Permissions

  1. 将 SP 放入 AD 组。将此 AD 组设为 Power BI 工作区和数据集的管理员(在 Power BI 管理设置下)

  2. 使用了使用服务主体生成的访问令牌。 API 请求的 Invoke-RestMethod。

    $SecPasswd = ConvertTo-securestring $ClientSecret -AsPlainText -Force
    $ClientCred = New-Object System.Management.Automation.PSCredential($ClientId,$SecPasswd)
    
    Connect-PowerBIServiceAccount -Tenant $tenantId -ServicePrincipal -Credential $ClientCred
    $accesstoken = Get-PowerBIAccesstoken
    $authHeader = @{'Content-Type'='application/json','Authorization'= $accesstoken.Authorization}
    $uri="https://api.powerbi.com/v1.0/myorg/datasets/$datasetId/refreshSchedule"
    Invoke-RestMethod -Uri $uri –Headers $authHeader –Method Patch -Body ($jsonBase | ConvertTo-Json) -ContentType "application/json"
    

观察:

使用我工作区的 datasetId 并运行脚本。 2 场景:

  1. 在授权标头中使用服务主体访问令牌。得到 - Forbidden 403 Error. "Message":"API is not accessible for application
  2. 在授权标头中使用使用我的用户凭据生成的访问令牌时,脚本成功运行。
  3. 在其他工作区尝试了各种数据集

我缺少使用服务主体更新数据集计划的哪些权限?

解决方法

Service principal is not supported for accessing My Workspace

注意事项和限制

  • 服务主体仅适用于新工作区。
  • 使用服务主体时不支持我的工作区。
  • 转为生产时需要一定的产能。
  • 您无法使用服务主体登录 Power BI 门户。
  • 需要 Power BI 管理员权限才能在 Power BI 管理门户的开发人员设置中启用服务主体。
  • 为您的组织嵌入的应用程序不能使用服务主体。
  • 不支持数据流管理。
  • 服务主体仅支持部分只读管理 API。若要为只读管理 API 启用服务主体支持,必须在租户中启用 Power BI 服务管理设置。如需了解详情,请参阅为只读管理 API 启用服务主体身份验证。
  • 将服务主体与 Azure Analysis Services 数据源一起使用时,服务主体本身必须具有 Azure Analysis Services 实例权限。为此目的使用包含服务主体的安全组是行不通的。

您应该将数据集移动到 new workspace,或者更改身份验证方法。

,

Microsoft API 文档中的 URL 对于服务主体是错误的。

您还需要在 URL 中包含工作区 ID,请参见下文

https://api.powerbi.com/v1.0/myorg/groups/{WorkspaceID}/datasets/{DatasetId}refreshes