Configuración de identidades administradas de recursos de Azure en un conjunto de escalado de máquinas virtuales mediante llamadas a la API REST

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

En este artículo, usará CURL para llamar al punto de conexión REST de Azure Resource Manager, con lo que aprenderá a realizar las siguientes operaciones de identidades administradas de recursos de Azure en un conjunto de escalado de máquinas virtuales:

  • Habilitación y deshabilitación de la identidad administrada asignada por el sistema en un conjunto de escalado de máquinas virtuales de Azure
  • Adición y eliminación de una identidad asignada por el usuario un conjunto de escalado de máquinas virtuales de Azure

Si aún no tiene una cuenta de Azure, regístrese para una cuenta gratuita antes de continuar.

Prerrequisitos

  • Si no está familiarizado con las identidades administradas para los recursos de Azure, vea ¿Qué son las identidades administradas para recursos de Azure?. Para obtener información sobre los tipos de identidad administrada asignados por el sistema y asignados por el usuario, consulte Tipos de identidad administrada.

  • Para llevar a cabo las operaciones de administración de este artículo, su cuenta debe tener las siguientes asignaciones de roles de Azure:

    Nota:

    No se requiere ninguna otra asignación de roles de directorio de Microsoft Entra.

Identidad administrada asignada por el sistema

En esta sección, aprenderá a habilitar y deshabilitar una identidad administrada asignada por el sistema en un conjunto de escalado de máquinas virtuales mediante CURL para llamar al punto de conexión REST de Azure Resource Manager.

Habilitación de la identidad administrada asignada por el sistema durante la creación de un conjunto de escalado de máquinas virtuales

Para crear un conjunto de escalado de máquinas virtuales con la identidad administrada asignada por el sistema habilitada, debe crear un conjunto de escalado de máquinas virtuales y recuperar un token de acceso para usar CURL y llamar al punto de conexión de Resource Manager con el valor del tipo de identidad administrada asignada por el sistema.

  1. Cree un grupo de recursos para contener e implementar el conjunto de escalado de máquinas virtuales y sus recursos relacionados, con az group create. Puede omitir este paso si ya tiene un grupo de recursos que le gustaría usar en su lugar:

    az group create --name myResourceGroup --location westus
    
  2. Cree una interfaz de red para el conjunto de escalado de máquinas virtuales:

     az network nic create -g myResourceGroup --vnet-name myVnet --subnet mySubnet -n myNic
    
  3. Recupere un token de acceso de portador, que utilizará en el siguiente paso en el encabezado de autorización para crear el conjunto de escalado de máquinas virtuales con una identidad administrada asignada por el sistema.

    az account get-access-token
    
  4. Utilice Azure Cloud Shell para crear un conjunto de escalado de máquinas virtuales mediante CURL para llamar al punto de conexión REST de Azure Resource Manager. En el ejemplo siguiente se crea un conjunto de escalado de máquinas virtuales denominado myVMSS en myResourceGroup con una identidad administrada asignada por el sistema, como se identificó en el cuerpo de la solicitud por el valor "identity":{"type":"SystemAssigned"}. Reemplace <ACCESS TOKEN> por el valor que ha recibido en el paso anterior cuando solicitó un token de acceso de portador y el valor <SUBSCRIPTION ID> según sea apropiado para su entorno.

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01' -X PUT -d '{"sku":{"tier":"Standard","capacity":3,"name":"Standard_D1_v2"},"location":"eastus","identity":{"type":"SystemAssigned"},"properties":{"overprovision":true,"virtualMachineProfile":{"storageProfile":{"imageReference":{"sku":"2016-Datacenter","publisher":"MicrosoftWindowsServer","version":"latest","offer":"WindowsServer"},"osDisk":{"caching":"ReadWrite","managedDisk":{"storageAccountType":"StandardSSD_LRS"},"createOption":"FromImage"}},"osProfile":{"computerNamePrefix":"myVMSS","adminUsername":"azureuser","adminPassword":"myPassword12"},"networkProfile":{"networkInterfaceConfigurations":[{"name":"myVMSS","properties":{"primary":true,"enableIPForwarding":true,"ipConfigurations":[{"name":"myVMSS","properties":{"subnet":{"id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet"}}}]}}]}},"upgradePolicy":{"mode":"Manual"}}}' -H "Content-Type: application/json" -H "Authorization: Bearer <ACCESS TOKEN>"
    
    PUT https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01 HTTP/1.1
    

    Encabezados de solicitud

    Encabezado de solicitud Descripción
    Content-Type Necesario. Establézcalo en application/json.
    Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

    Cuerpo de la solicitud

     {
        "sku":{
           "tier":"Standard",
           "capacity":3,
           "name":"Standard_D1_v2"
        },
        "location":"eastus",
        "identity":{
           "type":"SystemAssigned"
        },
        "properties":{
           "overprovision":true,
           "virtualMachineProfile":{
              "storageProfile":{
                 "imageReference":{
                    "sku":"2016-Datacenter",
                    "publisher":"MicrosoftWindowsServer",
                    "version":"latest",
                    "offer":"WindowsServer"
                 },
                 "osDisk":{
                    "caching":"ReadWrite",
                    "managedDisk":{
                       "storageAccountType":"StandardSSD_LRS"
                    },
                    "createOption":"FromImage"
                 }
              },
              "osProfile":{
                 "computerNamePrefix":"myVMSS",
                 "adminUsername":"azureuser",
                 "adminPassword":"myPassword12"
              },
              "networkProfile":{
                 "networkInterfaceConfigurations":[
                    {
                       "name":"myVMSS",
                       "properties":{
                          "primary":true,
                          "enableIPForwarding":true,
                          "ipConfigurations":[
                             {
                                "name":"myVMSS",
                                "properties":{
                                   "subnet":{
                                      "id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet"
                                   }
                                }
                             }
                          ]
                       }
                    }
                 ]
              }
           },
           "upgradePolicy":{
              "mode":"Manual"
           }
        }
     }  
    

