Configurar identidades gerenciadas em pools de lotes

As identidades gerenciadas para recursos do Azure eliminam o gerenciamento complicado de identidades e credenciais fornecendo uma identidade para o recurso do Azure na ID do Microsoft Entra (ID do Azure AD). Essa identidade é usada para obter tokens do Microsoft Entra para autenticar com recursos de destino no Azure.

Este tópico explica como habilitar identidades gerenciadas atribuídas pelo usuário em pools de lotes e como usar identidades gerenciadas nos nós.

Importante

Os pools devem ser configurados usando a Configuração da Máquina Virtual para usar identidades gerenciadas.

A criação de pools com identidades gerenciadas pode ser feita usando a biblioteca de gerenciamento Batch .NET, mas atualmente não é suportada com a biblioteca de cliente Batch .NET.

Criar uma identidade gerida atribuída pelo utilizador

Primeiro, crie sua identidade gerenciada atribuída pelo usuário no mesmo locatário que sua conta do Batch. Você pode criar a identidade usando o portal do Azure, a Interface de Linha de Comando do Azure (CLI do Azure), o PowerShell, o Gerenciador de Recursos do Azure ou a API REST do Azure. Essa identidade gerenciada não precisa estar no mesmo grupo de recursos ou mesmo na mesma assinatura.

Gorjeta

Uma identidade gerenciada atribuída ao sistema criada para uma conta de lote para criptografia de dados do cliente não pode ser usada como uma identidade gerenciada atribuída pelo usuário em um pool de lotes, conforme descrito neste documento. Se você deseja usar a mesma identidade gerenciada na conta de lote e no pool de lotes, use uma identidade gerenciada comum atribuída pelo usuário.

Criar um pool de lotes com identidades gerenciadas atribuídas pelo usuário

Depois de criar uma ou mais identidades gerenciadas atribuídas pelo usuário, você pode criar um pool de lotes com essa identidade ou essas identidades. Pode:

Aviso

Não há suporte para atualizações in-loco de identidades gerenciadas do pool enquanto o pool tiver nós ativos. Os nós de computação existentes não serão atualizados com alterações. É recomendável reduzir o pool para zero nós de computação antes de modificar a coleção de identidades para garantir que todas as VMs tenham o mesmo conjunto de identidades atribuídas.

Criar pool de lotes no portal do Azure

Para criar um pool de lotes com uma identidade gerenciada atribuída pelo usuário por meio do portal do Azure:

  1. Inicie sessão no portal do Azure.
  2. Na barra de pesquisa, insira e selecione Contas em lote.
  3. Na página Contas de lote, selecione a conta de lote onde você deseja criar um pool de lotes.
  4. No menu da conta Batch, em Recursos, selecione Pools.
  5. No menu Pools, selecione Adicionar para adicionar um novo pool de lotes.
  6. Para ID do pool, insira um identificador para o pool.
  7. Em Identidade, altere a configuração para Usuário atribuído.
  8. Em Identidade gerenciada atribuída ao usuário, selecione Adicionar.
  9. Selecione a identidade gerenciada atribuída ao usuário ou identidades que você deseja usar. Em seguida, selecione Adicionar.
  10. Em Sistema Operacional, selecione o editor, a oferta e a SKU a serem usados.
  11. Opcionalmente, habilite a identidade gerenciada no registro de contêiner:
    1. Para Configuração de contêiner, altere a configuração para Personalizado. Em seguida, selecione sua configuração personalizada.
    2. Para Iniciar tarefa , selecione Habilitado. Em seguida, selecione Arquivos de recursos e adicione as informações do contêiner de armazenamento.
    3. Habilite as configurações de contêiner.
    4. Alterar o registro de contêiner para personalizado
    5. Em Referência de identidade, selecione o contêiner de armazenamento.

Criar pool de lotes com .NET

Para criar um pool de lotes com uma identidade gerenciada atribuída pelo usuário com a biblioteca de gerenciamento .NET em lote, use o seguinte código de exemplo:

var poolParameters = new Pool(name: "yourPoolName")
    {
        VmSize = "standard_d2_v3",
        ScaleSettings = new ScaleSettings
        {
            FixedScale = new FixedScaleSettings
            {
                TargetDedicatedNodes = 1
            }
        },
        DeploymentConfiguration = new DeploymentConfiguration
        {
            VirtualMachineConfiguration = new VirtualMachineConfiguration(
                new ImageReference(
                    "Canonical",
                    "0001-com-ubuntu-server-jammy",
                    "22_04-lts",
                    "latest"),
                "batch.node.ubuntu 22.04")
        },
        Identity = new BatchPoolIdentity
        {
            Type = PoolIdentityType.UserAssigned,
            UserAssignedIdentities = new Dictionary<string, UserAssignedIdentities>
            {
                ["Your Identity Resource Id"] =
                    new UserAssignedIdentities()
            }
        }
    };

var pool = await managementClient.Pool.CreateWithHttpMessagesAsync(
    poolName:"yourPoolName",
    resourceGroupName: "yourResourceGroupName",
    accountName: "yourAccountName",
    parameters: poolParameters,
    cancellationToken: default(CancellationToken)).ConfigureAwait(false);

Usar identidades gerenciadas atribuídas pelo usuário em nós de lote

Muitas funções do Lote do Azure que acessam outros recursos do Azure diretamente nos nós de computação, como o Armazenamento do Azure ou o Registro de Contêiner do Azure, dão suporte a identidades gerenciadas. Para obter mais informações sobre como usar identidades gerenciadas com o Lote do Azure, consulte os seguintes links:

Você também pode configurar manualmente suas tarefas para que as identidades gerenciadas possam acessar diretamente os recursos do Azure que dão suporte a identidades gerenciadas.

Dentro dos nós Batch, você pode obter tokens de identidade gerenciados e usá-los para autenticar por meio da autenticação do Microsoft Entra por meio do Serviço de Metadados de Instância do Azure.

Para Windows, o script do PowerShell para obter um token de acesso para autenticação é:

$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource={Resource App Id Url}' -Method GET -Headers @{Metadata="true"}

Para Linux, o script Bash é:

curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource={Resource App Id Url}' -H Metadata:true

Para obter mais informações, consulte Como usar identidades gerenciadas para recursos do Azure em uma VM do Azure para adquirir um token de acesso.

Próximos passos