0

全部,

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

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

        #$Diago = Get-AzDiagnosticSetting -ResourceId "" 

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

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

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

任何帮助都会很棒。

4

1 回答 1

1

请将Contributor/Monitoring Contributorfrom分配Azure 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"

输出:

在此处输入图像描述

在此处输入图像描述

于 2022-02-21T10:14:29.183 回答