Habilitación de la identidad administrada asignada por el sistema en un conjunto de escalado de máquinas virtuales existente

Para habilitar la identidad administrada asignada por el sistema en un conjunto de escalado de máquinas virtuales existente, debe adquirir un token de acceso y, después, utilizar CURL para llamar al punto de conexión REST de Resource Manager y actualizar el tipo de identidad.

  1. Recupere un token de acceso de portador, que utilizará en el siguiente paso en el encabezado de autorización para crear el conjunto de escalado de máquinas virtuales con una identidad administrada asignada por el sistema.

    az account get-access-token
    
  2. Use el comando CURL siguiente para llamar al punto de conexión REST de Azure Resource Manager para habilitar la identidad administrada asignada por el sistema en el conjunto de escalado de máquinas virtuales, como se identifica en el cuerpo de la solicitud por el valor {"identity":{"type":"SystemAssigned"} para un conjunto de escalado de máquinas virtuales denominado myVMSS. Reemplace <ACCESS TOKEN> por el valor que ha recibido en el paso anterior cuando solicitó un token de acceso de portador y el valor <SUBSCRIPTION ID> según sea apropiado para su entorno.

    Importante

    Para asegurarse de que no elimina ninguna de las identidades administradas asignadas por el usuario que están asignadas al conjunto de escalado de máquinas virtuales, necesita enumerar las identidades asignadas por el usuario mediante este comando CURL: curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/virtualMachineScaleSets/<VMSS NAME>?api-version=2018-06-01' -H "Authorization: Bearer <ACCESS TOKEN>". Si tiene asignadas identidades administradas asignadas por el usuario al conjunto de escalado de máquinas virtuales como se identifica en el valor identity de la respuesta, vaya al paso 3 que muestra cómo conservar las identidades administradas asignadas por el usuario mientras se habilita la identidad administrada asignada por el sistema en el conjunto de escalado de máquinas virtuales.

     curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01' -X PATCH -d '{"identity":{"type":"SystemAssigned"}}' -H "Content-Type: application/json" -H Authorization:"Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01 HTTP/1.1
    

    Encabezados de solicitud

    Encabezado de solicitud Descripción
    Content-Type Necesario. Establézcalo en application/json.
    Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

    Cuerpo de la solicitud

     {
        "identity":{
           "type":"SystemAssigned"
        }
     }
    
  3. Para habilitar la identidad administrada asignada por el sistema en un conjunto de escalado de máquinas virtuales con identidades administradas existentes asignadas por el usuario, debe agregar SystemAssigned al valor type.

    Por ejemplo, si el conjunto de escalado de máquinas virtuales tiene asignadas las identidades administradas asignadas por el usuario ID1 y ID2, y desea agregar una identidad administrada asignada por el sistema a dicho conjunto de escalado de máquinas virtuales, utilice la siguiente llamada CURL. Reemplace <ACCESS TOKEN> y <SUBSCRIPTION ID> por los valores adecuados para su entorno.

    La versión de API 2018-06-01 almacena las identidades administradas asignadas por el usuario en el valor userAssignedIdentities en un formato de diccionario, en contraposición con el valor identityIds en formato de matriz que se usaba en la versión 2017-12-01 de la API.

    VERSIÓN DE API 2018-06-01

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01' -X PATCH -d '{"identity":{"type":"SystemAssigned,UserAssigned", "userAssignedIdentities":{"/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1":{},"/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2":{}}}}' -H "Content-Type: application/json" -H Authorization:"Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01 HTTP/1.1
    

    Encabezados de solicitud

    Encabezado de solicitud Descripción
    Content-Type Necesario. Establézcalo en application/json.
    Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

    Cuerpo de la solicitud

     {
        "identity":{
           "type":"SystemAssigned,UserAssigned",
           "userAssignedIdentities":{
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1":{
              },
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2":{
    
              }
           }
        }
     }
    

    VERSIÓN DE API 2017-12-01

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2017-12-01' -X PATCH -d '{"identity":{"type":"SystemAssigned,UserAssigned", "identityIds":["/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1","/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2"]}}' -H "Content-Type: application/json" -H Authorization:"Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2017-12-01 HTTP/1.1
    

    Encabezados de solicitud

    Encabezado de solicitud Descripción
    Content-Type Necesario. Establézcalo en application/json.
    Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

    Cuerpo de la solicitud

     {
        "identity":{
           "type":"SystemAssigned,UserAssigned",
           "identityIds":[
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1",
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2"
           ]
        }
     }
    

