O que são identidades gerenciadas para recursos do Azure?What is managed identities for Azure resources?

Identidades gerenciadas para recursos do Azure é um recurso do Azure Active Directory.Managed identities for Azure resources is a feature of Azure Active Directory. Cada um dos serviços do Azure que dão suporte a identidades gerenciadas para recursos do Azure está sujeito à própria linha do tempo.Each of the Azure services that support managed identities for Azure resources are subject to their own timeline. Não deixe de examinar o status de disponibilidade das identidades gerenciadas do seu recurso e os problemas conhecidos antes de começar.Make sure you review the availability status of managed identities for your resource and known issues before you begin.

Um desafio comum ao criar aplicativos de nuvem é como gerenciar as credenciais no código para autenticar serviços de nuvem.A common challenge when building cloud applications is how to manage the credentials in your code for authenticating to cloud services. Proteger as credenciais é uma tarefa importante.Keeping the credentials secure is an important task. O ideal é que as credenciais nunca apareçam em estações de trabalho do desenvolvedor e não sejam verificadas no controle de origem.Ideally, the credentials never appear on developer workstations and aren't checked into source control. O Azure Key Vault fornece uma maneira de armazenar com segurança as credenciais, os segredos e outras chaves, mas seu código precisa se autenticar no Key Vault para recuperá-los.Azure Key Vault provides a way to securely store credentials, secrets, and other keys, but your code has to authenticate to Key Vault to retrieve them.

As identidades de gerenciado para a funcionalidade de recursos do Azure no Azure AD (Azure Active Directory) resolve esse problema.The managed identities for Azure resources feature in Azure Active Directory (Azure AD) solves this problem. O recurso oferece aos serviços do Azure uma identidade gerenciada automaticamente no Azure AD.The feature provides Azure services with an automatically managed identity in Azure AD. Você pode usar a identidade para se autenticar em qualquer serviço que dê suporte à autenticação do Azure AD, incluindo o Key Vault, sem ter credenciais em seu código.You can use the identity to authenticate to any service that supports Azure AD authentication, including Key Vault, without any credentials in your code.

As identidades de gerenciado para a funcionalidade de recursos do Azure é gratuita com o Azure AD para assinaturas do Azure.The managed identities for Azure resources feature is free with Azure AD for Azure subscriptions. Não há nenhum custo adicional.There's no additional cost.

Observação

Identidades gerenciadas para recursos do Azure é o novo nome para o serviço anteriormente conhecido como MSI (Identidade de Serviço Gerenciada).Managed identities for Azure resources is the new name for the service formerly known as Managed Service Identity (MSI).

TerminologiaTerminology

Os seguintes termos são usados em todas as identidades gerenciadas do conjunto de documentação de recursos do Azure:The following terms are used throughout the managed identities for Azure resources documentation set:

  • ID do Cliente – um identificador exclusivo gerado pelo Azure AD vinculado a um aplicativo e uma entidade de serviço durante o provisionamento inicial.Client ID - a unique identifier generated by Azure AD that is tied to an application and service principal during its initial provisioning.
  • ID da Entidade de Segurança – a ID de objeto do objeto da entidade de serviço para a identidade gerenciada usada para permitir acesso baseado em função a um recurso do Azure.Principal ID - the object ID of the service principal object for your managed identity that is used to grant role-based access to an Azure resource.
  • IMDS (Serviço de Metadados de Instância) do Azure – um ponto de extremidade REST acessível a todas as VMs IaaS criadas por meio do Azure Resource Manager.Azure Instance Metadata Service (IMDS) - a REST endpoint accessible to all IaaS VMs created via the Azure Resource Manager. O ponto de extremidade está disponível em um endereço IP não roteável conhecido (169.254.169.254) que pode ser acessado somente de dentro da VM.The endpoint is available at a well-known non-routable IP address (169.254.169.254) that can be accessed only from within the VM.

Como as identidades gerenciadas dos recursos do Azure funcionam?How does the managed identities for Azure resources work?

