Configurar identidades administradas para recursos de Azure en una VM de Azure mediante plantillasConfigure managed identities for Azure resources on an Azure VM using a templates

Managed Identities for Azure Resources es una característica de Azure Active Directory.Managed identities for Azure resources is a feature of Azure Active Directory. Cada servicio de Azure compatible con Managed Identities for Azure Resources está sujeto a su propia escala de tiempo.Each of the Azure services that support managed identities for Azure resources are subject to their own timeline. Asegúrese de revisar el estado de disponibilidad de las identidades administradas para el recurso y los problemas conocidos antes de comenzar.Make sure you review the availability status of managed identities for your resource and known issues before you begin.

Las identidades administradas para los recursos de Azure proporcionan a los servicios de Azure una identidad administrada automáticamente en Azure Active Directory.Managed identities for Azure resources provides Azure services with an automatically managed identity in 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.You can use this identity to authenticate to any service that supports Azure AD authentication, without having credentials in your code.

En este artículo, con la plantilla de implementación de Azure Resource Manager, aprenderá a usar las siguientes entidades administradas para operaciones de recursos de Azure en una VM de Azure:In this article, using the Azure Resource Manager deployment template, you learn how to perform the following managed identities for Azure resources operations on an Azure VM:

PrerrequisitosPrerequisites

Plantillas del Administrador de recursos de AzureAzure Resource Manager templates

Al igual que con Azure Portal y los scripts, las plantillas de Azure Resource Manager proporcionan la capacidad de implementar recursos nuevos o modificados definidos por un grupo de recursos de Azure.As with the Azure portal and scripting, Azure Resource Manager templates provide the ability to deploy new or modified resources defined by an Azure resource group. Existen varias opciones para la edición e implementación de plantillas, tanto localmente como basadas en el portal, incluidas:Several options are available for template editing and deployment, both local and portal-based, including:

Independientemente de la opción que elija, la sintaxis de la plantilla es la misma durante la implementación inicial y posteriores implementaciones.Regardless of the option you choose, template syntax is the same during initial deployment and redeployment. La habilitación de una identidad administrada asignada por el sistema o el usuario en una VM existente o nueva se realiza de la misma forma.Enabling a system or user-assigned managed identity on a new or existing VM is done in the same manner. Además, de forma predeterminada, Azure Resource Manager realiza una actualización incremental en las implementaciones.Also, by default, Azure Resource Manager does an incremental update to deployments.

Identidad administrada asignada por el sistemaSystem-assigned managed identity

En esta sección, se habilita y deshabilita una identidad administrada asignada por el sistema con una plantilla de Azure Resource Manager.In this section, you will enable and disable a system-assigned managed identity using an Azure Resource Manager template.

Habilitación de una identidad administrada asignada por el sistema durante la creación de una VM o en una VM existente de AzureEnable system-assigned managed identity during creation of an Azure VM or on an existing VM

Para habilitar 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.To enable system-assigned managed identity on a VM, your account needs the Virtual Machine Contributor role assignment. No se requiere ninguna otra asignación de roles de directorio de Azure AD.No additional Azure AD directory role assignments are required.

  1. Independientemente de que inicie sesión localmente en Azure o mediante Azure Portal, use una cuenta que esté asociada a la suscripción de Azure que contiene la máquina virtual.Whether you sign in to Azure locally or via the Azure portal, use an account that is associated with the Azure subscription that contains the VM.

  2. Para habilitar la identidad administrada asignada por el sistema, cargue la plantilla en un editor, busque el recurso de interés Microsoft.Compute/virtualMachines en la sección resources y agregue la propiedad "identity" en el mismo nivel que la propiedad "type": "Microsoft.Compute/virtualMachines".To enable system-assigned managed identity, load the template into an editor, locate the Microsoft.Compute/virtualMachines resource of interest within the resources section and add the "identity" property at the same level as the "type": "Microsoft.Compute/virtualMachines" property. Use la sintaxis siguiente:Use the following syntax:

    "identity": {
        "type": "SystemAssigned"
    },
    
  3. Cuando haya terminado, deben agregarse las siguientes secciones a la sección resource de la plantilla para que se parezca a la siguiente:When you're done, the following sections should added to the resource section of your template and it should resemble the following:

    "resources": [
         {
             //other resource provider properties...
             "apiVersion": "2018-06-01",
             "type": "Microsoft.Compute/virtualMachines",
             "name": "[variables('vmName')]",
             "location": "[resourceGroup().location]",
             "identity": {
                 "type": "SystemAssigned",
                 },
             },
    
             //The following appears only if you provisioned the optional VM extension (to be deprecated)
             {
             "type": "Microsoft.Compute/virtualMachines/extensions",
             "name": "[concat(variables('vmName'),'/ManagedIdentityExtensionForWindows')]",
             "apiVersion": "2018-06-01",
             "location": "[resourceGroup().location]",
             "dependsOn": [
                 "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
             ],
             "properties": {
                 "publisher": "Microsoft.ManagedIdentity",
                 "type": "ManagedIdentityExtensionForWindows",
                 "typeHandlerVersion": "1.0",
                 "autoUpgradeMinorVersion": true,
                 "settings": {
                     "port": 50342
                 }
             }
         }
     ]
    