Deshabilitación de una identidad administrada asignada por el sistema desde un conjunto de escalado de máquinas virtuales

Para deshabilitar la identidad asignada por el sistema en un conjunto de escalado de máquinas virtuales existente, debe adquirir un token de acceso y, después, utilizar CURL para llamar al punto de conexión REST de Resource Manager y actualizar el tipo de identidad a None.

  1. Recupere un token de acceso de portador, que utilizará en el siguiente paso en el encabezado de autorización para crear el conjunto de escalado de máquinas virtuales con una identidad administrada asignada por el sistema.

    az account get-access-token
    
  2. Actualice el conjunto de escalado mediante CURL para llamar al punto de conexión REST de Azure Resource Manager para deshabilitar la identidad administrada asignada por el sistema. En el ejemplo siguiente, se deshabilita una identidad administrada asignada por el sistema en el cuerpo de la solicitud por el valor {"identity":{"type":"None"}} desde un conjunto de escalado de máquinas virtuales denominado myVMSS. Reemplace <ACCESS TOKEN> por el valor que ha recibido en el paso anterior cuando solicitó un token de acceso de portador y el valor <SUBSCRIPTION ID> según sea apropiado para su entorno.

    Importante

    Para asegurarse de que no elimina ninguna de las identidades administradas asignadas por el usuario que están asignadas al conjunto de escalado de máquinas virtuales, necesita enumerar las identidades asignadas por el usuario mediante este comando CURL: curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/virtualMachineScaleSets/<VMSS NAME>?api-version=2018-06-01' -H "Authorization: Bearer <ACCESS TOKEN>". Si tiene asignadas identidades administradas asignadas por el usuario al conjunto de escalado de máquinas virtuales, vaya al paso 3 que muestra cómo conservar las identidades administradas asignadas por el usuario mientras se quita la identidad administrada asignada por el sistema del conjunto de escalado de máquinas virtuales.

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01' -X PATCH -d '{"identity":{"type":"None"}}' -H "Content-Type: application/json" -H Authorization:"Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01 HTTP/1.1
    

    Encabezados de solicitud

    Encabezado de solicitud Descripción
    Content-Type Necesario. Establézcalo en application/json.
    Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

    Cuerpo de la solicitud

     {
        "identity":{
           "type":"None"
        }
     }
    

    Para quitar la identidad administrada asignada por el sistema de un conjunto de escalado de máquinas virtuales que tiene identidades administradas asignadas por el usuario, quite SystemAssigned del valor {"identity":{"type:" "}} mientras mantiene el valor UserAssigned y los valores de diccionario userAssignedIdentities, si está utilizando la versión de API 2018-06-01. Si está usando la versión de API 2017-12-01 o versiones anteriores, mantenga la matriz identityIds.

Identidad administrada asignada por el usuario

En esta sección, aprenderá a agregar y quitar una identidad administrada asignada por el usuario en un conjunto de escalado de máquinas virtuales mediante CURL para llamar al punto de conexión REST de Azure Resource Manager.

Asignación de una identidad administrada asignada por el usuario durante la creación de un conjunto de escalado de máquinas virtuales

  1. Recupere un token de acceso de portador, que utilizará en el siguiente paso en el encabezado de autorización para crear el conjunto de escalado de máquinas virtuales con una identidad administrada asignada por el sistema.

    az account get-access-token
    
  2. Cree una interfaz de red para el conjunto de escalado de máquinas virtuales:

     az network nic create -g myResourceGroup --vnet-name myVnet --subnet mySubnet -n myNic
    
  3. Recupere un token de acceso de portador, que utilizará en el siguiente paso en el encabezado de autorización para crear el conjunto de escalado de máquinas virtuales con una identidad administrada asignada por el sistema.

    az account get-access-token
    
  4. Cree una identidad asignada por el usuario mediante las instrucciones que se encuentran aquí: Creación de una identidad administrada asignada por el usuario.

  5. Cree un conjunto de escalado de máquinas virtuales con CURL para llamar al punto de conexión REST de Azure Resource Manager. En el ejemplo siguiente se crea un conjunto de escalado de máquinas virtuales denominado myVMSS en el grupo de recursos myResourceGroup con una identidad administrada asignada por el usuario ID1, como se identificó en el cuerpo de la solicitud por el valor "identity":{"type":"UserAssigned"}. Reemplace <ACCESS TOKEN> por el valor que ha recibido en el paso anterior cuando solicitó un token de acceso de portador y el valor <SUBSCRIPTION ID> según sea apropiado para su entorno.

    VERSIÓN DE API 2018-06-01

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01' -X PUT -d '{"sku":{"tier":"Standard","capacity":3,"name":"Standard_D1_v2"},"location":"eastus","identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1":{}}},"properties":{"overprovision":true,"virtualMachineProfile":{"storageProfile":{"imageReference":{"sku":"2016-Datacenter","publisher":"MicrosoftWindowsServer","version":"latest","offer":"WindowsServer"},"osDisk":{"caching":"ReadWrite","managedDisk":{"storageAccountType":"StandardSSD_LRS"},"createOption":"FromImage"}},"osProfile":{"computerNamePrefix":"myVMSS","adminUsername":"azureuser","adminPassword":"myPassword12"},"networkProfile":{"networkInterfaceConfigurations":[{"name":"myVMSS","properties":{"primary":true,"enableIPForwarding":true,"ipConfigurations":[{"name":"myVMSS","properties":{"subnet":{"id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet"}}}]}}]}},"upgradePolicy":{"mode":"Manual"}}}' -H "Content-Type: application/json" -H "Authorization: Bearer <ACCESS TOKEN>"
    
    PUT https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01 HTTP/1.1
    

    Encabezados de solicitud

    Encabezado de solicitud Descripción
    Content-Type Necesario. Establézcalo en application/json.
    Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

    Cuerpo de la solicitud

     {
        "sku":{
           "tier":"Standard",
           "capacity":3,
           "name":"Standard_D1_v2"
        },
        "location":"eastus",
        "identity":{
           "type":"UserAssigned",
           "userAssignedIdentities":{
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1":{
    
              }
           }
        },
        "properties":{
           "overprovision":true,
           "virtualMachineProfile":{
              "storageProfile":{
                 "imageReference":{
                    "sku":"2016-Datacenter",
                    "publisher":"MicrosoftWindowsServer",
                    "version":"latest",
                    "offer":"WindowsServer"
                 },
                 "osDisk":{
                    "caching":"ReadWrite",
                    "managedDisk":{
                       "storageAccountType":"StandardSSD_LRS"
                    },
                    "createOption":"FromImage"
                 }
              },
              "osProfile":{
                 "computerNamePrefix":"myVMSS",
                 "adminUsername":"azureuser",
                 "adminPassword":"myPassword12"
              },
              "networkProfile":{
                 "networkInterfaceConfigurations":[
                    {
                       "name":"myVMSS",
                       "properties":{
                          "primary":true,
                          "enableIPForwarding":true,
                          "ipConfigurations":[
                             {
                                "name":"myVMSS",
                                "properties":{
                                   "subnet":{
                                      "id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet"
                                   }
                                }
                             }
                          ]
                       }
                    }
                 ]
              }
           },
           "upgradePolicy":{
              "mode":"Manual"
           }
        }
     }
    

    VERSIÓN DE API 2017-12-01

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2017-12-01' -X PUT -d '{"sku":{"tier":"Standard","capacity":3,"name":"Standard_D1_v2"},"location":"eastus","identity":{"type":"UserAssigned","identityIds":["/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"]},"properties":{"overprovision":true,"virtualMachineProfile":{"storageProfile":{"imageReference":{"sku":"2016-Datacenter","publisher":"MicrosoftWindowsServer","version":"latest","offer":"WindowsServer"},"osDisk":{"caching":"ReadWrite","managedDisk":{"storageAccountType":"StandardSSD_LRS"},"createOption":"FromImage"}},"osProfile":{"computerNamePrefix":"myVMSS","adminUsername":"azureuser","adminPassword":"myPassword12"},"networkProfile":{"networkInterfaceConfigurations":[{"name":"myVMSS","properties":{"primary":true,"enableIPForwarding":true,"ipConfigurations":[{"name":"myVMSS","properties":{"subnet":{"id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet"}}}]}}]}},"upgradePolicy":{"mode":"Manual"}}}' -H "Content-Type: application/json" -H "Authorization: Bearer <ACCESS TOKEN>"
    
    PUT https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2017-12-01 HTTP/1.1
    

    Encabezados de solicitud

    Encabezado de solicitud Descripción
    Content-Type Necesario. Establézcalo en application/json.
    Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

    Cuerpo de la solicitud

     {
        "sku":{
           "tier":"Standard",
           "capacity":3,
           "name":"Standard_D1_v2"
        },
        "location":"eastus",
        "identity":{
           "type":"UserAssigned",
           "identityIds":[
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"
           ]
        },
        "properties":{
           "overprovision":true,
           "virtualMachineProfile":{
              "storageProfile":{
                 "imageReference":{
                    "sku":"2016-Datacenter",
                    "publisher":"MicrosoftWindowsServer",
                    "version":"latest",
                    "offer":"WindowsServer"
                 },
                 "osDisk":{
                    "caching":"ReadWrite",
                    "managedDisk":{
                       "storageAccountType":"StandardSSD_LRS"
                    },
                    "createOption":"FromImage"
                 }
              },
              "osProfile":{
                 "computerNamePrefix":"myVMSS",
                 "adminUsername":"azureuser",
                 "adminPassword":"myPassword12"
              },
              "networkProfile":{
                 "networkInterfaceConfigurations":[
                    {
                       "name":"myVMSS",
                       "properties":{
                          "primary":true,
                          "enableIPForwarding":true,
                          "ipConfigurations":[
                             {
                                "name":"myVMSS",
                                "properties":{
                                   "subnet":{
                                      "id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet"
                                   }
                                }
                             }
                          ]
                       }
                    }
                 ]
              }
           },
           "upgradePolicy":{
              "mode":"Manual"
           }
        }
     }
    