Há dois tipos de identidades gerenciadas:There are two types of managed identities:

  • Uma identidade gerenciada atribuída pelo sistema é habilitada diretamente em uma instância de serviço do Microsoft Azure.A system-assigned managed identity is enabled directly on an Azure service instance. Quando a identidade é habilitada, o Azure cria uma identidade para a instância do locatário do Azure AD confiado pela assinatura da instância.When the identity is enabled, Azure creates an identity for the instance in the Azure AD tenant that's trusted by the subscription of the instance. Depois que a identidade é criada, as credenciais são provisionadas para a instância.After the identity is created, the credentials are provisioned onto the instance. O ciclo de vida de uma identidade atribuída ao sistema está diretamente relacionado à instância de serviço do Azure na qual ela está habilitada.The lifecycle of a system-assigned identity is directly tied to the Azure service instance that it's enabled on. Se a instância é excluída, o Azure limpa automaticamente as credenciais e a identidade no Azure AD.If the instance is deleted, Azure automatically cleans up the credentials and the identity in Azure AD.
  • Uma identidade gerenciada atribuída pelo usuário é criada como um recurso autônomo do Azure.A user-assigned managed identity is created as a standalone Azure resource. Por meio de um processo de criação, o Microsoft Azure cria uma identidade no locatário do Azure AD confiado pela assinatura em uso.Through a create process, Azure creates an identity in the Azure AD tenant that's trusted by the subscription in use. Depois que a identidade é criada, ela pode ser atribuída a uma ou mais instâncias de serviço do Azure.After the identity is created, the identity can be assigned to one or more Azure service instances. O ciclo de vida de uma identidade atribuída pelo usuário é gerenciado separadamente do ciclo de vida das instâncias de serviço do Azure a que ela é atribuída.The lifecycle of a user-assigned identity is managed separately from the lifecycle of the Azure service instances to which it's assigned.

Internamente, as identidades gerenciadas são entidades de serviço de um tipo especial, que estão bloqueadas para serem usadas apenas com recursos do Azure.Internally, managed identities are service principals of a special type, which are locked to only be used with Azure resources. Quando a identidade gerenciada é excluída, a entidade de serviço correspondente é removida automaticamente.When the managed identity is deleted, the corresponding service principal is automatically removed.

Seu código pode usar uma identidade gerenciada para solicitar tokens de acesso para os serviços que dão suporte à autenticação do Azure AD.Your code can use a managed identity to request access tokens for services that support Azure AD authentication. O Azure é responsável por reverter as credenciais que são usadas pela instância de serviço.Azure takes care of rolling the credentials that are used by the service instance.

O diagrama abaixo mostra como as identidades de serviço gerenciadas funcionam com VMs (máquinas virtuais):The following diagram shows how managed service identities work with Azure virtual machines (VMs):

Identidades de serviço gerenciadas e VMs do Azure

PropriedadeProperty Identidade gerenciada atribuída pelo sistemaSystem-assigned managed identity Identidade gerenciada atribuída pelo usuárioUser-assigned managed identity
CriaçãoCreation Criada como parte de um recurso do Azure (por exemplo, uma máquina virtual do Azure ou o Serviço de Aplicativo do Azure)Created as part of an Azure resource (for example, an Azure virtual machine or Azure App Service) Criada como um recurso independente do AzureCreated as a stand-alone Azure resource
Ciclo de vidaLifecycle Ciclo de vida compartilhado com o recurso do Azure com o qual a identidade gerenciada é criada.Shared lifecycle with the Azure resource that the managed identity is created with.
Quando o recurso pai é excluído, a identidade gerenciada também é excluída.When the parent resource is deleted, the managed identity is deleted as well.
Ciclo de vida independente.Independent life-cycle.
Precisa ser explicitamente excluída.Must be explicitly deleted.
Compartilhamento entre recursos do AzureSharing across Azure resources Não pode ser compartilhada.Cannot be shared.
Só pode ser associada a um único recurso do Azure.It can only be associated with a single Azure resource.
Pode ser compartilhadaCan be shared
A mesma identidade gerenciada atribuída pelo usuário pode ser associada a mais de um recurso do Azure.The same user-assigned managed identity can be associated with more than one Azure resource.
Casos de uso comunsCommon use cases Cargas de trabalho que estão contidas em um único recurso do AzureWorkloads that are contained within a single Azure resource
Cargas de trabalho para as quais você precisa de identidades independentes.Workloads for which you need independent identities.
Por exemplo, um aplicativo que é executado em uma única máquina virtualFor example, an application that runs on a single virtual machine
Cargas de trabalho que são executadas em vários recursos e que podem compartilhar uma única identidade.Workloads that run on multiple resources and which can share a single identity.
Cargas de trabalho que precisam de pré-autorização para um recurso seguro como parte de um fluxo de provisionamento.Workloads that need pre-authorization to a secure resource as part of a provisioning flow.
Cargas de trabalho em que os recursos são reciclados com frequência, mas as permissões devem permanecer consistentes.Workloads where resources are recycled frequently, but permissions should stay consistent.
Por exemplo, uma carga de trabalho em que várias máquinas virtuais precisam acessar o mesmo recursoFor example, a workload where multiple virtual machines need to access the same resource