Asignación de un rol a la identidad administrada asignada por el sistema de la VMAssign a role the VM's system-assigned managed identity

Después de haber habilitado la identidad administrada asignada por el sistema en la VM, es aconsejable concederle un rol con el acceso de lector al grupo de recursos en el que se creó.After you have enabled system-assigned managed identity on your VM, you may want to grant it a role such as Reader access to the resource group in which it was created.

Para asignar un rol a una identidad asignada por el sistema de la máquina virtual, la cuenta debe tener la asignación del rol Administrador de acceso de usuario.To assign a role to your VM's system-assigned identity, your account needs the User Access Administrator role assignment.

  1. Independientemente de que inicie sesión localmente en Azure o mediante Azure Portal, use una cuenta que esté asociada a la suscripción de Azure que contiene la máquina virtual.Whether you sign in to Azure locally or via the Azure portal, use an account that is associated with the Azure subscription that contains the VM.

  2. Cargue la plantilla en un editor y agregue la siguiente información para dar a la máquina virtual acceso de lector al grupo de recursos en el que se creó.Load the template into an editor and add the following information to give your VM Reader access to the resource group in which it was created. La estructura de la plantilla puede variar según el editor y el modelo de implementación que elija.Your template structure may vary depending on the editor and the deployment model you choose.

    Agregue lo siguiente bajo la sección parameters:Under the parameters section add the following:

    "builtInRoleType": {
        "type": "string",
        "defaultValue": "Reader"
    },
    "rbacGuid": {
        "type": "string"
    }
    

    Agregue lo siguiente bajo la sección variables:Under the variables section add the following:

    "Reader": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]"
    

    Agregue lo siguiente bajo la sección resources:Under the resources section add the following:

    {
        "apiVersion": "2017-09-01",
        "type": "Microsoft.Authorization/roleAssignments",
        "name": "[parameters('rbacGuid')]",
        "properties": {
            "roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
            "principalId": "[reference(variables('vmResourceId'), '2017-12-01', 'Full').identity.principalId]",
            "scope": "[resourceGroup().id]"
        },
         "dependsOn": [
            "[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"
        ]
    }
    

Deshabilitación de una identidad administrada asignada por el sistema en una VM de AzureDisable a system-assigned managed identity from an Azure VM

Para eliminar una identidad administrada asignada por el sistema de una máquina virtual, la cuenta necesita la asignación de roles Colaborador de la máquina virtual.To remove system-assigned managed identity from a VM, your account needs the Virtual Machine Contributor role assignment. No se requiere ninguna otra asignación de roles de directorio de Azure AD.No additional Azure AD directory role assignments are required.

  1. Independientemente de que inicie sesión localmente en Azure o mediante Azure Portal, use una cuenta que esté asociada a la suscripción de Azure que contiene la máquina virtual.Whether you sign in to Azure locally or via the Azure portal, use an account that is associated with the Azure subscription that contains the VM.

  2. Cargue la plantilla en un editor y busque el Microsoft.Compute/virtualMachinesrecurso de interés dentro de la sección resources.Load the template into an editor and locate the Microsoft.Compute/virtualMachines resource of interest within the resources section. Si dispone de una VM que solo tenga una identidad administrada asignada por el sistema, puede deshabilitarla cambiando el tipo de identidad a None.If you have a VM that only has system-assigned managed identity, you can disable it by changing the identity type to None.

    Microsoft.Compute/virtualMachines versión 2018-06-01 de la APIMicrosoft.Compute/virtualMachines API version 2018-06-01

    Si la VM tiene identidades administradas asignadas tanto por el usuario como por el sistema, quite SystemAssigned del tipo de identidad y conserve UserAssigned junto con los valores de diccionario userAssignedIdentities.If your VM has both system and user-assigned managed identities, remove SystemAssigned from the identity type and keep UserAssigned along with the userAssignedIdentities dictionary values.

    Microsoft.Compute/virtualMachines versión 2018-06-01 de la APIMicrosoft.Compute/virtualMachines API version 2018-06-01

    Si apiVersion es 2017-12-01 y la VM tiene identidades administradas asignadas tanto por el usuario como por el sistema, quite SystemAssigned del tipo de identidad y conserve UserAssigned junto con la matriz identityIds de identidades administradas asignadas por el usuario.If your apiVersion is 2017-12-01 and your VM has both system and user-assigned managed identities, remove SystemAssigned from the identity type and keep UserAssigned along with the identityIds array of the user-assigned managed identities.

