如何使用 serviceprincipal 运行 "az deployment group" 命令

How to run "az deployment group" command with serviceprincipal

作为在 Loganalytic 工作区中自动创建警报的一部分,我们正在使用 AzureDevops 服务器并寻找一种在 Azuredevops 管道中执行 运行 az deployment group 命令的方法。我们有一个工作管道来执行订阅-A 中的 ADO 任务,如 AzureCLIAzureResourceGroupDeployment 使用预定义的 serviceconnection 配置服务主体 {SP-A} 具有所需的访问权限订阅 A,它按预期工作。

现在我们得到了对订阅 B 执行相同管道的要求,其中当前使用的 servicePrincipal SP-A 没有订阅级别的访问权限。所以我们被进一步的步骤阻止了,因为我们只被允许获得特定的访问权限(比如在 LAW-Microsoft.Insights/ScheduledQueryRules/[Read, Write, Delete] 中创建或修改警报规则),以便 SP-A在订阅 B 的 Loganalyticworkspace 中创建警报规则。

所以我们正在寻找以下方面的指导。

子 A 的工作 ADO 任务如下,如果我们可以对子 B 使用相同的任务,请寻找解决方案

- task: AzureCLI@2
  displayName: "verify the deployment changes"
  inputs:
    azureSubscription: ${{ parameters.subscription }}
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: 'az deployment group what-if --resource-group ${{ parameters.resourceGroup }} --template-file $(System.DefaultWorkingDirectory)/template.json --parameters $(System.DefaultWorkingDirectory)/param.json'
- task: AzureResourceGroupDeployment@2
  inputs:
    azureSubscription: ${{ parameters.subscription }}
    action: 'Create Or Update Resource Group'
    resourceGroupName: ${{ parameters.resourceGroup }}
    location: ${{ parameters.region }}
    templateLocation: 'Linked artifact'
    csmFile: '$(System.DefaultWorkingDirectory)/template.json'
    csmParametersFile: '$(System.DefaultWorkingDirectory)/param.json'
    deploymentMode: 'Incremental'

Is it possible to configure a service connection to Subscription B using the same SP-A that only has the Microsoft.Insights/ScheduledQueryRules/[Read, Write, Delete] permission on the LAW, and not having any access to subscription B or resource group of LAW-B

这是不可能的,因为您将仅使用 Microsoft.Insights/ScheduledQueryRules/* 创建 custom role,这是 managing/creating 计划查询警报所必需的,但是服务帐户要找到 LAW 并使用资源组部署部署警报,至少需要 read 订阅或资源组权限和 Microsoft/Resources/deployments/* 才能创建部署。

您可以检查这些 built-in roles for Azure Monitor。