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 Contributor
从 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"
输出:
我正在尝试使用 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 Contributor
从 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"
输出: