Autenticar uma identidade gerenciada com o Microsoft Entra ID para acessar os recursos do Azure Relay

Identidades gerenciadas para recursos do Azure é um recurso entre Azure que permite criar uma identidade segura associada à implantação sob a qual o código do aplicativo é executado. Em seguida, você pode associar essa identidade a funções de controle de acesso que concedem permissões personalizadas para acessar recursos específicos do Azure de que seu aplicativo precisa.

Com identidades gerenciadas, a plataforma Azure gerencia essa identidade de tempo de execução. Você não precisa armazenar e proteger chaves de acesso no código ou na configuração do aplicativo, seja para a identidade em si ou para os recursos que você precisa acessar. Um aplicativo cliente de retransmissão em execução dentro de um aplicativo do Serviço de Aplicativo do Azure ou em uma máquina virtual com entidades gerenciadas habilitadas para suporte a recursos do Azure não precisa manipular regras e chaves SAS ou quaisquer outros tokens de acesso. O aplicativo cliente só precisa do endereço de ponto de extremidade do namespace Relay. Quando o aplicativo se conecta, o Relay vincula o contexto da entidade gerenciada ao cliente em uma operação que é mostrada em um exemplo mais adiante neste artigo. Depois de associado a uma identidade gerenciada, seu cliente de retransmissão pode fazer todas as operações autorizadas. A autorização é concedida associando uma entidade gerenciada a funções de Retransmissão.

Nota

Este recurso está geralmente disponível em todas as regiões, incluindo o Microsoft Azure operado pela 21Vianet.

Descrição geral

Quando uma entidade de segurança (um usuário, grupo, aplicativo) tenta acessar uma entidade de Retransmissão, a solicitação deve ser autorizada. Com o Microsoft Entra ID, o acesso a um recurso é um processo de duas etapas.

  1. Primeiro, a identidade da entidade de segurança é autenticada e um token OAuth 2.0 é retornado. O nome do recurso para solicitar um token é https://relay.azure.net. Se um aplicativo estiver sendo executado em uma entidade do Azure, como uma VM do Azure, um conjunto de dimensionamento de máquina virtual ou um aplicativo do Azure Function, ele poderá usar uma identidade gerenciada para acessar os recursos.
  2. Em seguida, o token é passado como parte de uma solicitação ao serviço de retransmissão para autorizar o acesso ao recurso especificado (conexões híbridas, retransmissões WCF). O Microsoft Entra autoriza direitos de acesso a recursos protegidos por meio do controle de acesso baseado em função do Azure (Azure RBAC). O Azure Relay define um conjunto de funções internas do Azure que englobam conjuntos comuns de permissões usadas para acessar entidades de Retransmissão. Você também pode definir funções personalizadas para acessar os dados. Para obter uma lista de funções internas suportadas pelo Azure Relay, consulte Azure Built-in roles for Azure Relay. Aplicativos nativos e aplicativos Web que fazem solicitações ao Relay também podem autorizar com o Microsoft Entra ID.

Funções internas do Azure para o Azure Relay

Para o Azure Relay, o gerenciamento de namespaces e todos os recursos relacionados por meio do portal do Azure e da API de gerenciamento de recursos do Azure já está protegido usando o modelo RBAC do Azure. O Azure fornece as seguintes funções internas do Azure para autorizar o acesso a um namespace de Retransmissão:

Função Description
Proprietário do Azure Relay Use essa função para conceder acesso total aos recursos do Azure Relay.
Azure Relay Listener Use essa função para conceder acesso de escuta e leitura de entidade aos recursos do Azure Relay.
Azure Relay Sender Use essa função para conceder acesso de envio e leitura de entidade aos recursos do Azure Relay.

Âmbito do recurso

Antes de atribuir uma função do Azure a uma entidade de segurança, determine o escopo de acesso que a entidade de segurança deve ter. As melhores práticas ditam que é sempre melhor conceder apenas o âmbito mais restrito possível.

A lista a seguir descreve os níveis nos quais você pode definir o escopo de acesso aos recursos do Azure Relay, começando com o escopo mais restrito:

  • Entidades de retransmissão: a atribuição de função aplica-se a uma entidade de retransmissão específica, como uma conexão híbrida ou um relé WCF.
  • Namespace de retransmissão: a atribuição de função aplica-se a todas as entidades de retransmissão sob o namespace.
  • Grupo de recursos: a atribuição de função aplica-se a todos os recursos de Retransmissão no grupo de recursos.
  • Assinatura: a atribuição de função aplica-se a todos os recursos de Retransmissão em todos os grupos de recursos da assinatura.

