Usar identidades gerenciadas em uma conta ou pool do Lote do Azure
Este artigo explica como usar identidades gerenciadas em uma conta do Lote do Microsoft Azure ou em um pool do Lote. O artigo discute quando você deve configurar identidades gerenciadas em uma conta do lote versus um pool do lote. Ele também descreve diferentes cenários de comportamento porque o uso de identidade gerenciada pode causar confusão em algumas situações de falha.
Pré-requisitos
- Uma conta do Lote do Azure.
- Uma conta do Armazenamento do Azure.
- Carteiro.
Configurar sua conta de armazenamento para usar com sua conta do lote
Se você quiser configurar identidades gerenciadas em sua conta do lote, primeiro deverá configurar sua conta de armazenamento para que ela seja usada como seu armazenamento automático da conta do lote. Esse armazenamento automático é usado para armazenar os pacotes de aplicativos e os arquivos de recursos de tarefa. Para configurar o armazenamento automático, você precisa vincular a conta de armazenamento à sua conta do lote. Você também precisa definir a conta de armazenamento automático para usar identidades gerenciadas de conta do lote como seu modo de autenticação.
Para concluir essa configuração, siga estas etapas:
No portal do Azure, pesquise e selecione Contas do Lote.
Na lista de contas de lote, selecione o nome da sua conta de lote.
No painel de navegação da conta de lote, localize o título Configurações e selecione Conta de armazenamento.
Na seção INFORMAÇÕES DA CONTA DE ARMAZENAMENTO, selecione Selecionar uma conta de armazenamento.
Depois de terminar de selecionar sua conta de armazenamento, retorne à seção INFORMAÇÕES DA CONTA DE ARMAZENAMENTO e altere o campo Modo de autenticação para Identidade Gerenciada da Conta do Lote.
Configurar a identidade gerenciada em sua conta do lote
Observação
A interação discutida nesta seção é entre uma conta do Lote e o Armazenamento do Azure ou o Azure Key Vault. Para interação entre nós do lote e outros recursos do Azure, consulte a próxima seção (Configurar a identidade gerenciada no pool do lote).
Ao configurar a identidade gerenciada em uma conta do lote, você concede permissão para que a conta do lote se autentique apenas em outros serviços. Essa configuração não permite que você se autentique em nós de lote ou VMs (máquinas virtuais) de pool de lotes.
Você tem duas opções ao configurar a identidade gerenciada em sua conta do lote: habilitar a identidade gerenciada atribuída pelo sistema ou criar uma identidade gerenciada separada atribuída pelo usuário para a conta do lote.
Para configurar a identidade gerenciada em sua conta do lote, siga estas etapas:
No portal do Azure, pesquise e selecione Contas do Lote.
Na lista de contas de lote, selecione o nome da sua conta de lote.
No painel de navegação da conta do lote, localize o cabeçalho Configurações e selecione Identidade.
No título Tipo de identidade, selecione Atribuído ao sistema (para uma identidade gerenciada atribuída pelo sistema) ou Atribuído ao usuário (para uma identidade gerenciada atribuída pelo usuário).
Depois de concluir essa configuração, retorne à página de visão geral da sua conta do lote. Na seção Essentials da página, selecione Exibição JSON. A representação JSON da identidade gerenciada aparecerá em um dos seguintes formatos:
Identidade gerenciada atribuída pelo sistema
"identity": { "principalId": "<principal-guid>", "tenantId": "<tenant-guid>", "type": "SystemAssigned" }
Identidade gerenciada atribuída pelo usuário
"identity": { "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/<subscription-guid>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-identity-name>": { "principalId": "<principal-guid>", "clientId": "<client-guid>" } } }
Usar uma identidade gerenciada para acessar sua conta de armazenamento automático
O recurso de identidade gerenciada da sua conta do Lote será usado para determinadas tarefas, como carregar um pacote de aplicativos para sua conta do Lote. Para carregar o pacote de aplicativos, acesse a página de visão geral da conta do lote no portal do Azure, selecione Adicionar Aplicativos>e siga as instruções do portal para concluir o upload. O Lote do Azure armazena o pacote de aplicativos em sua conta de armazenamento automático. Como você definiu anteriormente o modo de autenticação da conta do lote como Identidade Gerenciada da Conta do Lote, o sistema recupera a credencial da identidade gerenciada da sua conta do lote para acessar a conta de armazenamento automático.
Talvez seja necessário verificar se a identidade gerenciada tem permissões suficientes na conta de armazenamento automático. Para verificar essas permissões, siga estas etapas:
No portal do Azure, pesquise e selecione Contas de armazenamento.
Na lista de contas de armazenamento, selecione o nome da sua conta de armazenamento automático.
No painel de navegação da conta de armazenamento, selecione Controle de Acesso (IAM).
Na página Controle de acesso (IAM), selecione o botão Verificar acesso .
No painel Verificar acesso, selecione a opção Identidade gerenciada.
No campo Identidade gerenciada, selecione a identidade gerenciada para a qual você deseja exibir permissões.
Na guia Atribuições de função atuais, verifique se há uma função atribuída que tenha permissões suficientes para carregar um pacote de aplicativos. Se não houver essa atribuição de função, a seguinte mensagem de erro será exibida nas notificações do portal do Azure quando você tentar carregar o pacote de aplicativos em sua conta do lote:
Erro de upload para <o nome> do pacote.zip
O Upload de Arquivo encontrou um erro inesperado durante o upload.
Se você tiver esse erro de upload, verifique o arquivo HTTP Archive (.har) da solicitação de upload. Haverá uma solicitação POST que contém um prefixo de nome de batch
(por exemplo, batch?api-version=2020-06-01
), e você verá um status HTTP de 200. Na carga, você observará a solicitação PUT real que é enviada para sua conta do lote. A resposta à solicitação PUT mostrará um status HTTP de 409. A resposta de erro completa será semelhante ao seguinte texto:
{responses: [{name: "<response-guid>", httpStatusCode: 409,...}]}
{responses: [{name: "<response-guid>", httpStatusCode: 409,...}]}
0: {name: "<response-guid>", httpStatusCode, 409,...}
content: {error: {code: "AutoStorageNoPermission",...}}
error: {code: "AutoStorageNoPermission",...}
code: "AutoStorageNoPermission"
message: "The managed identity does not have permission to access auto storage account. Please use Azure RBAC to assign the managed identity access to auto storage."
target: "BatchAccount"
contentLength: 318
Esse erro significa que sua identidade gerenciada atribuída pelo sistema ou pelo usuário em sua conta do lote não tem permissão suficiente para executar ações na conta de armazenamento automático.
Usar uma identidade gerenciada para acessar seu cofre de chaves
Para obter informações sobre como usar uma identidade gerenciada para acessar um Azure Key Vault, consulte Configurar chaves gerenciadas pelo cliente para sua conta do Lote do Azure com o Azure Key Vault e a Identidade Gerenciada.
Configurar a identidade gerenciada no pool de lotes
Observação
A interação discutida nesta seção é entre um nó de lote e outros recursos do Azure. Para interação entre uma conta do Lote e o Armazenamento do Azure ou o Azure Key Vault, consulte a seção anterior (Configurar a identidade gerenciada em sua conta do Lote).
Se você quiser permitir que os nós do Lote do Azure acessem outros recursos do Azure, use uma identidade gerenciada configurada no pool do Lote do Azure.
Se o modo de autenticação da conta de armazenamento automático estiver definido como Identidade Gerenciada da Conta do Lote, os nós do Lote do Azure receberão os tokens de identidade gerenciada. Os nós usam os tokens de identidade gerenciada para autenticar por meio da autenticação do Microsoft Entra usando o IMDS (Serviço de Metadados de Instância do Azure).
O pool do Lote do Azure dá suporte apenas à versão atribuída pelo usuário da identidade gerenciada. Portanto, você precisará criar uma identidade gerenciada atribuída pelo usuário no mesmo locatário que sua conta do Lote do Azure. Além disso, você precisará conceder permissão no plano de dados de armazenamento (por exemplo, por meio do Proprietário de Dados do Blob de Armazenamento) para a identidade gerenciada atribuída pelo usuário.
Associar a identidade gerenciada ao nó que acessa a conta de armazenamento automático
Para a identidade atribuída pelo usuário que os nós de computação usam para acessar o autostorage, você deve designar essa referência de identidade a pools que têm nós de computação que precisam de acesso ao autostorage. (Detalhes sobre esse requisito são descritos na API REST para o Conta do Lote – AutoStorageBaseProperties da Update, na nodeIdentityReference
propriedade.) Portanto, você precisa configurar sua referência de identidade de nó em dois locais no portal do Azure:
A referência de identidade do nó na conta de armazenamento automático da conta do lote
A identidade gerenciada atribuída pelo usuário no pool de lotes
Importante
Você pode definir mais de uma identidade gerenciada atribuída pelo usuário na identidade do pool. No entanto, aquele que é definido na referência de identidade do nó também deve ser definido na identidade do pool.
Configurar a referência de identidade do nó da conta de armazenamento automático
Para configurar a referência de identidade do nó em sua conta de armazenamento automático, siga estas etapas:
No portal do Azure, pesquise e selecione Contas do Lote.
Na lista de contas de lote, selecione o nome da sua conta de lote.
No painel de navegação da conta de lote, localize o título Configurações e selecione Conta de armazenamento.
Na seção INFORMAÇÕES DA CONTA DE ARMAZENAMENTO, selecione Selecionar uma conta de armazenamento e, em seguida, selecione sua conta de armazenamento automático.
Vá para o cabeçalho Referência de identidade do nó e selecione Adicionar.
Conclua o processo para adicionar sua nova referência de identidade de nó atribuída pelo usuário.
Configurar a identidade gerenciada atribuída pelo usuário do pool de lotes
Para configurar a identidade gerenciada atribuída pelo usuário em seu pool de lotes, siga estas etapas:
No portal do Azure, pesquise e selecione Contas do Lote.
Na lista de contas de lote, selecione o nome da sua conta de lote.
No painel de navegação da conta de lote, localize o título Recursos e selecione Pools.
Na página do pool de lotes, selecione Adicionar.
Na página Adicionar pool, insira uma ID do pool. No campo Identidade, selecione Usuário atribuído.
Localize o cabeçalho Identidade gerenciada atribuída pelo usuário e selecione Adicionar.
Conclua o processo para adicionar a referência de identidade do nó que você criou anteriormente ao pool de lotes.
Casos de uso para identidade gerenciada em um nó de lote
Você pode usar a identidade gerenciada em um nó de lote de diferentes maneiras, como para os seguintes recursos:
- Baixar pacotes de aplicativos de um pool de lotes
- Baixar arquivos de recurso de tarefa de um pool de lotes
Baixar pacotes de aplicativos de um pool de lotes
Ao criar um pool de lotes, você pode especificar pacotes de aplicativos no nível do pool. Os pacotes de aplicativos serão baixados da conta de armazenamento automático e instalados em todos os nós desse pool. Para obter mais informações, consulte Carregar e gerenciar aplicativos. Carregue os pacotes de aplicativos na conta do lote antes de consultá-los durante a criação do pool de lotes. Para adicionar pacotes de aplicativos ao pool do lote, acesse a página Adicionar pool da sua conta do lote, localize o cabeçalho CONFIGURAÇÕES OPCIONAIS e selecione Pacotes de aplicativos.
Cenários de comportamento
Esta seção descreve o status operacional do nó e o status do download do pacote de aplicativos para os seguintes parâmetros de identidade gerenciada:
Se a identidade gerenciada é fornecida na referência de identidade do nó
Se a identidade gerenciada tem permissões suficientes na conta de armazenamento automático
Se o pool de lotes foi criado usando a mesma identidade gerenciada ou uma identidade gerenciada diferente
No portal do Azure, você pode encontrar os estados de download do nó e do pacote na página de visão geral do nó do lote. Para acessar essa página, localize o título Geral do painel de navegação do pool de lotes, selecione Nós e, em seguida, selecione o nome do nó que você deseja ver.
A tabela a seguir descreve quatro cenários de comportamento que envolvem pacotes de aplicativos e identidade gerenciada em um pool de lotes.
Número do cenário | Uso da identidade gerenciada | Permissões de identidade gerenciada na conta de armazenamento automático | Especificação de criação de pool | Status do nó | Status de download do pacote |
---|---|---|---|---|---|
1 | Dado na referência de identidade do nó | Permissões suficientes | Criado no pool usando a mesma identidade gerenciada | Iniciado com sucesso | Baixado para o nó no diretório raiz/aplicativos |
2 | Dado na referência de identidade do nó | Permissões insuficientes | Criado no pool usando a mesma identidade gerenciada | Iniciado com êxito, mas no estado ocioso | Não baixado para o nó |
3 | Não fornecido na referência de identidade do nó | Permissões suficientes ou insuficientes | Criado no pool usando a mesma identidade gerenciada ou uma identidade gerenciada diferente | Preso indefinidamente no estado inicial | Não baixado para o nó |
4 | Dado na referência de identidade do nó | Permissões suficientes ou insuficientes | Criado no pool usando uma identidade gerenciada diferente | Estado inutilizável | Não baixado para o nó |
No Cenário 3, quando o serviço Lote do Azure tenta iniciar o nó, a referência de identidade do nó se torna nula. Isso faz com que o nó permaneça preso em um estado inicial . Para verificar esse status, acesse a página Visão geral do nó do pool de lotes e selecione Carregar logs em lotes para carregar os logs em lotes em um contêiner de armazenamento. No painel Carregar logs em lote, selecione o contêiner de Armazenamento do Azure, selecione o botão Escolher contêiner de armazenamento e, em seguida, selecione e baixe o arquivo agent-debug.log do contêiner de armazenamento. O arquivo de log conterá várias entradas que têm a mensagem "pool ainda não totalmente ingressado, health=Status.TvmJoinPoolInProgress".
No Cenário 4, você pode definir mais de uma identidade gerenciada ao criar o pool de lotes. E se a identidade gerenciada que você define na referência de identidade do nó não for adicionada à identidade do pool? Nesse caso, o serviço Lote do Azure não consegue encontrar a identidade gerenciada correta que corresponde à definida na referência do nó. Em vez disso, o serviço exibirá a seguinte mensagem de erro de nó:
O nó tem 1 erro(s).
Ocorreu um erro encontrado no nó
Código: ApplicationPackageError
Mensagem:
Um ou mais pacotes de aplicativos especificados para o pool são inválidos
Baixar arquivos de recurso de tarefa de um pool de lotes
Ao criar uma tarefa, você pode especificar arquivos de recurso a serem usados na tarefa. Esses arquivos são baixados automaticamente para o nó da conta de armazenamento automático antes que o comando task seja executado. Para obter mais informações, consulte Tarefas no Lote do Azure. Para especificar arquivos de recurso de tarefa, siga estas etapas:
No portal do Azure, pesquise e selecione Contas do Lote.
Na lista de contas de lote, selecione o nome da sua conta de lote.
No painel de navegação da sua conta do lote, localize o título Recursos e selecione Trabalhos.
Na página Trabalhos, selecione Adicionar.
Preencha os campos obrigatórios no painel Adicionar trabalhos e selecione OK.
No painel de navegação do trabalho em lotes, localize o título Geral e selecione Tarefas.
Na página Tarefas, selecione Adicionar.
No painel Adicionar Tarefas, preencha os campos obrigatórios. Em seguida, localize o cabeçalho CONFIGURAÇÕES AVANÇADAS e selecione Arquivos de recursos.
Você pode especificar os arquivos de recurso usando os métodos descritos na tabela a seguir.
Método | Observações |
---|---|
Contêiner de armazenamento automático | A referência de identidade aparece como Nenhum e não pode ser modificada. O nó acessa a conta de armazenamento automático para recuperar arquivos de recurso. |
URL do contêiner ou URL HTTP | Você pode definir a URL de outra conta de Armazenamento do Azure se permissões suficientes tiverem sido configuradas nessa conta de Armazenamento do Azure para a referência de identidade e a identidade tiver sido adicionada ao pool de lotes. |
Se você precisar de acesso à conta de armazenamento automático, a identidade deverá ser definida na referência de identidade do nó e na identidade do pool.
Quando você especifica as definições de arquivo de recurso, os parâmetros Prefixo de blob e Caminho de arquivo são opcionais. O prefixo de blob é usado para filtrar blobs específicos. O caminho do arquivo é usado para criar uma subpasta no nó para armazenar os arquivos de blob. Se o caminho do arquivo não estiver definido, os arquivos serão armazenados no caminho de cada tarefa (root/wd).
Tipo de arquivo do recurso | Valor | Prefixo do blob | Caminho do arquivo | Modo de arquivo (somente Linux) | Referência de identidade |
---|---|---|---|---|---|
AutoStorageContainerName | <nome do aplicativo> | meucaminho1 | |||
StorageContainerUrl | https://< nome-da-conta.blob.core.windows.net/con> | meu caminho2 | /subscriptions/<subscription-guid>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-identity-name> | ||
Url Http | https://< nome-da-conta.blob.core.windows.net/con/api.crt> | meu caminho3 | /subscriptions/<subscription-guid>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-identity-name> |
Cenários de comportamento
A tabela a seguir descreve quatro cenários de comportamento que podem ocorrer quando você usa a identidade gerenciada para criar um pool de lotes e, em seguida, cria uma tarefa que tem arquivos de recurso para recuperar um blob de um contêiner de armazenamento automático.
Número do cenário | Uso da identidade gerenciada | Permissões de identidade gerenciada na conta de armazenamento automático | Especificação de criação de pool | Resultado |
---|---|---|---|---|
1 | Dado na referência de identidade do nó | Permissões suficientes | Criado no pool usando a mesma identidade gerenciada | O arquivo Blob foi baixado com êxito para o nó no diretório root/wd/<file-path> , conforme mostrado na página de visão geral da tarefa |
2 | Dado na referência de identidade do nó | Permissões insuficientes | Criado no pool usando a mesma identidade gerenciada | A tarefa falha devido a um erro ResourceContainerAccessDenied , mensagem de erro "O acesso para um dos contêineres de Blob do Azure especificados foi negado" |
3 | Não fornecido na referência de identidade do nó | Permissões suficientes ou insuficientes | Criado no pool usando a mesma identidade gerenciada ou uma identidade gerenciada diferente | A tarefa falha devido a um erro ResourceContainerAccessDenied , mensagem de erro "O acesso para um dos contêineres de Blob do Azure especificados foi negado" |
4 | Dado na referência de identidade do nó | Permissões suficientes ou insuficientes | Criado no pool usando uma identidade gerenciada diferente | A tarefa falha devido a um erro ResourceContainerListMiscError , mensagem de erro "Erro diverso encontrado ao listar um dos contêineres de Blob do Azure especificados)" |
Em cenários em que a tarefa de recuperação de blob falha, vá para a página Tarefas do portal do Azure e selecione o nome da tarefa que aparece ao lado do código de erro. Em seguida, no painel de navegação da página de tarefas, localize o título Geral , selecione Propriedades e, em seguida, selecione Exibição Json. A exibição de propriedades JSON mostrará a mensagem de erro correspondente e outros detalhes sobre a tarefa com falha. Por exemplo, no cenário 4, o erro ResourceContainerListMiscError falha devido a um erro "HTTP 400 Bad Request". Isso ocorre porque a identidade gerenciada definida na referência de identidade do nó não corresponde a nenhuma das identidades gerenciadas definidas na configuração de identidade do pool.
Verifique se sua identidade gerenciada pode acessar os recursos do Azure
Para verificar no Windows se uma identidade gerenciada atribuída a um nó do Lote do Azure tem permissões suficientes para acessar recursos do Azure (como uma conta de armazenamento), siga estas etapas:
Observação
Este procedimento emula a última etapa que você precisa fazer para obter um token que tenha uma ID de identidade válida para acessar a conta de armazenamento e verificar se há permissões suficientes. Se a identidade não estiver definida na referência de identidade do nó, o nó não poderá obter a ID de identidade. Nesse caso, todo o processo já está bloqueado antes que você possa executar a última etapa. Antes de executar este procedimento, verifique se a identidade está definida na referência de identidade do nó.
Use o protocolo RDP para se conectar ao nó.
No Postman, envie uma solicitação GET que contenha o
Metadata: true
cabeçalho para a seguinte URL:http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01& recurso=https://storage.azure.com/& mi_res_id=/subscriptions/<subscription-guid>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-identity-name>
O
169.254.169.254
endereço IP também é conhecido como IMDS (Serviço de Metadados de Instância do Azure). O IMDS fornece informações sobre a instância da VM. Se você tiver essas informações de instância de VM, poderá usá-la para solicitar tokens para identidade gerenciada.O
mi_res_id
valor do parâmetro no URL está em negrito. Essa é a ID do recurso da identidade gerenciada atribuída pelo usuário que você definiu na identidade do pool. Para localizar essa ID de recurso, juntamente com a ID do cliente e a ID da entidade de segurança, siga estas etapas:No portal do Azure, pesquise e selecione Contas do Lote.
Na lista de contas de lote, selecione o nome da sua conta de lote.
No painel de navegação da conta de lote, localize o título Recursos e selecione Pools.
Na lista de pools de lotes, selecione o nome do pool de lotes.
No painel de navegação do pool de lotes, localize o título Geral e selecione Propriedades.
Na página de propriedades do pool, selecione Exibição Json.
No texto JSON, localize a
identity
/userAssignedIdentities
lista. Para a identidade gerenciada atribuída pelo usuário que você está usando, copie os valores para as seguintes propriedades:resourceId
clientId
(um GUID)principalId
(um GUID)
Depois de enviar a URL no Postman, o corpo da resposta JSON conterá entradas para
access_token
(uma cadeia de caracteres de texto longa, também conhecida como token de portador) eclient_id
(um GUID). Oclient_id
valor da resposta deve corresponder aoclientId
valor que você copiou da página de propriedades do pool de lotes.Copie o token de portador completo e teste-o no Postman recuperando o blob da sua conta de autostorage. Neste exemplo, a identidade gerenciada não tem permissão para acessar o armazenamento. Portanto, a conta de armazenamento automático responde retornando um erro HTTP 403 (erro AuthorizationPermissionMismatch, mensagem "Esta solicitação não está autorizada a executar esta operação usando esta permissão").
Observação
O cabeçalho x-ms-version é necessário para recuperar o blob. Para obter mais informações, consulte a API Obter Blob do Armazenamento do Azure.
Aviso de isenção de responsabilidade para informações de terceiros
Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.
Aviso de isenção de responsabilidade para contatos de terceiros
A Microsoft fornece informações de contato de terceiros para ajudá-lo a encontrar informações adicionais sobre esse tópico. Essas informações de contato podem ser alteradas sem aviso prévio. A Microsoft não garante a precisão das informações de contato de terceiros.
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.