En el ejemplo siguiente se muestra cómo quitar una identidad administrada asignada por el sistema de una VM sin identidades administradas asignadas por el usuario:The following example shows you how remove a system-assigned managed identity from a VM with no user-assigned managed identities:

{
    "apiVersion": "2018-06-01",
    "type": "Microsoft.Compute/virtualMachines",
    "name": "[parameters('vmName')]",
    "location": "[resourceGroup().location]",
    "identity": {
        "type": "None"
    }
}

Identidad administrada asignada por el usuarioUser-assigned managed identity

En esta sección, asignará una identidad administrada asignada por el usuario a una VM de Azure mediante la plantilla de Azure Resource Manager.In this section, you assign a user-assigned managed identity to an Azure VM using Azure Resource Manager template.

Nota

Para crear una identidad administrada asignada por el usuario mediante una plantilla de Azure Resource Manager, consulte Create a user-assigned managed identity (Creación de una identidad administrada asignada por el usuario).To create a user-assigned managed identity using an Azure Resource Manager Template, see Create a user-assigned managed identity.

Asignación de una identidad administrada asignada por el usuario a una VM de AzureAssign a user-assigned managed identity to an Azure VM

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.To assign a user-assigned identity to a VM, your account needs the Virtual Machine Contributor and Managed Identity Operator role assignments. No se requiere ninguna otra asignación de roles de directorio de Azure AD.No additional Azure AD directory role assignments are required.

  1. En el elemento resources, agregue la siguiente entrada para asignar una identidad administrada asignada por el usuario a la VM.Under the resources element, add the following entry to assign a user-assigned managed identity to your VM. No olvide reemplazar <USERASSIGNEDIDENTITY> con el nombre de la identidad administrada asignada por el usuario que ha creado.Be sure to replace <USERASSIGNEDIDENTITY> with the name of the user-assigned managed identity you created.

    Microsoft.Compute/virtualMachines versión 2018-06-01 de la APIMicrosoft.Compute/virtualMachines API version 2018-06-01

    Si apiVersion es 2018-06-01, las identidades administradas asignadas por el usuario se almacenan en el formato de diccionario userAssignedIdentities y el valor <USERASSIGNEDIDENTITYNAME> debe almacenarse en una variable definida en la sección variables de la plantilla.If your apiVersion is 2018-06-01, your user-assigned managed identities are stored in the userAssignedIdentities dictionary format and the <USERASSIGNEDIDENTITYNAME> value must be stored in a variable defined in the variables section of your template.

     {
         "apiVersion": "2018-06-01",
         "type": "Microsoft.Compute/virtualMachines",
         "name": "[variables('vmName')]",
         "location": "[resourceGroup().location]",
         "identity": {
             "type": "userAssigned",
             "userAssignedIdentities": {
                 "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('<USERASSIGNEDIDENTITYNAME>'))]": {}
             }
         }
     }
    

    Microsoft.Compute/virtualMachines versión 2017-12-01 de la APIMicrosoft.Compute/virtualMachines API version 2017-12-01

    Si apiVersion es 2017-12-01, las identidades administradas asignadas por el usuario se almacenan en la matriz identityIds y el valor <USERASSIGNEDIDENTITYNAME> debe almacenarse en una variable definida en la sección variables de la plantilla.If your apiVersion is 2017-12-01, your user-assigned managed identities are stored in the identityIds array and the <USERASSIGNEDIDENTITYNAME> value must be stored in a variable defined in the variables section of your template.

    {
        "apiVersion": "2017-12-01",
        "type": "Microsoft.Compute/virtualMachines",
        "name": "[variables('vmName')]",
        "location": "[resourceGroup().location]",
        "identity": {
            "type": "userAssigned",
            "identityIds": [
                "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('<USERASSIGNEDIDENTITYNAME>'))]"
            ]
        }
    }
    
  2. Cuando haya terminado, deben agregarse las siguientes secciones a la sección resource de la plantilla para que se parezca a la siguiente:When you're done, the following sections should added to the resource section of your template and it should resemble the following:

    Microsoft.Compute/virtualMachines versión 2018-06-01 de la APIMicrosoft.Compute/virtualMachines API version 2018-06-01

    "resources": [
         {
             //other resource provider properties...
             "apiVersion": "2018-06-01",
             "type": "Microsoft.Compute/virtualMachines",
             "name": "[variables('vmName')]",
             "location": "[resourceGroup().location]",
             "identity": {
                 "type": "userAssigned",
                 "userAssignedIdentities": {
                    "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('<USERASSIGNEDIDENTITYNAME>'))]": {}
                 }
             }
         },
         //The following appears only if you provisioned the optional VM extension (to be deprecated)                  
         {
             "type": "Microsoft.Compute/virtualMachines/extensions",
             "name": "[concat(variables('vmName'),'/ManagedIdentityExtensionForWindows')]",
             "apiVersion": "2018-06-01-preview",
             "location": "[resourceGroup().location]",
             "dependsOn": [
                 "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
             ],
             "properties": {
                 "publisher": "Microsoft.ManagedIdentity",
                 "type": "ManagedIdentityExtensionForWindows",
                 "typeHandlerVersion": "1.0",
                 "autoUpgradeMinorVersion": true,
                 "settings": {
                     "port": 50342
                 }
             }
         }
     ]   
    

    Microsoft.Compute/virtualMachines versión 2017-12-01 de la APIMicrosoft.Compute/virtualMachines API version 2017-12-01

    "resources": [
         {
             //other resource provider properties...
             "apiVersion": "2017-12-01",
             "type": "Microsoft.Compute/virtualMachines",
             "name": "[variables('vmName')]",
             "location": "[resourceGroup().location]",
             "identity": {
                 "type": "userAssigned",
                 "identityIds": [
                    "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('<USERASSIGNEDIDENTITYNAME>'))]"
                 ]
             }
         },
    
         //The following appears only if you provisioned the optional VM extension (to be deprecated)                   
         {
             "type": "Microsoft.Compute/virtualMachines/extensions",
             "name": "[concat(variables('vmName'),'/ManagedIdentityExtensionForWindows')]",
             "apiVersion": "2015-05-01-preview",
             "location": "[resourceGroup().location]",
             "dependsOn": [
                 "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
             ],
             "properties": {
                 "publisher": "Microsoft.ManagedIdentity",
                 "type": "ManagedIdentityExtensionForWindows",
                 "typeHandlerVersion": "1.0",
                 "autoUpgradeMinorVersion": true,
                 "settings": {
                     "port": 50342
                 }
             }
        }
     ]
    