Como uma identidade gerenciada atribuída pelo sistema funciona com uma VM do AzureHow a system-assigned managed identity works with an Azure VM

  1. O Azure Resource Manager recebe uma solicitação para habilitar a identidade gerenciada atribuída pelo sistema em uma VM.Azure Resource Manager receives a request to enable the system-assigned managed identity on a VM.

  2. O Azure Resource Manager cria uma entidade de serviço no Azure AD para a identidade da VM.Azure Resource Manager creates a service principal in Azure AD for the identity of the VM. A entidade de serviço é criada no locatário do Azure AD confiado pela assinatura.The service principal is created in the Azure AD tenant that's trusted by the subscription.

  3. O Azure Resource Manager configura a identidade na VM atualizando o ponto de extremidade de identidade do Serviço de Metadados de Instância do Azure com o certificado e a ID do cliente da entidade de serviço.Azure Resource Manager configures the identity on the VM by updating the Azure Instance Metadata Service identity endpoint with the service principal client ID and certificate.

  4. Depois que a máquina virtual ganhar uma identidade, use as informações da entidade de serviço para conceder acesso aos recursos do Microsoft Azure à VM.After the VM has an identity, use the service principal information to grant the VM access to Azure resources. Para chamar o Azure Resource Manager, use o RBAC (controle de acesso baseado em função) no Azure AD para atribuir a função apropriada à entidade de serviço da VM.To call Azure Resource Manager, use role-based access control (RBAC) in Azure AD to assign the appropriate role to the VM service principal. Para chamar o Key Vault, conceda o acesso de código para o segredo ou chave específica no Key Vault.To call Key Vault, grant your code access to the specific secret or key in Key Vault.

  5. O código que está em execução na VM pode solicitar um token do ponto de extremidade de serviço de Metadados de Instância do Azure, acessível somente a partir da VM: http://169.254.169.254/metadata/identity/oauth2/tokenYour code that's running on the VM can request a token from the Azure Instance Metadata service endpoint, accessible only from within the VM: http://169.254.169.254/metadata/identity/oauth2/token

    • O parâmetro de recurso especifica o serviço ao qual o token é enviado.The resource parameter specifies the service to which the token is sent. Para se autenticar no Azure Resource Manager, use resource=https://management.azure.com/.To authenticate to Azure Resource Manager, use resource=https://management.azure.com/.
    • O parâmetro de versão de API Especifica a versão IMDS, use a versão da API = 2018-02-01 ou superior.API version parameter specifies the IMDS version, use api-version=2018-02-01 or greater.
  6. A chamada é feita ao Azure AD para solicitar acesso ao token (conforme especificado na etapa 5) usando a ID do cliente e o certificado configurados na etapa 3.A call is made to Azure AD to request an access token (as specified in step 5) by using the client ID and certificate configured in step 3. O Azure AD retorna um token de acesso do JSON Web Token (JWT).Azure AD returns a JSON Web Token (JWT) access token.

  7. Seu código envia o token de acesso em uma chamada para um serviço que dá suporte à autenticação do Azure AD.Your code sends the access token on a call to a service that supports Azure AD authentication.

