Configurar identidades gerenciadas para recursos do Azure em uma VM do Azure usando modelos

Identidades gerenciadas para recursos do Azure é um recurso do Microsoft Entra ID. Cada um dos serviços do Azure que dão suporte a identidades gerenciadas para recursos do Azure está sujeito à própria linha do tempo. Não deixe de examinar o status de disponibilidade das identidades gerenciadas do seu recurso e os problemas conhecidos antes de começar.

As identidades gerenciadas dos recursos do Azure fornecem aos serviços do Azure uma identidade gerenciada automaticamente na ID do Microsoft Entra. Use essa identidade para autenticar qualquer serviço que dê suporte à autenticação do Microsoft Entra, sem a necessidade de ter as credenciais no código.

Neste artigo, usando o modelo de implantação do Azure Resource Manager, você aprende como executar as seguintes identidades gerenciadas para operações de recursos do Azure em uma VM do Azure:

Pré-requisitos

Modelos do Azure Resource Manager

Assim como com o portal do Azure e o script, os modelos do Azure Resource Manager permitem implantar recursos novos ou modificados definidos por um grupo de recursos do Azure. Há várias opções disponíveis para a edição e a implantação do modelo, tanto locais quanto baseadas em portal, incluindo:

Independentemente da opção escolhido, a sintaxe do modelo será a mesma durante a implantação inicial e a reimplantação. Habilitar uma identidade gerenciada atribuída ao usuário ou ao sistema em uma VM nova ou existente é feita da mesma maneira. Além disso, por padrão, o Azure Resource Manager faz uma atualização incremental para implantações.

Identidade gerenciada atribuída pelo sistema

Nesta seção, você habilitará e desabilitará uma identidade gerenciada atribuída ao sistema usando um modelo do Azure Resource Manager.

Habilitar identidade gerenciada atribuída ao sistema durante a criação de uma VM do Azure ou em uma VM existente

Para habilitar a identidade gerenciada atribuída pelo sistema em uma VM, sua conta precisa da atribuição de função Colaboração da Máquina Virtual. Nenhuma outra atribuição de função do diretório do Microsoft Entra é necessária.

  1. Se você entrar no Azure localmente ou por meio do portal do Azure, use uma conta que esteja associada com a assinatura do Azure que contenha a máquina virtual.

  2. Para habilitar a identidade gerenciada atribuída ao sistema, carregue o modelo em um editor, localize o recurso Microsoft.Compute/virtualMachines de interesse dentro da seção resources e adicione a propriedade "identity" no mesmo nível que a propriedade "type": "Microsoft.Compute/virtualMachines". Use a seguinte sintaxe:

    "identity": {
        "type": "SystemAssigned"
    },
    
  3. Quando você terminar, as seguintes seções deverão ser adicionadas à seção resource do modelo e ela será semelhante à seguinte:

     "resources": [
         {
             //other resource provider properties...
             "apiVersion": "2018-06-01",
             "type": "Microsoft.Compute/virtualMachines",
             "name": "[variables('vmName')]",
             "location": "[resourceGroup().location]",
             "identity": {
                 "type": "SystemAssigned",
                 }                        
         }
     ]
    

Atribuir uma função à identidade gerenciada atribuída ao sistema da VM

Após habilitar uma identidade atribuída ao sistema na VM, é recomendável conceder uma função a ela, como o acesso de Leitor ao grupo de recursos no qual foi criado. Para ajudar você com esta, encontre informações detalhadas no artigo Atribuir funções do Azure usando modelos do Azure Resource Manager.

Desabilitar uma identidade gerenciada atribuída ao sistema de uma VM do Azure

Para remover a identidade gerenciada atribuída pelo sistema de uma VM, sua conta precisa da atribuição de função Atribuída do Virtual Machine. Nenhuma outra atribuição de função do diretório do Microsoft Entra é necessária.

  1. Se você entrar no Azure localmente ou por meio do portal do Azure, use uma conta que esteja associada com a assinatura do Azure que contenha a máquina virtual.

  2. Carregue o modelo em um editor e localize o recurso Microsoft.Compute/virtualMachines de interesse na seção resources. Se você tiver uma VM que tenha apenas a identidade gerenciada atribuída ao sistema, poderá desabilitá-la alterando o tipo de identidade para None.

    Microsoft.Compute/virtualMachines API versão 2018-06-01

    Se a VM tiver identidades gerenciadas atribuídas ao usuário e ao sistema, remova SystemAssigned do tipo de identidade e mantenha UserAssigned junto com os valores de dicionário userAssignedIdentities.

    Microsoft.Compute/virtualMachines API versão 2018-06-01

    Se apiVersion for 2017-12-01 e a VM tiver identidades gerenciadas ao sistema e ao usuário, remova SystemAssigned do tipo de identidade e mantenha UserAssigned junto com a matriz identityIds das identidades gerenciadas atribuídas ao usuário.

