使用 PowerShell 在虚拟机规模集上配置 Azure 资源的托管标识

Azure 资源的托管标识是 Azure Active Directory 的一项功能。 支持 Azure 资源的托管标识的每个 Azure 服务都受其自己的时间线限制。 在开始之前,请务必查看资源的托管标识的可用性状态以及已知问题

Azure 资源的托管标识在 Azure Active Directory 中为 Azure 服务提供了一个自动托管标识。 此标识可用于通过支持 Azure AD 身份验证的任何服务的身份验证,这样就无需在代码中插入凭据了。

在本文中,你将了解如何使用 PowerShell 在虚拟机规模集上执行 Azure 资源的托管标识操作:

  • 在虚拟机规模集上启用和禁用系统分配的托管标识
  • 在虚拟机规模集上添加和删除用户分配的托管标识

备注

本文已经过更新,以便使用 Azure Az PowerShell 模块。 若要与 Azure 交互,建议使用的 PowerShell 模块是 Az PowerShell 模块。 若要开始使用 Az PowerShell 模块,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

先决条件

  • 如果不熟悉 Azure 资源的托管标识,请查阅概述部分。 请务必了解系统分配的托管标识与用户分配的托管标识之间的差异

  • 如果还没有 Azure 帐户,请先注册试用帐户,然后再继续。

  • 若要执行本文中的管理操作,帐户需要以下基于 Azure 角色的访问控制分配:

    备注

    无需其他 Azure AD 目录角色分配。

    • 虚拟机参与者,可创建虚拟机规模集,并从虚拟机规模集启用和删除系统分配的托管标识和/或用户分配的托管标识。
    • 托管标识参与者角色,可以创建用户分配的托管标识。
    • 托管标识操作员角色,可在虚拟机规模集中分配和删除用户分配的托管标识。
  • 若要运行示例脚本,可以通过安装最新版的 Azure PowerShell 在本地运行脚本,然后使用 Connect-AzAccount -Environment AzureChinaCloud 登录到 Azure。

系统分配的托管标识

在此部分中,将了解如何使用 Azure PowerShell 启用和删除系统分配的托管标识。

在创建 Azure 虚拟机规模集的过程中启用系统分配的托管标识

要创建启用了系统分配托管标识的虚拟机规模集,请执行以下操作:

  1. 请参阅 New-AzVmssConfig cmdlet 参考文章中的示例 1,以创建具有系统分配的托管标识的虚拟机规模集。 将参数 -IdentityType SystemAssigned 添加到 New-AzVmssConfig cmdlet:

    $VMSS = New-AzVmssConfig -Location $Loc -SkuCapacity 2 -SkuName "Standard_A0" -UpgradePolicyMode "Automatic" -NetworkInterfaceConfiguration $NetCfg -IdentityType SystemAssigned`
    

在现有 Azure 虚拟机规模集上启用系统分配的托管标识

如果需要在现有 Azure 虚拟机规模集上启用系统分配的托管标识,请执行以下操作:

  1. 请确保你使用的 Azure 帐户所属角色可授予对虚拟机规模集的写入权限,如“虚拟机参与者”。

  2. 使用 Get-AzVmss cmdlet 检索虚拟机规模集属性。 然后,若要启用系统分配的托管标识,请在 Update-AzVmss cmdlet 上使用 -IdentityType 开关:

    Update-AzVmss -ResourceGroupName myResourceGroup -Name -myVmss -IdentityType "SystemAssigned"
    

从 Azure 虚拟机规模集中禁用系统分配的托管标识

如果某个虚拟机规模集不再需要系统分配的托管标识,但仍需要用户分配的托管标识,请使用以下 cmdlet:

  1. 请确保该帐户所属角色可授予对虚拟机规模集的写入权限,如“虚拟机参与者”。

  2. 运行以下 cmdlet:

    Update-AzVmss -ResourceGroupName myResourceGroup -Name myVmss -IdentityType "UserAssigned"
    
  3. 如果某个虚拟机规模集不再需要系统分配的托管标识,且没有用户分配的托管标识,请使用以下命令:

    Update-AzVmss -ResourceGroupName myResourceGroup -Name myVmss -IdentityType None
    

用户分配的托管标识

本部分介绍如何使用 Azure PowerShell 从虚拟机规模集中添加和删除用户分配的托管标识。

在创建 Azure 虚拟机规模集的过程中启用用户分配的托管标识

目前不支持通过 PowerShell 创建具有用户分配的托管标识的新虚拟机规模集。 有关如何将用户分配的托管标识添加到现有虚拟机规模集的信息,请参阅下一部分。 请关注后续更新。

将用户分配的托管标识分配到现有 Azure 虚拟机规模集

将用户分配的托管标识分配到现有 Azure 虚拟机规模集:

  1. 请确保该帐户所属角色可授予对虚拟机规模集的写入权限,如“虚拟机参与者”。

  2. 使用 Get-AzVM cmdlet 检索虚拟机规模集属性。 然后,若要向虚拟机规模集分配用户分配的托管标识,请在 Update-AzVmss cmdlet 上使用 -IdentityType-IdentityID 开关。 将 <VM NAME><SUBSCRIPTION ID><RESROURCE GROUP><USER ASSIGNED ID1>USER ASSIGNED ID2 替换为自己的值。

    重要

    创建用户分配标识时,只能使用字母数字字符(0-9、a-z、A-Z)、下划线 (_) 和连字符 (-)。 另外,为了确保能够正常分配给 VM/VMSS,名称长度应该为 3 到 128 个字符。 请关注后续更新。 有关详细信息,请参阅 FAQ 和已知问题

    Update-AzVmss -ResourceGroupName <RESOURCE GROUP> -Name <VMSS NAME> -IdentityType UserAssigned -IdentityID "<USER ASSIGNED ID1>","<USER ASSIGNED ID2>"
    

从 Azure 虚拟机规模集删除用户分配的托管标识

如果虚拟机规模集有多个用户分配的托管标识,则可以使用以下命令将这些标识删除到只剩一个。 请务必将 <RESOURCE GROUP><VIRTUAL MACHINE SCALE SET NAME> 参数值替换为自己的值。 <USER ASSIGNED IDENTITY NAME> 是用户分配的托管标识的名称属性,该属性应保留在虚拟机规模集上。 可通过 az vmss show 在虚拟机规模集的标识部分中找到此信息:

Update-AzVmss -ResourceGroupName myResourceGroup -Name myVmss -IdentityType UserAssigned -IdentityID "<USER ASSIGNED IDENTITY NAME>"

如果虚拟机规模集没有系统分配的托管标识,并且你想要从中删除所有用户分配的托管标识,请使用以下命令:

Update-AzVmss -ResourceGroupName myResourceGroup -Name myVmss -IdentityType None

如果虚拟机规模集同时具有系统分配的托管标识和用户分配的托管标识,则可通过切换为仅使用系统分配的托管标识,删除所有用户分配的托管标识。

Update-AzVmss -ResourceGroupName myResourceGroup -Name myVmss -IdentityType "SystemAssigned"

后续步骤