Asignación de una identidad administrada asignada por el usuario a un conjunto de escalado de máquinas virtuales de Azure existente

  1. Recupere un token de acceso de portador, que utilizará en el siguiente paso en el encabezado de autorización para crear el conjunto de escalado de máquinas virtuales con una identidad administrada asignada por el sistema.

    az account get-access-token
    
  2. Cree una identidad administrada asignada por el usuario mediante las instrucciones que se encuentran aquí: Creación de una identidad administrada asignada por el usuario.

  3. Para asegurarse de que no elimina las identidades administradas asignadas por el usuario o por el sistema que están asignadas al conjunto de escalado de máquinas virtuales, necesita enumerar los tipos de identidades asignados al conjunto de escalado de máquinas virtuales mediante el comando CURL siguiente. Si ha administrado identidades asignadas al conjunto de escalado de máquinas virtuales, estas se enumeran en el valor identity.

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/virtualMachineScaleSets/<VMSS NAME>?api-version=2018-06-01' -H "Authorization: Bearer <ACCESS TOKEN>"
    
    GET https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/virtualMachineScaleSets/<VMSS NAME>?api-version=2018-06-01 HTTP/1.1
    

    Encabezados de solicitud

    Encabezado de solicitud Descripción
    Autorización Necesario. Establézcalo en un token de acceso Bearer válido.
  4. Si no tiene ninguna identidad administrada asignada por el usuario o por el sistema en el conjunto de escalado de máquinas virtuales, use el siguiente comando CURL para llamar al punto de conexión REST de Azure Resource Manager para asignar la primera identidad administrada asignada por el usuario al conjunto de escalado de máquinas virtuales. Si tiene asignadas identidades administradas asignadas por el usuario o por el sistema al conjunto de escalado de máquinas virtuales, vaya al paso 5 que muestra cómo agregar varias identidades administradas asignadas por el usuario a un conjunto de escalado de máquinas virtuales mientras se mantiene la identidad administrada asignada por el sistema.

    En el ejemplo siguiente se asigna una identidad administrada asignada por el usuario, ID1, a un conjunto de escalado de máquinas virtuales denominado myVMSS en el grupo de recursos myResourceGroup. Reemplace <ACCESS TOKEN> por el valor que ha recibido en el paso anterior cuando solicitó un token de acceso de portador y el valor <SUBSCRIPTION ID> según sea apropiado para su entorno.

    VERSIÓN DE API 2018-06-01

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-12-01' -X PATCH -d '{"identity":{"type":"userAssigned", "userAssignedIdentities":{"/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1":{}}}}' -H "Content-Type: application/json" -H Authorization:"Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-12-01 HTTP/1.1
    

    Encabezados de solicitud

    Encabezado de solicitud Descripción
    Content-Type Necesario. Establézcalo en application/json.
    Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

    Cuerpo de la solicitud

     {
        "identity":{
           "type":"userAssigned",
           "userAssignedIdentities":{
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1":{
    
              }
           }
        }
     }
    

    VERSIÓN DE API 2017-12-01

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2017-12-01' -X PATCH -d '{"identity":{"type":"userAssigned", "identityIds":["/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"]}}' -H "Content-Type: application/json" -H Authorization:"Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2017-12-01 HTTP/1.1
    

    Encabezados de solicitud

    Encabezado de solicitud Descripción
    Content-Type Necesario. Establézcalo en application/json.
    Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

    Cuerpo de la solicitud

     {
        "identity":{
           "type":"userAssigned",
           "identityIds":[
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"
           ]
        }
     }
    
  5. Si ya dispone de una identidad administrada asignada por el usuario o por el sistema y está asignada al conjunto de escalado de máquinas virtuales:

    VERSIÓN DE API 2018-06-01

    Agregue la identidad administrada asignada por el usuario al valor de diccionario userAssignedIdentities.

    Por ejemplo, si tiene una identidad administrada asignada por el sistema y una identidad administrada asignada por el usuario ID1 actualmente asignadas al conjunto de escalado de máquinas virtuales y quiere agregarles la identidad administrada asignada por el usuario ID2:

    curl  'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01' -X PATCH -d '{"identity":{"type":"SystemAssigned, UserAssigned", "userAssignedIdentities":{"/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1":{},"/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2":{}}}}' -H "Content-Type: application/json" -H Authorization:"Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01 HTTP/1.1
    

    Encabezados de solicitud

    Encabezado de solicitud Descripción
    Content-Type Necesario. Establézcalo en application/json.
    Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

    Cuerpo de la solicitud

     {
        "identity":{
           "type":"SystemAssigned, UserAssigned",
           "userAssignedIdentities":{
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1":{
    
              },
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2":{
    
              }
           }
        }
     }
    

    VERSIÓN DE API 2017-12-01

    Conserve las identidades administradas asignadas por el usuario y que le gustaría mantener en el valor de matriz identityIds al tiempo que agrega la nueva identidad administrada asignada por el usuario.

    Por ejemplo, si tiene una identidad asignada por el sistema y una identidad administrada asignada por el usuario ID1 actualmente asignadas al conjunto de escalado de máquinas virtuales y quiere agregarles la identidad administrada asignada por el usuario ID2:

    curl  'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2017-12-01' -X PATCH -d '{"identity":{"type":"SystemAssigned, UserAssigned", "identityIds":["/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1","/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2"]}}' -H "Content-Type: application/json" -H Authorization:"Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2017-12-01 HTTP/1.1
    

    Encabezados de solicitud

    Encabezado de solicitud Descripción
    Content-Type Necesario. Establézcalo en application/json.
    Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

    Cuerpo de la solicitud

     {
        "identity":{
           "type":"SystemAssigned, UserAssigned",
           "identityIds":[
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1",
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2"
           ]
        }
     }
    

