Partilhar via


Configurar as identidades geridas em conjuntos do Batch

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.

Ao adicionar uma Identidade Gerenciada Atribuída pelo Usuário a um Pool de Lotes, é crucial definir a propriedade Identity em sua configuração. Essa propriedade vincula a identidade gerenciada ao pool, permitindo que ela acesse os recursos do Azure com segurança. A configuração incorreta da propriedade Identity pode resultar em erros comuns, como problemas de acesso ou erros de carregamento.

Para obter mais informações sobre como configurar identidades gerenciadas no Lote do Azure, consulte a documentação do Azure Batch Managed Identities.

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

A criação de pools com identidades gerenciadas só pode ser realizada com as APIs ou SDKs do Plano de Gerenciamento de Lote usando a autenticação do Entra. Não é possível criar pools com identidades gerenciadas usando as APIs ou SDKs do Batch Service. Para obter mais informações, consulte a documentação de visão geral de APIs e ferramentas em lote.

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 credential = new DefaultAzureCredential();
ArmClient _armClient = new ArmClient(credential);
        
var batchAccountIdentifier = ResourceIdentifier.Parse("your-batch-account-resource-id");   
BatchAccountResource batchAccount = _armClient.GetBatchAccountResource(batchAccountIdentifier);

var poolName = "HelloWorldPool";
var imageReference = new BatchImageReference()
{
    Publisher = "canonical",
    Offer = "0001-com-ubuntu-server-jammy",
    Sku = "22_04-lts",
    Version = "latest"
};
string nodeAgentSku = "batch.node.ubuntu 22.04";

var batchAccountPoolData = new BatchAccountPoolData()
{
    VmSize = "Standard_DS1_v2",
    DeploymentConfiguration = new BatchDeploymentConfiguration()
    {
        VmConfiguration = new BatchVmConfiguration(imageReference, nodeAgentSku)
    },
    ScaleSettings = new BatchAccountPoolScaleSettings()
    {
        FixedScale = new BatchAccountFixedScaleSettings()
        {
            TargetDedicatedNodes = 1
        }
    }
};

ArmOperation<BatchAccountPoolResource> armOperation = batchAccount.GetBatchAccountPools().CreateOrUpdate(
    WaitUntil.Completed, poolName, batchAccountPoolData);
BatchAccountPoolResource pool = armOperation.Value;

Nota

Para incluir a propriedade Identity , use o seguinte código de exemplo:

   var pool = batchClient.PoolOperations.CreatePool(
       poolId: "myPool",
       virtualMachineSize: "STANDARD_D2_V2",
       cloudServiceConfiguration: new CloudServiceConfiguration(osFamily: "4"),
       targetDedicatedNodes: 1,
       identity: new PoolIdentity(
           type: PoolIdentityType.UserAssigned,
           userAssignedIdentities: new Dictionary<string, UserAssignedIdentity>
           {
               { "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identity-name}", new UserAssignedIdentity() }
           }
       ));

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