You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ARM模板在Azure自动化中创建AzureRunAsConnection?

解决ARM模板无法创建AzureRunAsConnection的方案

我明白你的困扰——ARM模板确实没办法直接定义AzureRunAsConnection,因为这个连接的创建依赖于自动化账户生成后的服务主体、证书等关联资源,官方目前没有提供对应的ARM资源类型来直接声明它。不过有几个可行的方案可以帮你完成自动化部署:

方案1:在ARM模板中嵌入部署脚本

你可以在ARM模板里添加一个Microsoft.Resources/deploymentScripts资源,让它在自动化账户部署完成后,自动执行PowerShell脚本来创建RunAs连接。这样能把整个流程整合到一个ARM部署中。

示例代码片段:

{
  "type": "Microsoft.Resources/deploymentScripts",
  "apiVersion": "2020-10-01",
  "name": "ProvisionRunAsAccount",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[resourceId('Microsoft.Automation/automationAccounts', variables('automationAccountName'))]"
  ],
  "identity": {
    "type": "SystemAssigned"
  },
  "properties": {
    "azPowerShellVersion": "7.2",
    "scriptContent": "New-AzAutomationRunAsAccount -ResourceGroupName '[resourceGroup().name]' -AutomationAccountName '[variables('automationAccountName')]'",
    "timeout": "PT30M",
    "cleanupPreference": "OnSuccess"
  }
}

⚠️ 注意:要给这个部署脚本的系统分配身份配置足够的权限(比如订阅级的Contributor,或者更细粒度的权限组合:能创建服务主体、管理自动化账户、读取证书等),否则脚本执行会失败。

方案2:分阶段部署(ARM模板 + 外部脚本)

如果觉得嵌入脚本的ARM模板过于复杂,可以拆成两个独立的部署阶段:

  • 第一阶段:用ARM模板完成自动化账户的部署;
  • 第二阶段:通过Azure PowerShell/CLI脚本、Azure DevOps Pipeline或者GitHub Actions,调用New-AzAutomationRunAsAccount命令来创建RunAs连接。

这种方式更灵活,方便单独调试脚本部分,也适合已经有成熟CI/CD流程的场景。

方案3:改用Azure Bicep简化部署逻辑

如果你愿意尝试Azure Bicep(ARM的声明式语法扩展,比纯ARM更易读和维护),可以用Bicep的deploymentScript资源来实现同样的自动化流程,代码会简洁很多:

示例Bicep代码:

param automationAccountName string = 'my-auto-account'

resource automationAccount 'Microsoft.Automation/automationAccounts@2023-11-01' = {
  name: automationAccountName
  location: resourceGroup().location
  properties: {
    sku: {
      name: 'Basic'
    }
  }
}

resource createRunAsAccount 'Microsoft.Resources/deploymentScripts@2020-10-01' = {
  name: 'CreateRunAsAccount'
  location: resourceGroup().location
  dependsOn: [ automationAccount ]
  identity: {
    type: 'SystemAssigned'
  }
  properties: {
    azPowerShellVersion: '7.2'
    scriptContent: '''
      New-AzAutomationRunAsAccount -ResourceGroupName '${resourceGroup().name}' -AutomationAccountName '${automationAccount.name}'
    '''
    timeout: 'PT30M'
    cleanupPreference: 'OnSuccess'
  }
}

同样需要给Bicep部署的身份配置对应的权限,确保能创建服务主体等关联资源。

额外提醒

创建RunAsAccount时会自动生成服务主体、自签名证书等资源,所以执行脚本的身份必须具备这些资源的创建权限。如果想遵循最小权限原则,可以给身份分配Application Administrator(用于创建服务主体)加上Automation Contributor(用于管理自动化账户)的角色组合。

内容的提问来源于stack exchange,提问作者Mani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:11:09