Eliminación de una identidad administrada asignada por el usuario de un conjunto de escalado de máquinas virtuales

  1. Recupere un token de acceso de portador, que utilizará en el siguiente paso en el encabezado de autorización para crear el conjunto de escalado de máquinas virtuales con una identidad administrada asignada por el sistema.

    az account get-access-token
    
  2. Para asegurarse de que no elimina ninguna identidad administrada asignada por el usuario o por el sistema que está asignada al conjunto de escalado de máquinas virtuales y de que no quita la identidad administrada asignada por el sistema, necesita enumerar las identidades administradas mediante el comando CURL siguiente:

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/virtualMachineScaleSets/<VMSS NAME>?api-version=2018-06-01' -H "Authorization: Bearer <ACCESS TOKEN>" 
    
    GET https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/virtualMachineScaleSets/<VMSS NAME>?api-version=2018-06-01 HTTP/1.1
    

    Encabezados de solicitud

    Encabezado de solicitud Descripción
    Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

    Si ha administrado identidades asignadas a la máquina virtual, se enumeran en la respuesta del valor identity.

    Por ejemplo, si tiene identidades administradas asignadas por el usuario ID1 y ID2, y que están asignadas al conjunto de escalado de máquinas virtuales, y sólo quiere mantener ID1 asignada y conservar la identidad administrada asignada por el sistema:

    VERSIÓN DE API 2018-06-01

    Agregue null a la identidad administrada asignada por el usuario que quiere quitar:

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01' -X PATCH -d '{"identity":{"type":"SystemAssigned, UserAssigned", "userAssignedIdentities":{"/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2":null}}}' -H "Content-Type: application/json" -H Authorization:"Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01 HTTP/1.1
    

    Encabezados de solicitud

    Encabezado de solicitud Descripción
    Content-Type Necesario. Establézcalo en application/json.
    Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

    Cuerpo de la solicitud

     {
        "identity":{
           "type":"SystemAssigned, UserAssigned",
           "userAssignedIdentities":{
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID2":null
           }
        }
     }
    

    VERSIÓN DE API 2017-12-01

    Conserve solo las identidades administradas asignadas por el usuario que le gustaría mantener en la matriz identityIds:

    curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2017-12-01' -X PATCH -d '{"identity":{"type":"SystemAssigned,UserAssigned", "identityIds":["/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"]}}' -H "Content-Type: application/json" -H Authorization:"Bearer <ACCESS TOKEN>"
    
    PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2017-12-01 HTTP/1.1
    

    Encabezados de solicitud

    Encabezado de solicitud Descripción
    Content-Type Necesario. Establézcalo en application/json.
    Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

    Cuerpo de la solicitud

     {
        "identity":{
           "type":"SystemAssigned,UserAssigned",
           "identityIds":[
              "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"
           ]
        }
     }
    