O seguinte exemplo mostra como remover uma identidade gerenciada atribuída ao sistema de uma VM sem identidades gerenciadas atribuídas ao usuário:

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

Identidade gerenciada atribuída pelo usuário

Nesta seção, você atribui uma identidade gerenciada atribuída ao usuário a uma VM do Azure usando o modelo do Azure Resource Manager.

Observação

Para criar uma identidade gerenciada atribuída ao usuário usando um modelo do Azure Resource Manager, consulte Criar uma identidade gerenciada atribuída ao usuário.

Atribuir uma identidade gerenciada atribuída ao usuário a uma VM do Azure

Para atribuir uma identidade atribuída pelo usuário a uma VM, a sua conta precisa da atribuição de função Operador de Identidade Gerenciada. Nenhuma outra atribuição de função do diretório do Microsoft Entra é necessária.

  1. No elemento resources, adicione a seguinte entrada para atribuir uma identidade gerenciada atribuída ao usuário à VM. Certifique-se de substituir <USERASSIGNEDIDENTITY> pelo nome da identidade gerenciada atribuída ao usuário que você criou.

    Microsoft.Compute/virtualMachines API versão 2018-06-01

    Se apiVersion for 2018-06-01, as identidades gerenciadas atribuídas ao usuário serão armazenadas no formato de dicionário userAssignedIdentities e o valor <USERASSIGNEDIDENTITYNAME> deverá ser armazenado em uma variável definida na seção variables do modelo.

     {
         "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 API versão 2017-12-01

    Se apiVersion for 2017-12-01, as identidades gerenciadas atribuídas ao usuário serão armazenadas na matriz identityIds e o valor <USERASSIGNEDIDENTITYNAME> deverá ser armazenado em uma variável definida na seção variables do modelo.

    {
        "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. Quando você terminar, as seguintes seções deverão ser adicionadas à seção resource do modelo e ela será semelhante à seguinte:

    Microsoft.Compute/virtualMachines API versão 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>'))]": {}
                 }
             }
         }
     ] 
    

    Microsoft.Compute/virtualMachines API versão 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>'))]"
                 ]
             }
         }
    ]
    

Remover uma identidade gerenciada atribuída pelo usuário de uma VM do Azure

Para remover uma identidade atribuída pelo usuário de uma VM, sua conta precisa da atribuição de função Atribuído do Virtual Machine. Nenhuma outra atribuição de função do diretório do Microsoft Entra é necessária.

  1. Se você entrar no Azure localmente ou por meio do portal do Azure, use uma conta que esteja associada com a assinatura do Azure que contenha a máquina virtual.

  2. Carregue o modelo em um editor e localize o recurso Microsoft.Compute/virtualMachines de interesse na seção resources. Se você tiver uma VM que tenha apenas a identidade gerenciada atribuída ao usuário, será possível desabilitá-la alterando o tipo de identidade para None.

    O seguinte exemplo mostra como remover todas as identidades gerenciadas atribuídas ao usuário de uma VM sem nenhuma identidade gerenciada atribuída ao sistema:

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

    Microsoft.Compute/virtualMachines API versão 2018-06-01

    Para remover uma identidade gerenciada atribuída ao usuário único de uma VM, remova-a do dicionário useraAssignedIdentities.

    Caso você tenha uma identidade gerenciada atribuída ao sistema, mantenha a identidade com o valor type no valor identity.

    Microsoft.Compute/virtualMachines API versão 2017-12-01

    Para remover uma identidade gerenciada atribuída ao usuário único de uma VM, remova-a da matriz identityIds.

    Caso você tenha uma identidade gerenciada atribuída ao sistema, mantenha a identidade com o valor type no valor identity.

Próximas etapas