O Azure Key Vault é uma solução alternativa para armazenar e gerenciar os segredos e credenciais de um aplicativo. Nesse caso, as informações são armazenadas no cofre de chaves. No entanto, o aplicativo ainda precisará se autenticar no Azure Key Vault para recuperar as chaves e outros segredos, o que significa que ele ainda abrigará informações importantes diretamente no código.
As identidades gerenciadas para recursos do Azure – o novo nome do serviço anteriormente conhecido como Managed Service Identity (MSI) – são extremamente poderosas e reduzem a carga de trabalho associada à supervisão manual. O código permanece limpo e, se estiver usando o Azure Key Vault, suas configurações não precisam ser mantidas no código. Também é possível acessar outros recursos do Azure que dão suporte à autenticação do AD sem armazenar suas respectivas cadeias e conexão e outros detalhes de configuração no aplicativo. É possível realizar operações em identidades gerenciadas usando o portal do Azure, um modelo ARM, CLI do Azure, PowerShell e APIs REST.
Existem dois tipos de identidades gerenciadas:
Ambas têm seus próprios detalhes, e cada uma vem com seus próprios prós e contras.
Você pode habilitar identidades gerenciadas atribuídas pelo sistema em alguns dos serviços do Azure mais usados. Ao habilitar na instância de serviço do Azure, uma identidade é criada no Azure Active Directory - a entidade de serviço para essa instância.
A identidade também está vinculada ao ciclo de vida da instância de serviço, o que significa que será removida automaticamente quando a instância for excluída ou desativada. Quanto a identidade é excluída, a entidade de serviço correspondente também é excluída no Azure AD.
Outra maneira de usar a identidade gerenciada para recursos do Azure é criar uma identidade gerenciada atribuída ao usuário separadamente e atribuí-la como um recurso autônomo do Azure. A melhor parte desse método é que você pode atribuir a mesma identidade gerenciada a mais de um serviço do Azure ou a mais de uma instância do serviço. Como a identidade gerenciada atribuída pelo usuário é criada separadamente, ela não é excluída quando o recurso do Azure associado a ela é excluído ou desativado.
Atribuídas pelo sistema:
Atribuído pelo usuário:
Para obter a lista completa de serviços do Azure que dão suporte a identidades gerenciadas, clique aqui.
Um ponto importante a ser lembrado é que uma identidade gerenciada, seja ela atribuída pelo sistema ou pelo usuário, é um tipo especial de entidade de serviço usada apenas com recursos do Azure.
Como estão em sincronia, as modificações de um podem afetar o outro. Por exemplo, a entidade de serviço é removida quando a identidade gerenciada correspondente é excluída.
Três benefícios de usar identidades gerenciadas:
Por meio de identidades gerenciadas, você pode solicitar tokens de acesso para os recursos que dão suporte à autenticação do Azure AD.
Os tokens de acesso são recebidos com base no RBAC atribuído a eles no recurso. Assim que o recurso recebe o token de acesso, ele pode ser acessado. A melhor parte é que o Azure se encarrega de rolar as credenciais que a instância de serviço usa, eliminando a menor possibilidade de vazamento de senha.
Sete etapas para implementar identidades gerenciadas do Azure
Etapa 1: A solicitação é enviada para o Azure Resource Manager para habilitar (no caso de uma identidade gerenciada atribuída pelo sistema) ou criar (no caso de uma identidade gerenciada atribuída pelo usuário) uma identidade gerenciada.
Etapa 2: No caso da identidade gerenciada atribuída pelo sistema, quando o Azure Resource Manager recebe uma solicitação para habilitar uma identidade gerenciada na VM, ele cria uma entidade de serviço para a identidade gerenciada no AD. O locatário confiável do Azure AD hospedará a nova entidade de serviço.
Para identidades gerenciadas atribuídas pelo usuário, o Azure Resource Manager recebe a solicitação para criar a identidade gerenciada como um recurso separado. Quando a identidade gerenciada atribuída pelo usuário é criada, uma entidade de serviço correspondente também é criada pelo gerenciador de recursos no locatário confiável do Azure AD.
Etapa 3: Para identidades gerenciadas atribuídas pelo sistema, o gerenciador de recursos atualiza a identidade da máquina virtual usando o ponto de extremidade de identidade do Serviço de Metadados de Instância do Azure (IMDS). Essa configuração fornece ao ponto de extremidade o certificado e a ID do cliente da entidade de serviço.
No caso de identidades gerenciadas atribuídas pelo usuário, quanto o gerenciador de recursos recebe a solicitação para configurar a identidade gerenciada atribuída pelo usuário em máquinas virtuais, o Azure Resource Manager atualiza posteriormente o ponto de extremidade de identidades IMDS com a ID do cliente principal do serviço de identidade gerenciada atribuída pelo usuário e certificado.
Etapa 4: Depois de criar a entidade de serviço e habilitar ou atribuir a identidade da máquina virtual, você precisa usar as informações da entidade de serviço para atribuir um RBA apropriado ao recurso do Azure.
Etapa 5: O código do aplicativo em execução na VM solicita um token do ponto de extremidade IMDS, acessível apenas de dentro da máquina virtual. Certos parâmetros são enviados para solicitações de token:
Etapa 6: a solicitação do token de acesso é enviada ao Azure AD usando a ID do cliente e o certificado. O Azure AD retorna um token de acesso JSON Web Token (JWT).
Etapa 7: o código agora envia o token do Azure AD para acessar o serviço do Azure desejado, desde que ele dê suporte à autenticação do Azure AD.
Abaixo estão as etapas para criar, configurar e atribuir RBAC e identidades gerenciadas.
Você pode escolher entre configurar a identidade gerenciada atribuída pelo sistema ou pelo usuário para seus projetos com base em seus requisitos e objetivos. No entanto, para fins de demonstração, este laboratório tem duas seções diferentes.
Na primeira seção, habilitaremos a identidade atribuída pelo sistema para uma máquina virtual no Azure e forneceremos essa entidade de serviço, função de colaborador na conta de armazenamento.
Na segunda parte do laboratório, criaremos uma identidade gerenciada atribuída pelo usuário como um recurso separado, atribuindo essa identidade à máquina virtual e atribuindo um RBAC a essa identidade na conta de armazenamento.
Pré-requisitos para o laboratório
Fase um: trabalhando com identidades gerenciadas atribuídas pelo sistema
Fase dois: trabalhando com identidades gerenciadas atribuídas pelo usuário
Agora que você atribuiu uma função às identidades gerenciadas na conta de armazenamento, já pode acessar os recursos de armazenamento da máquina virtual.
Conclusão
As identidades gerenciadas são úteis devido ao gerenciamento automático de identidades de carga de trabalho que se autenticam no Azure Active Directory – os aplicativos obtêm tokens do Azure AD sem a necessidade de gerenciar as credenciais e segredos no código do aplicativo. Você pode atribuir essas funções de identidade em outros recursos que dão suporte à autenticação do Azure AD para obter acesso a esse recurso.
Para desenvolvedores e administradores, isso remove a tarefa manual de gerenciar as credenciais no código do aplicativo ou nas cargas de trabalho, reduzindo a possibilidade de vazamento de segurança ou senhas.