Nota

Lembre-se de que as atribuições de função do Azure podem levar até cinco minutos para se propagar. Para obter mais informações sobre como as funções internas são definidas, consulte Compreender as definições de função. Para obter informações sobre como criar funções personalizadas do Azure, consulte Funções personalizadas do Azure.

Ativar a identidade gerida

Primeiro, habilite a identidade gerenciada para o recurso do Azure que precisa acessar entidades de Retransmissão do Azure (conexões híbridas ou retransmissões WCF). Por exemplo, se seu aplicativo cliente de retransmissão estiver sendo executado em uma VM do Azure, habilite a identidade gerenciada para a VM seguindo as instruções do artigo Configurar identidade gerenciada para uma VM do Azure. Depois de habilitar essa configuração, uma nova identidade de serviço gerenciado é criada em sua ID do Microsoft Entra.

Para obter uma lista de serviços que dão suporte a identidades gerenciadas, consulte Serviços que dão suporte a identidades gerenciadas para recursos do Azure.

Atribuir uma função de Retransmissão do Azure à identidade gerenciada

Depois de habilitar a identidade gerenciada, atribua uma das funções de Retransmissão do Azure (Proprietário de Retransmissão do Azure, Ouvinte de Retransmissão do Azure ou Remetente de Retransmissão do Azure) à identidade no escopo apropriado. Quando a função do Azure é atribuída a uma identidade gerenciada, a identidade gerenciada recebe acesso às entidades de Retransmissão no escopo apropriado.

A seção a seguir usa um aplicativo simples que é executado sob uma identidade gerenciada em uma instância de VM do Azure e acessa recursos de Retransmissão.

Aplicativo de exemplo em VM acessando entidades de retransmissão

  1. Transfira a aplicação de consola de exemplo Ligações Híbridas para o seu computador a partir do GitHub.

  2. Crie uma VM do Azure. Para este exemplo, use uma imagem do Windows 10.

  3. Habilite a identidade atribuída pelo sistema ou uma identidade atribuída pelo usuário para a VM do Azure. Para obter instruções, consulte Habilitar identidade para uma VM.

  4. Atribua uma das funções de Retransmissão à identidade do serviço gerenciado no escopo desejado (entidade de retransmissão, namespace de retransmissão, grupo de recursos, assinatura). Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.

  5. Crie o aplicativo de console localmente em seu computador local de acordo com as instruções do documento LEIA-ME.

  6. Copie o executável na <pasta local path>\RoleBasedAccessControl\bin\Debug para a VM. Você pode usar o RDP para se conectar à sua VM do Azure. Para obter mais informações, consulte Como se conectar e entrar em uma máquina virtual do Azure executando o Windows.

  7. Execute RoleBasedAccessControl.exe na VM do Azure de acordo com as instruções do documento LEIA-ME.

    Nota

    Siga as mesmas etapas para executar o aplicativo de console para relés WCF.

Código realçado do exemplo

Aqui está o código do exemplo que mostra como usar a autenticação do Microsoft Entra para se conectar ao serviço Azure Relay.

  1. Crie um objeto TokenProvider usando o TokenProvider.CreateManagedIdentityTokenProvider método.

    • Se você estiver usando uma identidade gerenciada atribuída ao sistema:
      TokenProvider.CreateManagedIdentityTokenProvider();
      
    • Se você estiver usando uma identidade gerenciada atribuída pelo usuário, obtenha a ID do Cliente para a identidade atribuída pelo usuário na página Identidade Gerenciada no portal do Azure. Para obter instruções, consulte Listar identidades gerenciadas atribuídas pelo usuário.
      var managedCredential = new ManagedIdentityCredential(clientId);
      tokenProvider = TokenProvider.CreateManagedIdentityTokenProvider(managedCredential);    
      
  2. Crie um objeto HybridConnectionListener ou HybridConnectionClient passando o URI de conexão híbrida e o provedor de token criado na etapa anterior.

    Ouvinte:

    var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);    
    

    Remetente:

    var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);    
    

Exemplos

Próximos passos

Para saber mais sobre o Azure Relay, consulte os seguintes artigos.