Partilhar via


Como criar máquinas virtuais com identidades gerenciadas e autenticar com uma identidade gerenciada

Este guia explica como criar máquinas virtuais (VM) do Azure Operator Nexus com identidades gerenciadas e como autenticar usando essas identidades. A autenticação usando identidades gerenciadas permite a capacidade de obter tokens de acesso sem a necessidade de gerenciar credenciais explicitamente.

Pré-requisitos no pacote de gerenciamento, tempo de execução e versões de API do Azure Operator Nexus

  • Certifique-se de que seu Operator Nexus Cluster esteja executando a versão do pacote 2510.1 de gerenciamento e a versão 4.7.0 de tempo de execução ou posterior. O suporte ao recurso está disponível na versão 2025-07-01-preview da API, mas recomenda-se a versão GA 2025-09-01 ou posterior.
  • A CLI principal do Azure deve ser instalada com a versão 2.75 ou posterior. Você pode encontrar as versões suportadas no histórico de versões da CLI do Az core.
  • Certifique-se de que a networkcloud extensão az CLI está instalada com uma versão que suporte a versão da API necessária. Você pode encontrar as versões suportadas no histórico de lançamento da networkcloud extensão no GitHub. A versão mínima necessária começa na versão de pré-visualização 4.0.0b1, mas recomendam-se 4.0.0 ou posterior.
  • Este guia pressupõe que você tenha um Cluster Nexus do Operador em funcionamento e as permissões necessárias para criar e gerenciar máquinas virtuais e identidades gerenciadas em sua assinatura do Azure.

Escolha uma opção de identidade gerenciada

Você pode usar uma identidade gerenciada atribuída pelo sistema ou pelo usuário para associar à máquina virtual (VM). Escolha a opção que melhor se adapta às suas necessidades.

Para obter mais informações sobre como criar e gerenciar identidades gerenciadas e atribuições de função, consulte a documentação relevante:

Usando uma identidade gerenciada atribuída ao sistema

A identidade gerenciada atribuída ao sistema é criada automaticamente quando a VM é criada. O ciclo de vida da identidade gerenciada atribuída ao sistema está vinculado à VM. No entanto, é necessário atribuir funções à identidade gerenciada atribuída ao sistema depois que a VM é criada. Você pode conceder as funções necessárias à identidade gerenciada atribuída ao sistema depois que a VM for criada manualmente ou usando a CLI do Azure. As atribuições de função podem ser automatizadas incorporando os comandos az CLI no script userData cloud-init; Lembre-se de que o cloud-init é executado apenas uma vez na primeira inicialização.

Usando uma identidade gerenciada atribuída pelo usuário

Se você planeja usar uma identidade gerenciada atribuída pelo usuário, crie-a antes de criar a máquina virtual. Como a identidade gerenciada atribuída pelo usuário é independente da VM, você pode atribuir as funções necessárias com antecedência. Atribuir as funções com antecedência simplifica o processo, pois a VM pode usar a identidade durante a execução do script de inicialização na nuvem de dados do usuário.

Atribuir funções à identidade gerenciada

Você deve atribuir as funções necessárias à identidade gerenciada para atender às suas necessidades. As atribuições de função podem ser feitas no nível de assinatura ou grupo de recursos, dependendo de suas necessidades.

Para obter mais informações sobre atribuições de função ou criação de funções personalizadas para permissões específicas, consulte:

Criar uma VM com a identidade gerenciada