Si el conjunto de escalado de máquinas virtuales 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 asignadas por el sistema:

curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01' -X PATCH -d '{"identity":{"type":"SystemAssigned"}}' -H "Content-Type: application/json" -H Authorization:"Bearer <ACCESS TOKEN>"
PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01 HTTP/1.1

Encabezados de solicitud

Encabezado de solicitud Descripción
Content-Type Necesario. Establézcalo en application/json.
Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

Cuerpo de la solicitud

{
   "identity":{
      "type":"SystemAssigned"
   }
}

Si el conjunto de escalado de máquinas virtuales solo tiene identidades administradas asignadas por el usuario y desea quitarlas todas, utilice el comando siguiente:

curl 'https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01' -X PATCH -d '{"identity":{"type":"None"}}' -H "Content-Type: application/json" -H Authorization:"Bearer <ACCESS TOKEN>"
PATCH https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myVMSS?api-version=2018-06-01 HTTP/1.1

Encabezados de solicitud

Encabezado de solicitud Descripción
Content-Type Necesario. Establézcalo en application/json.
Autorización Necesario. Establézcalo en un token de acceso Bearer válido.

Cuerpo de la solicitud

{
   "identity":{
      "type":"None"
   }
}

Pasos siguientes

Para obtener información sobre cómo crear, enumerar o eliminar identidades administradas asignadas por el usuario mediante REST, consulte: