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

ARM模板中如何向Microsoft.Resources/deploymentScripts传递服务主体凭据

ARM DeploymentScripts 传递服务主体凭据实现登录的方案

前置准备

  • 先创建拥有目标操作权限的服务主体,执行以下PowerShell命令完成创建,保存输出的应用ID、租户ID、客户端密码:
    New-AzADServicePrincipal -DisplayName <自定义SP名称> -Role <所需RBAC角色> -Scope <权限作用域>

ARM模板配置步骤

  1. 新增三个安全参数存储凭据,避免明文泄露:
"parameters": {
  "spClientId": {
    "type": "secureString",
    "metadata": { "description": "服务主体应用ID" }
  },
  "spClientSecret": {
    "type": "secureString",
    "metadata": { "description": "服务主体客户端密码" }
  },
  "tenantId": {
    "type": "secureString",
    "metadata": { "description": "Azure AD租户ID" }
  }
}
  1. 在deploymentScripts资源中通过安全环境变量传递凭据,在脚本内读取环境变量完成登录:
{
  "type": "Microsoft.Resources/deploymentScripts",
  "apiVersion": "2020-10-01",
  "name": "customPwshScript",
  "location": "[resourceGroup().location]",
  "properties": {
    "azPowerShellVersion": "9.7",
    "environmentVariables": [
      {
        "name": "SP_CLIENT_ID",
        "secureValue": "[parameters('spClientId')]"
      },
      {
        "name": "SP_CLIENT_SECRET",
        "secureValue": "[parameters('spClientSecret')]"
      },
      {
        "name": "TENANT_ID",
        "secureValue": "[parameters('tenantId')]"
      }
    ],
    "scriptContent": "
      # 读取环境变量构造凭据
      $secret = ConvertTo-SecureString $env:SP_CLIENT_SECRET -AsPlainText -Force
      $cred = New-Object System.Management.Automation.PSCredential($env:SP_CLIENT_ID, $secret)
      # 登录Azure
      Connect-AzAccount -ServicePrincipal -Credential $cred -Tenant $env:TENANT_ID
      # 下方编写你需要执行的其他操作逻辑
    ",
    "timeout": "PT30M",
    "cleanupPreference": "OnSuccess",
    "retentionInterval": "P1D"
  }
}

部署说明

模板部署时将提前保存的三个服务主体凭据作为参数传入即可,无需硬编码到模板内容中。

提示:优先选择为deploymentScripts配置托管标识的方案,无需手动维护凭据,安全性更高。如果必须使用显式服务主体登录,请严格遵循最小权限原则配置服务主体的RBAC权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:27:02