Se não tiver uma conta do Azure, crie uma conta gratuita antes de começar.

  • Instale a versão mais recente das extensões necessárias da CLI do Azure.

  • Se você tiver várias assinaturas do Azure, selecione a ID de assinatura apropriada na qual os recursos devem ser cobrados usando o az account comando.

  • Antes de prosseguir com a criação da máquina virtual, verifique se a imagem do contêiner a ser usada é criada de acordo com as instruções.

  • Crie um grupo de recursos usando o comando az group create. Um grupo de recursos do Azure é um grupo lógico no qual os recursos do Azure são implantados e gerenciados. Ao criar um grupo de recursos, você será solicitado a especificar um local. Esse local é o local de armazenamento dos metadados do grupo de recursos e onde os recursos são executados no Azure se você não especificar outra região durante a criação do recurso. O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização eastus.

    az group create --name myResourceGroup --location eastus
    

    O exemplo de saída a seguir é semelhante à criação bem-sucedida do grupo de recursos:

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
    
  • Para implementar um ficheiro Bicep ou modelo ARM, precisa de permissão de escrita nos recursos que está a implementar e permissão para todas as operações no tipo de recurso Microsoft.Resources/deployments. Por exemplo, para implantar um cluster, você precisa das permissões Microsoft.NetworkCloud/virtualMachines/write e Microsoft.Resources/deployments/*. Para obter uma lista de funções e permissões, veja Funções incorporadas do Azure.

  • Você precisa da identificação do recurso custom location do cluster do Azure Operator Nexus.

  • Você precisa criar várias redes de acordo com seus requisitos específicos de carga de trabalho, e é essencial ter os endereços IP apropriados disponíveis para suas cargas de trabalho. Para garantir uma implementação sem problemas, é aconselhável consultar as equipas de apoio relevantes para obter assistência.

  • Verifique se você tem permissões para criar identidades gerenciadas e gerenciar as atribuições de função em sua assinatura do Azure.
  • Certifique-se de criar a VM com uma identidade gerenciada atribuída pelo sistema ou pelo usuário.

Conclua os Pré-requisitos para implantar cargas de trabalho de locatário para implantar uma máquina virtual Nexus.

  • Antes de criar a máquina virtual, você precisa criar os recursos de rede necessários.
    • Domínio de isolamento L3 - Para isolamento e roteamento de rede
    • Rede L3 - Para conectividade VM
    • Cloud Services Network (CSN) - Para conectividade externa e serviços de proxy

Analise como criar máquinas virtuais usando um dos seguintes métodos de implantação:

Associar identidades gerenciadas no momento da criação da VM

Ao criar uma VM do Operator Nexus com identidades gerenciadas, você deve atribuir uma identidade gerenciada atribuída pelo sistema ou pelo usuário durante a criação da VM. A criação da VM com uma identidade gerenciada associada habilita os recursos para o método de autenticação. Embora o recurso de VM possa ser atualizado para adicionar ou alterar a identidade gerenciada após a criação, a VM deve ser recriada para habilitar o suporte à identidade gerenciada. Se você planeja usar outros métodos de autenticação, como usar uma entidade de serviço, pode criar a VM sem uma identidade gerenciada.

Importante

Se você não especificar uma identidade gerenciada ao criar a VM, não poderá habilitar o suporte à identidade gerenciada atualizando a VM após o provisionamento.

Variáveis de ambiente

Antes de prosseguir com a implantação, defina as seguintes variáveis de ambiente para definir a configuração para sua máquina virtual (VM).

Variable Description
ACR_PASSWORD Senha do Registro de Contêiner do Azure.
ACR_URL URL do Registro de Contêiner do Azure.
ACR_USERNAME Nome de usuário do Registro de Contêiner do Azure.
ADMIN_USERNAME Nome de usuário do administrador para a VM.
CLUSTER_CUSTOM_LOCATION Local personalizado da instância do Nexus.
CLUSTER_NAME O nome do seu cluster Nexus.
CPU_CORES (Opcional) Número de núcleos de CPU para a VM.
CSN_ARM_ID ID de recurso ARM da Rede de Serviços de Nuvem (CSN).
L3_NETWORK_ARM_ID ID de recurso ARM da rede L3 a ser criada.
LOCATION Região do Azure para os recursos.
MEMORY_SIZE (Opcional) Tamanho da memória em GiB para a VM.
NETWORK_INTERFACE_NAME Nome da interface de rede.
RESOURCE_GROUP O nome do grupo de recursos do Azure.
SSH_PUBLIC_KEY Chave pública SSH para acesso VM.
SUBSCRIPTION_ID O seu ID de subscrição do Azure.
TENANT_ID O seu ID de tenant do Azure.
UAMI_ID (Opcional) O ID de recurso de identidade gerenciada atribuída pelo usuário (UAMI). Não é necessário ao usar a identidade gerenciada atribuída pelo sistema.
UAMI_NAME (Opcional) Nome da identidade gerenciada atribuída pelo usuário. Não é necessário ao usar a identidade gerenciada atribuída pelo sistema.
VM_DISK_SIZE (Opcional) Tamanho do disco do SO em GiB.
VM_IMAGE Imagem de contêiner para a VM.
VM_NAME Nome da máquina virtual.

Para definir essas variáveis, use os seguintes comandos e substitua os valores de exemplo pelos valores reais:

# Required variables
RESOURCE_GROUP="my-resource-group"
CLUSTER_NAME="my-cluster-name"
TENANT_ID="00000000-0000-0000-0000-000000000000"
SUBSCRIPTION_ID="00000000-0000-0000-0000-000000000000"
LOCATION="$(az group show --name $RESOURCE_GROUP --query location --subscription $SUBSCRIPTION -o tsv)"
CLUSTER_CUSTOM_LOCATION=$(az networkcloud cluster show -g "$RESOURCE_GROUP" -n "$CLUSTER_NAME" --query "clusterExtendedLocation.name" -o tsv)

# VM specific variables (replace with your preferred values)
VM_NAME="myNexusVirtualMachine"

# (Optional) User-Assigned Managed Identity (UAMI) parameters
UAMI_NAME="myUamiName"
UAMI_ID="</subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<uami-name>"

# VM Image parameters
VM_IMAGE="<VM image, example: myacr.azurecr.io/ubuntu:20.04>"
ACR_URL="<Azure Container Registry URL, example: myacr.azurecr.io>"
ACR_USERNAME="<Azure Container Registry username>"
ACR_PASSWORD="<Azure Container Registry password>"

# (Optional) variables (will use defaults if not set), values here are examples you can modify as needed
CPU_CORES="4"
MEMORY_SIZE="8"
VM_DISK_SIZE="64"

# VM credentials
ADMIN_USERNAME="azureuser"
SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"

# Network parameters
CSN_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
L3_NETWORK_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
NETWORK_INTERFACE_NAME="mgmt0"

Automatize usando um script de dados de utilizador do cloud-init

É possível passar um script cloud-init para a VM durante a criação usando o --user-data-content parâmetro (ou o alias --udc). O script do cloud-init deve ser codificado em base64 antes de passá-lo para o parâmetro --user-data-content "$ENCODED_USER_DATA" do comando az networkcloud virtualmachine create. O script cloud-init é executado durante a primeira inicialização da VM e pode ser usado para executar várias tarefas de configuração.

Certifique-se de concluir a configuração necessária para a opção de identidade gerenciada escolhida antes de criar a VM, como atribuir funções ou permissões. Depois que a VM é criada e inicializada, você pode verificar os logs de inicialização na nuvem para verificar se o script foi concluído com êxito. O arquivo de logs cloud-init é encontrado em /var/log/cloud-init-output.log. É necessário SSH na VM para acessar os logs.

Observação

O parâmetro anterior --user-data foi preterido e será removido em uma versão futura. Verifique as atualizações mais recentes no histórico de versões da extensãonetworkcloud.

Sugestão

O script cloud-init é executado somente durante a primeira inicialização da VM. Você também pode autenticar com identidades gerenciadas manualmente de dentro da VM após a criação e a inicialização.

Configurações de proxy necessárias para habilitar a conectividade de saída

Você deve definir as configurações de proxy no script cloud-init ou manualmente dentro da máquina virtual (VM). O proxy CSN (Cloud Service Network) é usado pela VM para tráfego de saída, que deve ser sempre http://169.254.0.11:3128.

export HTTPS_PROXY=http://169.254.0.11:3128
export https_proxy=http://169.254.0.11:3128
export HTTP_PROXY=http://169.254.0.11:3128
export http_proxy=http://169.254.0.11:3128

Da mesma forma, você também deve configurar a NO_PROXY variável de ambiente para excluir o endereço 169.254.169.254IP. O Endpoint do Instance Metadata Service (IMDS) é utilizado pela VM para comunicar-se com o serviço de tokens da plataforma para a recuperação de tokens de identidade gerida. A NO_PROXY variável pode ter vários valores separados por vírgula, mas, no mínimo, deve incluir o endereço IP do IMDS. Adicione outros endereços que não deves encaminhar através do proxy CSN à variável NO_PROXY conforme necessário para o teu ambiente.

export NO_PROXY=localhost,127.0.0.1,::1,169.254.169.254
export no_proxy=localhost,127.0.0.1,::1,169.254.169.254

Autenticação usando a CLI do Azure e identidades gerenciadas

Não importa a abordagem preferida de usar um script cloud-init ou execução manual, o processo de autenticação usando identidades gerenciadas é semelhante. A principal diferença é que, ao usar uma identidade gerenciada atribuída pelo usuário, é necessário especificar o ID de recurso da identidade.

Autenticar com uma Identidade Gerida Atribuída pelo Sistema

az login --identity --allow-no-subscriptions

Autenticar com uma Identidade Gerida Atribuída pelo Utilizador

export UAMI_ID=$(az identity show --name "$UAMI_NAME" --resource-group "$RESOURCE_GROUP" --query "id" -o tsv)
az login --identity --allow-no-subscriptions --msi-resource-id "${UAMI_ID}"

Obter um token de acesso usando a identidade gerenciada

Depois de autenticar com êxito usando a identidade gerenciada, você pode recuperar um token de acesso para um recurso específico do Azure. Esse token pode ser usado para acessar os serviços do Azure com segurança.

ACCESS_TOKEN=$(az account get-access-token --resource https://management.azure.com/ --query accessToken -o tsv)

Pode ser útil rever o guia de solução de problemas para problemas comuns e armadilhas.

Ainda tem problemas?

Se as etapas descritas não fornecerem um caminho para resolver o problema ou se você ainda tiver dúvidas, entre em contato com o suporte. Por favor, forneça o máximo de detalhes possível sobre o problema que você está enfrentando, incluindo quaisquer mensagens de erro ou logs que possam ser relevantes. Isso ajudará a equipe de suporte a ajudá-lo de forma mais eficaz.

Você pode abrir uma solicitação de suporte por meio do portal do Azure.

Para obter mais informações sobre planos de suporte, consulte Planos de suporte do Azure.