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

PowerBI API error updating Dataset using Service Principal

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

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

我做了什么:

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

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

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

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

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

Service principal is not supported for accessing My Workspace:

Considerations and limitations

  • Service principal only works with new workspaces.
  • My Workspace isn't supported when using service principal.
  • A capacity is required when moving to production.
  • You can't sign into the Power BI portal using service principal.
  • Power BI admin rights are required to enable service principal in developer settings within the Power BI admin portal.
  • Embed for your organization applications can't use service principal.
  • Dataflows management is not supported.
  • Service principal only supports some read-only admin APIs. To enable service principal support for read-only admin APIs, you have to enable the Power BI service admin settings in your tenant. For more information, see Enable service principal authentication for read-only admin APIs.
  • When using service principal with an Azure Analysis Services data source, the service principal itself must have an Azure Analysis Services instance permissions. Using a security group that contains the service principal for this purpose, doesn't work.

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

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

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

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