Como uma identidade gerenciada atribuída pelo usuário funciona com uma VM do AzureHow a user-assigned managed identity works with an Azure VM

  1. O Azure Resource Manager recebe uma solicitação para criar uma identidade gerenciada atribuída pelo usuário.Azure Resource Manager receives a request to create a user-assigned managed identity.

  2. O Azure Resource Manager cria uma entidade de serviço no Azure AD para a identidade gerenciada atribuída pelo usuário.Azure Resource Manager creates a service principal in Azure AD for the user-assigned managed identity. A entidade de serviço é criada no locatário do Azure AD confiado pela assinatura.The service principal is created in the Azure AD tenant that's trusted by the subscription.

  3. O Azure Resource Manager recebe uma solicitação para configurar a identidade gerenciada atribuída pelo usuário em uma VM e atualiza o ponto de extremidade de identidade do Serviço de Metadados de Instância do Azure com o certificado e a ID do cliente da entidade de serviço de identidade gerenciada atribuída pelo usuário.Azure Resource Manager receives a request to configure the user-assigned managed identity on a VM and updates the Azure Instance Metadata Service identity endpoint with the user-assigned managed identity service principal client ID and certificate.

  4. Depois que a identidade gerenciada atribuída pelo usuário for criada, use as informações da entidade de serviço para conceder o acesso de identidade aos recursos do Azure.After the user-assigned managed identity is created, use the service principal information to grant the identity access to Azure resources. Para chamar o Azure Resource Manager, use RBAC no Azure AD para atribuir a função apropriada à entidade de serviço da identidade atribuída pelo usuário.To call Azure Resource Manager, use RBAC in Azure AD to assign the appropriate role to the service principal of the user-assigned identity. Para chamar o Key Vault, conceda o acesso de código para o segredo ou chave específica no Key Vault.To call Key Vault, grant your code access to the specific secret or key in Key Vault.

    Observação

    Você também pode executar essa etapa antes da etapa 3.You can also do this step before step 3.

  5. O código que está em execução na VM pode solicitar um token do ponto de extremidade de identidade do Serviço de Metadados de Instância do Azure, acessível somente a partir da VM: http://169.254.169.254/metadata/identity/oauth2/tokenYour code that's running on the VM can request a token from the Azure Instance Metadata Service identity endpoint, accessible only from within the VM: http://169.254.169.254/metadata/identity/oauth2/token

    • O parâmetro de recurso especifica o serviço ao qual o token é enviado.The resource parameter specifies the service to which the token is sent. Para se autenticar no Azure Resource Manager, use resource=https://management.azure.com/.To authenticate to Azure Resource Manager, use resource=https://management.azure.com/.
    • O parâmetro de ID de cliente especifica a identidade para a qual o token é solicitado.The client ID parameter specifies the identity for which the token is requested. Esse valor é necessário para eliminar a ambiguidade quando mais de uma identidade atribuída pelo usuário está em uma mesma VM.This value is required for disambiguation when more than one user-assigned identity is on a single VM.
    • O parâmetro de versão da API especifica a versão do Serviço de Metadados de Instância do Azure.The API version parameter specifies the Azure Instance Metadata Service version. Use api-version=2018-02-01 ou superior.Use api-version=2018-02-01 or higher.
  6. A chamada é feita ao Azure AD para solicitar acesso ao token (conforme especificado na etapa 5) usando a ID do cliente e o certificado configurados na etapa 3.A call is made to Azure AD to request an access token (as specified in step 5) by using the client ID and certificate configured in step 3. O Azure AD retorna um token de acesso do JSON Web Token (JWT).Azure AD returns a JSON Web Token (JWT) access token.

  7. Seu código envia o token de acesso em uma chamada para um serviço que dá suporte à autenticação do Azure AD.Your code sends the access token on a call to a service that supports Azure AD authentication.

Como usar identidades gerenciadas para recursos do Azure?How can I use managed identities for Azure resources?

Para saber como usar as identidades gerenciadas para acessar diferentes recursos do Azure, experimente estes tutoriais.To learn how to use managed identities to access different Azure resources, try these tutorials.

Observação

Confira o curso Implementando identidades gerenciadas para Recursos do Microsoft Azure para obter mais informações sobre identidades gerenciadas, incluindo vídeos com passo a passo detalhado de vários cenários com suporte.Check out the Implementing Managed Identities for Microsoft Azure Resources course for more information about managed identities, including detailed video walkthroughs of several supported scenarios.

Saiba como usar uma identidade gerenciada com uma VM do Windows:Learn how to use a managed identity with a Windows VM:

Saiba como usar uma identidade gerenciada com uma VM do Linux:Learn how to use a managed identity with a Linux VM:

Saiba como usar uma identidade gerenciada com outros serviços do Azure:Learn how to use a managed identity with other Azure services:

O recurso tem suporte de quais serviços do Azure?What Azure services support the feature?

As identidades gerenciadas para recursos do Azure podem ser usadas para autenticar os serviços que são compatíveis com a autenticação do Azure AD.Managed identities for Azure resources can be used to authenticate to services that support Azure AD authentication. Para obter uma lista de serviços do Azure que dão suporte para identidades gerenciadas para a funcionalidade de recursos do Azure, veja Serviços que dão suporte a identidades gerenciadas para recursos do Azure.For a list of Azure services that support the managed identities for Azure resources feature, see Services that support managed identities for Azure resources.

Próximas etapasNext steps

Comece a usar as identidades gerenciadas para funcionalidade de recursos do Azure com os seguintes inícios rápidos:Get started with the managed identities for Azure resources feature with the following quickstarts: