Autenticar e autorizar um aplicativo com a ID do Microsoft Entra para acessar entidades do Azure Relay

O Azure Relay suporta a utilização do Microsoft Entra ID para autorizar pedidos a entidades de Retransmissão do Azure (Ligações Híbridas, Retransmissões WCF). Com o Microsoft Entra ID, você pode usar o controle de acesso baseado em função do Azure (Azure RBAC) para conceder permissões a uma entidade de segurança, que pode ser um usuário, grupo ou entidade de serviço de aplicativo. Para saber mais sobre funções e atribuições de função, consulte Noções básicas sobre as diferentes funções.

Nota

Este recurso está geralmente disponível em todas as regiões, exceto no 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.

Autenticar a partir de uma aplicação

Uma das principais vantagens de usar o Microsoft Entra ID com o Azure Relay é que suas credenciais não precisam mais ser armazenadas em seu código. Em vez disso, você pode solicitar um token de acesso OAuth 2.0 da plataforma de identidade da Microsoft. O Microsoft Entra autentica a entidade de segurança (um usuário, um grupo ou entidade de serviço) que executa o aplicativo. Se a autenticação for bem-sucedida, a ID do Microsoft Entra retornará o token de acesso ao aplicativo e o aplicativo poderá usar o token de acesso para autorizar solicitações ao Azure Relay.

As seções a seguir mostram como configurar seu aplicativo de console para autenticação com a plataforma de identidade Microsoft 2.0. Para obter mais informações, consulte Visão geral da plataforma de identidade da Microsoft (v2.0).

Para obter uma visão geral do fluxo de concessão de código OAuth 2.0, consulte Autorizar acesso a aplicativos Web do Microsoft Entra usando o fluxo de concessão de código OAuth 2.0.

Registrar seu aplicativo com um locatário do Microsoft Entra

A primeira etapa para usar a ID do Microsoft Entra para autorizar entidades do Azure Relay é registrar seu aplicativo cliente com um locatário do Microsoft Entra no portal do Azure. Ao registrar seu aplicativo cliente, você fornece informações sobre o aplicativo ao AD. Em seguida, a ID do Microsoft Entra fornece uma ID de cliente (também chamada de ID de aplicativo) que você pode usar para associar seu aplicativo ao tempo de execução do Microsoft Entra.

Para obter instruções passo a passo para registrar seu aplicativo com o Microsoft Entra ID, consulte Guia de início rápido: registrar um aplicativo com o Microsoft Entra ID.

Importante

Anote a ID do diretório (locatário) e a ID do aplicativo (cliente). Você precisará desses valores para executar o aplicativo de exemplo.

Criar um segredo do cliente

A aplicação precisa de um segredo do cliente para provar a respetiva identidade quando pede um token. No mesmo artigo vinculado anteriormente, consulte a seção Adicionar um segredo do cliente para criar um segredo do cliente.

Importante

Anote o Segredo do Cliente. Você precisará dele para executar o aplicativo de exemplo.

Atribuir funções do Azure com o portal do Azure

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

Executar o exemplo

  1. Baixe o exemplo de aplicativo de console do GitHub.

  2. Execute o aplicativo localmente no seu computador de acordo com as instruções do artigo LEIA-ME.

    Nota

    Siga as mesmas etapas para executar o aplicativo de console de exemplo para WCF Relay.

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.CreateAzureActiveDirectoryTokenProvider método.

    Se você ainda não criou um registro de aplicativo, consulte a seção Registrar seu aplicativo com o Microsoft Entra ID para criá-lo e, em seguida, crie um segredo do cliente, conforme mencionado na seção Criar um segredo do cliente.

    Se você quiser usar um registro de aplicativo existente, siga estas instruções para obter a ID do aplicativo (cliente) e a ID do diretório (locatário).

    1. Inicie sessão no portal do Azure.
    2. Procure e selecione Microsoft Entra ID usando a barra de pesquisa na parte superior.
    3. Na página ID do Microsoft Entra , selecione Registros de aplicativos na seção Gerenciar no menu à esquerda.
    4. Selecione o registro do aplicativo.
    5. Na página de registro do aplicativo, você verá os valores para ID do aplicativo (cliente) e ID do diretório (locatário).

    Para obter o segredo do cliente, siga estes passos:

    1. Na página de registro do aplicativo, selecione Certificados & segredos no menu à esquerda.
    2. Use o botão copiar na coluna Valor do segredo na seção Segredos do cliente.
    static TokenProvider GetAadTokenProvider(string clientId, string tenantId, string clientSecret)
    {
        return TokenProvider.CreateAzureActiveDirectoryTokenProvider(
            async (audience, authority, state) =>
            {
                IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
                    .WithAuthority(authority)
                    .WithClientSecret(clientSecret)
                    .Build();
    
                var authResult = await app.AcquireTokenForClient(new [] { $"{audience}/.default" }).ExecuteAsync();
                return authResult.AccessToken;
            },
            $"https://login.microsoftonline.com/{tenantId}");
    }
    
  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 tópicos a seguir.