Get-AzDiagnosticSetting - 操作返回无效状态代码 'Forbidden'

Get-AzDiagnosticSetting - Operation returned an invalid status code 'Forbidden'

我正在尝试使用 YAML 从 Azure 管道中获取诊断设置:

steps:
- task: AzureCLI@2
  displayName: Ammend Diagnostic Settings 
  inputs:
    azureSubscription: ${{ parameters.environmentServiceConnection }}
    scriptLocation: inlineScript
    ScriptType: ps
    inlineScript: |

        #$Diago = Get-AzDiagnosticSetting -ResourceId "" 

如果我使用普通 'admin' 帐户执行 Get-DiagnosticSetting 命令,我可以看到诊断设置正常。我正在为管道使用 SPN,但出现错误:

Get-AzDiagnosticSetting : Exception type: ErrorResponseException, Message: 
Microsoft.Azure.Management.Monitor.Models.ErrorResponseException: Operation returned an invalid status code 'Forbidden'

所以这与我对我的 SPN 的权限有关 - 但我不知道权限在哪里我需要检查(在 Azure 中)以确保我可以让它工作。

请将 Contributor/Monitoring ContributorAzure Built-in Roles 分配给 Azure Pipeline 用作订阅服务连接的 SPN。

我通过在 PowerShell 中使用 SPN 和以下代码进行了类似的测试:

$ApplicationId=<ClientId>
$SecuredPassword= ConvertTo-SecureString <ClientSecret> -AsPlainText -Force
$TenantId="<tenantId>"
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $ApplicationId, $SecuredPassword
Connect-AzAccount -ServicePrincipal -TenantId $TenantId -Credential $Credential
Get-AzDiagnosticSetting -ResourceId "/subscriptions/<Subscription>/resourceGroups/ansuman-resourcegroup/providers/Microsoft.Storage/storageAccounts/cloudshellansuman123"

输出: