Configuración de identidades administradas de recursos de Azure en una VM de Azure mediante PowerShell

Managed Identities for Azure Resources es una característica de Azure Active Directory. Cada servicio de Azure compatible con Managed Identities for Azure Resources está sujeto a su propia escala de tiempo. Asegúrese de revisar el estado de disponibilidad de las identidades administradas para el recurso y los problemas conocidos antes de comenzar.

Las identidades administradas para los recursos de Azure proporcionan a los servicios de Azure una identidad administrada automáticamente en Azure Active Directory. Puede usar esta identidad para autenticar a cualquier servicio que admita la autenticación de Azure AD, sin necesidad de tener credenciales en el código.

En este artículo, con PowerShell, aprenderá a usar las siguientes identidades administradas para operaciones de recursos de Azure en una máquina virtual de Azure.

Nota

Este artículo se ha actualizado para usar el módulo Az de Azure PowerShell. El módulo Az de PowerShell es el módulo de PowerShell que se recomienda para interactuar con Azure. Para empezar a trabajar con el módulo Az de PowerShell, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Requisitos previos

Identidad administrada asignada por el sistema

En esta sección, aprenderá a habilitar y deshabilitar la identidad administrada asignada por el sistema con Azure PowerShell.

Habilitación de una identidad administrada asignada por el sistema durante la creación de una VM de Azure

Para crear una máquina virtual de Azure que tenga habilitada la identidad administrada asignada por el sistema, la cuenta debe tener la asignación de roles Colaborador de la máquina Virtual. No se requiere ninguna otra asignación de roles de directorio de Azure AD.

  1. Consulte una de las siguientes guías de inicio rápido sobre máquinas virtuales de Azure y finalice solo las secciones necesarias ("Iniciar sesión en Azure", "Creación de un grupo de recursos", "Creación de un grupo de red", "Creación de la máquina virtual").

    Cuando llegue a la sección "Creación de la máquina virtual", realice una pequeña modificación en la sintaxis del cmdlet New-AzVMConfig. Asegúrese de agregar un parámetro -IdentityType SystemAssigned para aprovisionar la máquina virtual con la identidad asignada por el sistema habilitada, por ejemplo:

    $vmConfig = New-AzVMConfig -VMName myVM -IdentityType SystemAssigned ...
    

Habilitación de una identidad administrada asignada por el sistema en una VM de Azure existente

Para habilitar una identidad administrada asignada por el sistema en una máquina virtual que en un principio se aprovisionó sin dicha identidad, la cuenta necesita la asignación de roles Colaborador de la máquina virtual. No se requiere ninguna otra asignación de roles de directorio de Azure AD.

  1. Recupere las propiedades de la máquina virtual mediante el cmdlet Get-AzVM. Después, para habilitar una identidad administrada asignada por el sistema, use el modificador -IdentityType en el cmdlet Update-AzVM:

    $vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
    Update-AzVM -ResourceGroupName myResourceGroup -VM $vm -IdentityType SystemAssigned
    

Adición de una identidad asignada por el sistema de una VM a un grupo

Después de haber habilitado la identidad asignada por el sistema en una VM, puede agregarla a un grupo. Con el siguiente procedimiento se agrega la identidad asignada por el sistema de la VM a un grupo.

  1. Recupere y anote el ObjectID (según lo especificado en el campo Id de valores devueltos) de la entidad de servicio de la VM:

    Get-AzADServicePrincipal -displayname "myVM"
    
  2. Recupere y anote el ObjectID (según lo especificado en el campo Id de valores devueltos) del grupo:

    Get-AzADGroup -searchstring "myGroup"
    
  3. Agregue la entidad de servicio de la VM al grupo:

    Add-AzureADGroupMember -ObjectId "<objectID of group>" -RefObjectId "<object id of VM service principal>"
    

Deshabilitación de una identidad administrada asignada por el sistema de una VM de Azure

Para deshabilitar una identidad administrada asignada por el sistema en una máquina virtual, la cuenta necesita la asignación de roles Colaborador de la máquina virtual. No se requiere ninguna otra asignación de roles de directorio de Azure AD.

Si tiene una máquina virtual que ya no necesita la identidad administrada asignada por el sistema, pero aún necesita identidades administradas asignadas por el usuario, use el siguiente cmdlet:

  1. Recupere las propiedades de la máquina virtual mediante el cmdlet Get-AzVM y establezca el parámetro -IdentityType en UserAssigned:

    $vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
    Update-AzVm -ResourceGroupName myResourceGroup -VM $vm -IdentityType "UserAssigned"
    

Si tiene una máquina virtual que ya no necesita la identidad administrada asignada por el sistema y no tiene identidades administradas asignadas por el usuario, use los siguientes comandos:

$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
Update-AzVm -ResourceGroupName myResourceGroup -VM $vm -IdentityType None

Identidad administrada asignada por el usuario

En esta sección, aprenderá a agregar y quitar una identidad administrada asignada por el usuario de una máquina virtual con Azure PowerShell.

Asignación de una identidad administrada asignada por el usuario a una máquina virtual durante la creación

Para asignar una identidad asignada por un usuario a una máquina virtual, la cuenta debe tener las asignaciones de roles Colaborador de la máquina virtual y Operador de identidades administradas. No se requiere ninguna otra asignación de roles de directorio de Azure AD.

  1. Consulte una de las siguientes guías de inicio rápido sobre máquinas virtuales de Azure y finalice solo las secciones necesarias ("Iniciar sesión en Azure", "Creación de un grupo de recursos", "Creación de un grupo de red", "Creación de la máquina virtual").

    Cuando llegue a la sección "Creación de la máquina virtual", realice una pequeña modificación en la sintaxis del cmdlet New-AzVMConfig. Agregue los parámetros -IdentityType UserAssigned y -IdentityID para aprovisionar la máquina virtual con una identidad asignada por el usuario. Reemplace <VM NAME>, <SUBSCRIPTION ID>, <RESROURCE GROUP> y <USER ASSIGNED IDENTITY NAME> con sus propios valores. Por ejemplo:

    $vmConfig = New-AzVMConfig -VMName <VM NAME> -IdentityType UserAssigned -IdentityID "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESROURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>..."
    

Asignación de una identidad administrada asignada por el usuario a una VM de Azure existente

Para asignar una identidad asignada por un usuario a una máquina virtual, la cuenta debe tener las asignaciones de roles Colaborador de la máquina virtual y Operador de identidades administradas. No se requiere ninguna otra asignación de roles de directorio de Azure AD.

  1. Cree una identidad administrada asignada por el usuario mediante el cmdlet New-AzUserAssignedIdentity. Anote Id en la salida, porque lo necesitará en el paso siguiente.

    Importante

    La creación de identidades administradas asignadas por el usuario solo admite caracteres alfanuméricos, subrayados y guiones (0-9, a-z, A-Z, _ o -). Además, el nombre debe limitarse a una longitud de entre 3 y 128 caracteres para que la asignación a VM/VMSS funcione correctamente. Para obtener más información, consulte Preguntas más frecuentes y problemas conocidos.

    New-AzUserAssignedIdentity -ResourceGroupName <RESOURCEGROUP> -Name <USER ASSIGNED IDENTITY NAME>
    
  2. Recupere las propiedades de la máquina virtual mediante el cmdlet Get-AzVM. A continuación, para asignar una identidad administrada asignada por el usuario a la máquina virtual de Azure, use los modificadores -IdentityType y -IdentityID en el cmdlet Update-AzVM. El valor del parámetro -IdentityId es el Id que ha anotado en el paso anterior. Reemplace <VM NAME>, <SUBSCRIPTION ID>, <RESROURCE GROUP> y <USER ASSIGNED IDENTITY NAME> con sus propios valores.

    Advertencia

    Para conservar las identidades administradas previamente asignadas al usuario, pero asignadas ahora a la máquina virtual, consulte la propiedad Identity del objeto de la máquina virtual (por ejemplo, $vm.Identity). Si se devuelven identidades administradas asignadas al usuario, inclúyalas en el siguiente comando junto con la nueva identidad administrada asignada por el usuario que desea asignar a la máquina virtual.

    $vm = Get-AzVM -ResourceGroupName <RESOURCE GROUP> -Name <VM NAME>
    Update-AzVM -ResourceGroupName <RESOURCE GROUP> -VM $vm -IdentityType UserAssigned -IdentityID "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESROURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>"
    

Eliminación de una identidad administrada asignada por el usuario de una VM de Azure

Para quitar una identidad asignada por un usuario de una máquina virtual, la cuenta necesita la asignación de roles Colaborador de la máquina virtual.

Si la máquina virtual tiene varias identidades administradas asignadas por el usuario, puede quitar todas, menos la última, mediante los comandos siguientes. Asegúrese de reemplazar los valores de los parámetros <RESOURCE GROUP> y <VM NAME> con sus propios valores. <USER ASSIGNED IDENTITY NAME> es la propiedad de nombre de la identidad administrada asignada por el usuario, que debe permanecer en la máquina virtual. Esta información puede encontrarse consultando la propiedad Identity del objeto de la máquina virtual. Por ejemplo, $vm.Identity:

$vm = Get-AzVm -ResourceGroupName myResourceGroup -Name myVm
Update-AzVm -ResourceGroupName myResourceGroup -VirtualMachine $vm -IdentityType UserAssigned -IdentityID <USER ASSIGNED IDENTITY NAME>

Si la máquina virtual no tiene una identidad administrada asignada por el sistema y desea quitar de ella todas las identidades administradas asignadas por el usuario, utilice el siguiente comando:

$vm = Get-AzVm -ResourceGroupName myResourceGroup -Name myVm
Update-AzVm -ResourceGroupName myResourceGroup -VM $vm -IdentityType None

Si la máquina virtual tiene identidades administradas asignadas tanto por el sistema como por el usuario, puede quitar todas las identidades administradas asignadas por el usuario si cambia para usar solo las identidades administradas asignadas por el sistema.

$vm = Get-AzVm -ResourceGroupName myResourceGroup -Name myVm
Update-AzVm -ResourceGroupName myResourceGroup -VirtualMachine $vm -IdentityType "SystemAssigned"

Pasos siguientes