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

如何借助托管标识实现跨订阅Azure Automation账户Runbook?

无需RunAs账户实现Azure Automation跨订阅Runbook的方法

核心方案:使用托管标识(Managed Identity)

替代即将弃用的RunAs账户,托管标识是Azure官方推荐的身份验证方式,无需维护证书,安全性更高。

步骤1:为Azure Automation账户启用托管标识

  • 系统分配托管标识:进入Automation账户的「标识」>「系统分配」页面,将状态切换为「开启」后保存。
  • 用户分配托管标识:若需在多个Automation账户间共享身份,先创建用户分配托管标识,再在Automation账户的「标识」>「用户分配」页面添加该标识。

步骤2:为托管标识授予目标订阅的RBAC权限

  • 登录Azure门户,进入目标订阅的「访问控制(IAM)」页面。
  • 添加角色分配:选择所需角色(如「参与者」「读者」或自定义角色),将托管标识(系统分配的标识名称与Automation账户名一致;用户分配的标识为自身名称)设为被授权对象。

步骤3:Runbook跨订阅操作代码示例(PowerShell)

# 通过托管标识自动完成Azure身份验证
Connect-AzAccount -Identity

# 获取托管标识有权访问的所有订阅(解决Get-AzSubscription失败:需确保标识有订阅级「读者」或更高权限)
$subscriptions = Get-AzSubscription

# 遍历订阅执行操作
foreach ($sub in $subscriptions) {
    # 切换到目标订阅上下文
    Set-AzContext -Subscription $sub.Id

    # 示例操作:获取当前订阅下的VM列表
    $vms = Get-AzVM
    Write-Output "订阅 $($sub.Name) 下的VM数量:$($vms.Count)"
}

# 指定单个目标订阅执行操作的示例
$targetSubId = "xxxx-xxxx-xxxx-xxxx"
Set-AzContext -Subscription $targetSubId
New-AzResourceGroup -Name "RG-CrossSub-Demo" -Location "East US"

解决Get-AzSubscription失败的常见问题

  • 权限不足:托管标识必须在目标订阅级别至少拥有「读者」角色,否则无法枚举订阅资源。
  • 未启用托管标识:确认Automation账户已开启托管标识,且Runbook中使用Connect-AzAccount -Identity完成身份验证。
  • 模块版本过旧:确保Automation账户中的Az模块为最新版本,旧版本可能不支持托管标识的完整功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:20:26