如何使用 serviceprincipal 运行 "az deployment group" 命令
How to run "az deployment group" command with serviceprincipal
作为在 Loganalytic 工作区中自动创建警报的一部分,我们正在使用 AzureDevops 服务器并寻找一种在 Azuredevops 管道中执行 运行 az deployment group
命令的方法。我们有一个工作管道来执行订阅-A 中的 ADO 任务,如 AzureCLI
和 AzureResourceGroupDeployment
使用预定义的 serviceconnection
配置服务主体 {SP-A} 具有所需的访问权限订阅 A,它按预期工作。
现在我们得到了对订阅 B 执行相同管道的要求,其中当前使用的 servicePrincipal SP-A 没有订阅级别的访问权限。所以我们被进一步的步骤阻止了,因为我们只被允许获得特定的访问权限(比如在 LAW-Microsoft.Insights/ScheduledQueryRules/[Read, Write, Delete] 中创建或修改警报规则),以便 SP-A在订阅 B 的 Loganalyticworkspace 中创建警报规则。
所以我们正在寻找以下方面的指导。
是否可以使用仅具有 Microsoft.Insights/ScheduledQueryRules/[读、写、删除] LAW 权限的相同 SP-A 配置与订阅 B 的服务连接,并且无权访问订阅 B 或 LAW-B 的资源组
如果上述方法不起作用,有没有办法通过将参数添加到命令中来 [=38=] az group deploy
命令与服务主要凭据。
子 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。
作为在 Loganalytic 工作区中自动创建警报的一部分,我们正在使用 AzureDevops 服务器并寻找一种在 Azuredevops 管道中执行 运行 az deployment group
命令的方法。我们有一个工作管道来执行订阅-A 中的 ADO 任务,如 AzureCLI
和 AzureResourceGroupDeployment
使用预定义的 serviceconnection
配置服务主体 {SP-A} 具有所需的访问权限订阅 A,它按预期工作。
现在我们得到了对订阅 B 执行相同管道的要求,其中当前使用的 servicePrincipal SP-A 没有订阅级别的访问权限。所以我们被进一步的步骤阻止了,因为我们只被允许获得特定的访问权限(比如在 LAW-Microsoft.Insights/ScheduledQueryRules/[Read, Write, Delete] 中创建或修改警报规则),以便 SP-A在订阅 B 的 Loganalyticworkspace 中创建警报规则。
所以我们正在寻找以下方面的指导。
是否可以使用仅具有 Microsoft.Insights/ScheduledQueryRules/[读、写、删除] LAW 权限的相同 SP-A 配置与订阅 B 的服务连接,并且无权访问订阅 B 或 LAW-B 的资源组
如果上述方法不起作用,有没有办法通过将参数添加到命令中来 [=38=]
az group deploy
命令与服务主要凭据。
子 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。