Eliminación de una identidad administrada asignada por el usuario de una VM de AzureRemove a user-assigned managed identity from an Azure VM

Para eliminar una identidad asignada por el usuario de una máquina virtual, la cuenta necesita la asignación de roles Colaborador de la máquina virtual.To remove a user-assigned identity from a VM, your account needs the Virtual Machine Contributor role assignment. No se requiere ninguna otra asignación de roles de directorio de Azure AD.No additional Azure AD directory role assignments are required.

  1. Independientemente de que inicie sesión localmente en Azure o mediante Azure Portal, use una cuenta que esté asociada a la suscripción de Azure que contiene la máquina virtual.Whether you sign in to Azure locally or via the Azure portal, use an account that is associated with the Azure subscription that contains the VM.

  2. Cargue la plantilla en un editor y busque el Microsoft.Compute/virtualMachinesrecurso de interés dentro de la sección resources.Load the template into an editor and locate the Microsoft.Compute/virtualMachines resource of interest within the resources section. Si dispone de una máquina virtual que solo tenga una identidad administrada asignada por el usuario, puede deshabilitarla cambiando el tipo de identidad a None.If you have a VM that only has user-assigned managed identity, you can disable it by changing the identity type to None.

    En el ejemplo siguiente se muestra cómo quitar todas las identidades administradas asignadas por un usuario de una VM sin identidades administradas asignadas por el sistema:The following example shows you how remove all user-assigned managed identities from a VM with no system-assigned managed identities:

     {
       "apiVersion": "2018-06-01",
       "type": "Microsoft.Compute/virtualMachines",
       "name": "[parameters('vmName')]",
       "location": "[resourceGroup().location]",
       "identity": {
           "type": "None"
           },
     }
    

    Microsoft.Compute/virtualMachines versión 2018-06-01 de la APIMicrosoft.Compute/virtualMachines API version 2018-06-01

    Para quitar una identidad administrada asignada por un usuario único de una VM, elimínela del diccionario useraAssignedIdentities.To remove a single user-assigned managed identity from a VM, remove it from the useraAssignedIdentities dictionary.

    Si tiene una identidad administrada asignada por el sistema, consérvela en el valor type de identity.If you have a system-assigned managed identity, keep it in the in the type value under the identity value.

    Microsoft.Compute/virtualMachines versión 2017-12-01 de la APIMicrosoft.Compute/virtualMachines API version 2017-12-01

    Para quitar una identidad administrada asignada por un usuario único de una máquina virtual, elimínela de la matriz identityIds.To remove a single user-assigned managed identity from a VM, remove it from the identityIds array.

    Si tiene una identidad administrada asignada por el sistema, consérvela en el valor type de identity.If you have a system-assigned managed identity, keep it in the in the type value under the identity value.

Pasos siguientesNext steps