Configurar identidades gerenciadas em pools do Lote
As Identidades Gerenciadas para recursos do Azure eliminam o complicado gerenciamento de credenciais e identidades fornecendo uma identidade para o recurso do Azure no Microsoft Entra ID (ID do Azure AD). Essa identidade é usada para obter tokens do Microsoft Entra e se autenticar nos recursos de destino no Azure.
Ao adicionar uma Identidade Gerenciada Atribuída pelo Usuário a um Pool de Lote, é crucial definir a propriedade Identidade na 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 Identidade pode resultar em erros comuns, como problemas de acesso ou erros de upload.
Para obter mais informações sobre como configurar identidades gerenciadas no Lote do Microsoft Azure, consulte a documentação de Identidades Gerenciadas no Azure Batch.
Este tópico explica como habilitar identidades gerenciadas atribuídas pelo usuário em pools do Lote e como usar identidades gerenciadas dentro dos nós.
Importante
A criação de pools com identidades gerenciadas só pode ser executada com as APIs ou SDKs do Plano de Gerenciamento de Lote usando a autenticação do Entra. Não é possível criar pools com as identidades gerenciadas usando as APIs ou SDKs do Serviço do Lote. Para obter mais informações, consulte a documentação de visão geral das APIs e ferramentas do Lote.
Criar uma identidade gerenciada atribuída ao usuário
Primeiro, crie sua identidade gerenciada atribuída ao usuário no mesmo locatário da sua conta do Lote. Você pode criar a identidade usando o portal do Azure, a CLI do Azure, o PowerShell, o Azure Resource Manager ou a API REST do Azure. Essa identidade gerenciada não precisa estar no mesmo grupo de recursos e nem na mesma assinatura.
Dica
Uma identidade gerenciada atribuída pelo sistema criada para uma conta de Lote para fins de criptografia de dados do cliente não pode ser usada como uma identidade gerenciada atribuída pelo usuário em um pool do Lote, conforme descrito neste documento. Se quiser usar a mesma identidade gerenciada tanto na conta de Lote quanto no pool de Lote, use uma identidade gerenciada comum atribuída pelo usuário.
Criar um pool do Lote 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 do Lote com essa identidade ou essas identidades. Você poderá:
- Usar o portal do Azure para criar o pool do Lote
- Usar a biblioteca de gerenciamento do .NET do Lote para criar o pool do Lote
Aviso
As atualizações in-loco de identidades gerenciadas pelo pool não têm suporte enquanto o pool conta com nós ativos. Os nós de computação atuais não serão atualizados com as alterações. Recomenda-se reduzir verticalmente o conjunto para zero nós de computação antes de modificar a coleção de identidades, a fim de garantir que todas as VMs tenham as mesmas identidades atribuídas.
Criar pool do Lote no portal do Azure
Para criar um pool do Lote com uma identidade gerenciada atribuída pelo usuário por meio do portal do Azure:
- Entre no portal do Azure.
- Na barra de pesquisa, insira e selecione contas do Lote.
- Na página Contas do Lote, selecione a conta do Lote na qual você deseja criar um pool do Lote.
- No menu da conta do Lote, em Recursos, selecione Pools.
- No menu Pools, selecione Adicionar para adicionar um novo pool do Lote.
- Para a ID do pool, insira um identificador para o pool.
- Para Identidade, altere a configuração para Usuário atribuído.
- Em Identidade gerenciada atribuída pelo usuário, selecione Adicionar.
- Selecione a identidade gerenciada atribuída pelo usuário que você deseja usar. Em seguida, selecione Adicionar.
- Em Sistema Operacional, selecione o distribuidor, a oferta e a SKU a serem usados.
- Opcionalmente, habilite a identidade gerenciada no registro de contêiner:
- Para Configuração de contêiner, altere a configuração para Personalizado. Em seguida, selecione sua configuração personalizada.
- Para Tarefa inicial, selecione Habilitado. Em seguida, selecione Arquivos de recurso e adicione suas informações de contêiner de armazenamento.
- Habilite Configurações de contêiner.
- Altere Registro de contêiner para Personalizado
- Para Referência de identidade, selecione o contêiner de armazenamento.
Criar pool do Lote com .NET
Para criar um pool do Lote com uma identidade gerenciada atribuída pelo usuário com a biblioteca de gerenciamento do .NET do 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;
Observação
Para incluir a propriedade Identidade 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 do Lote
Muitas tecnologias 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 saber mais sobre como usar identidades gerenciadas com o Lote do Azure, confira os seguintes links:
- Arquivos de recurso
- Arquivos de saída
- Registro de Contêiner do Azure
- Sistema de arquivos do contêiner de Blob do Azure
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.
Nos nós em Lote você pode obter tokens de identidade gerenciada e usá-los para se autenticar por meio da autenticação do Microsoft Entra usando o Serviço de Metadados da Instância do Azure.
Para o 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 o 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, confira Como usar identidades gerenciadas para recursos do Azure em uma VM do Azure para adquirir um token de acesso.
Próximas etapas
- Saiba mais sobre Identidades gerenciadas para recursos do Azure.
- Saiba como usar chaves gerenciadas pelo cliente com identidades gerenciadas pelo usuário.
- Saiba como habilitar a rotação automática de certificado em um pool do lote.