Autentique e autorize um aplicativo com Microsoft Entra ID para acessar entidades do Azure Service Bus

O Barramento de Serviço do Azure dá suporte à utilização do Microsoft Entra ID para autorizar pedidos a entidades do Barramento de Serviço (filas, tópicos, assinaturas ou filtros). Com o Microsoft Entra ID, você pode usar o controle de acesso baseado em função (Azure RBAC) do Azure para conceder permissões a um principal de segurança. A entidade de segurança pode ser um usuário, um grupo, um principal de serviço de aplicativo ou uma identidade gerenciada para recursos do Azure.

Uma das principais vantagens de utilizar o Microsoft Entra ID com o Barramento de Serviço do Azure é que você não precisa mais armazenar as credenciais no código. Em vez disso, é possível solicitar um token de acesso OAuth 2.0 da plataforma de identidade da Microsoft. Se a autenticação for bem-sucedida, a ID do Microsoft Entra retornará um token de acesso ao aplicativo. Em seguida, o aplicativo pode usar o token de acesso para autorizar solicitações aos recursos do Service Bus.

Você pode desativar a autenticação por chave SAS (Signature Access) local ou compartilhada para um namespace do Barramento de Serviço e permitir apenas a autenticação do Microsoft Entra. Para obter instruções passo a passo, confira Desabilitar a autenticação local.

Visão geral

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

  1. A identidade da entidade de segurança é autenticada e um token OAuth 2.0 é retornado. O nome do recurso para solicitar um token é https://servicebus.azure.net.
  2. O token é enviado como parte de uma solicitação ao serviço Barramento de Serviço para autorizar o acesso ao recurso especificado.

A etapa de autenticação requer que uma solicitação do aplicativo contenha um token de acesso OAuth 2.0 no runtime. Se um aplicativo estiver em execução em uma entidade do Azure, como uma máquina virtual do Azure, um conjunto de dimensionamento de máquinas virtuais ou um aplicativo de funções, ele poderá usar uma identidade gerenciada para acessar os recursos. Para saber como autenticar solicitações que uma identidade gerenciada faz no serviço do Barramento de Serviço, consulte Usar identidades gerenciadas com o Barramento de Serviço do Azure.

A etapa de autorização requer a atribuição de uma ou mais funções do Azure à entidade de segurança. O Service Bus fornece funções do Azure que abrangem conjuntos de permissões para recursos do Service Bus. As funções atribuídas a um principal de segurança determinam as permissões que o principal possui nos recursos do Service Bus. Para saber mais sobre como atribuir funções do Azure ao Azure Service Bus, consulte as funções internas do Azure para o Azure Service Bus.

Os aplicativos nativos e os aplicativos web que fazem solicitações ao Service Bus podem também autorizar com o Microsoft Entra ID. Este artigo mostra como solicitar um token de acesso e usá-lo para autorizar solicitações para recursos do Barramento de Serviço.

Funções internas do Azure para o Barramento de Serviço do Azure

O Microsoft Entra autoriza direitos de acesso a recursos protegidos por meio do RBAC do Azure. O Barramento de Serviço do Azure define um conjunto de funções internas do Azure que abrangem conjuntos comuns de permissões usados para acessar entidades do Serviço de Barramento. Você também pode definir funções personalizadas para acessar os dados.

Quando uma função do Azure é atribuída a uma entidade de segurança do Microsoft Entra, o Azure permite que essa entidade de segurança tenha acesso a esses recursos. O acesso pode ter como escopo o nível de assinatura, grupo de recursos, namespace do Service Bus ou entidade (fila, tópico ou assinatura). Uma entidade de segurança do Microsoft Entra pode ser um usuário, um grupo, uma entidade de serviço de aplicativo ou uma identidade gerenciada para recursos do Azure.

Para o Azure Service Bus, o modelo RBAC do Azure ajuda a proteger o gerenciamento de namespaces e de todos os recursos relacionados, por meio do portal do Azure e da API de gerenciamento de recursos do Azure. O Azure fornece as seguintes funções internas para autorizar o acesso a um namespace do Service Bus:

Escopo do recurso

Antes de atribuir uma função do Azure a uma entidade de segurança, determine o escopo do acesso que essa entidade de segurança deve ter. De acordo com as melhores práticas, sempre é melhor conceder o escopo mais estreito possível.

A lista a seguir descreve os níveis de escopo de acesso que você pode definir para os recursos de Barramento de Serviço, começando pelo escopo mais estreito:

  • Fila, tópico ou assinatura: a atribuição de funções se aplica à entidade específica do Barramento de Serviço. Atualmente, o Portal do Azure não oferece suporte à atribuição de usuários, grupos ou identidades gerenciadas a funções do Barramento de Serviço do Azure no nível da assinatura do tópico.

  • Namespace do Barramento de Serviço: a atribuição de funções abrange toda a topologia do Service Bus sob o namespace e se estende até a assinatura da fila ou do tópico associada a ele.

  • Grupo de recursos: a atribuição de função se aplica a todos os recursos do Barramento de Serviço no grupo de recursos.

  • Assinatura do Azure: a atribuição de função se aplica a todos os recursos do Service Bus em todos os grupos de recursos na assinatura.

Tenha em mente que as atribuições de função do Azure podem levar até cinco minutos para serem propagadas.

Para obter mais informações sobre como as funções internas são definidas, consulte Noções básicas sobre definições de função do Azure. Para obter informações sobre como criar funções personalizadas do Azure, confira Funções personalizadas do Azure.

Autenticação em um aplicativo

Uma das principais vantagens de utilizar o Microsoft Entra ID com o Barramento de Serviço é que as credenciais não precisam ser mais armazenadas no código. Em vez disso, é possível 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, uma entidade de serviço ou uma identidade gerenciada para recursos do Azure) que está executando o aplicativo. Se a autenticação for bem-sucedida, a ID do Microsoft Entra retornará o token de acesso ao aplicativo. Em seguida, o aplicativo pode usar o token de acesso para autorizar solicitações ao Barramento de Serviço.

As seções a seguir mostram como configurar seu aplicativo nativo ou aplicativo Web para autenticação com a plataforma de identidade da Microsoft 2.0. Para obter mais informações sobre a plataforma, consulte O que é a plataforma de identidade da Microsoft?.

Para obter uma visão geral do fluxo de concessão de código do OAuth 2.0, consulte a plataforma de identidade da Microsoft e o fluxo de código de autorização do OAuth 2.0.

Registre seu aplicativo com um locatário do Microsoft Entra

A primeira etapa para usar o Microsoft Entra ID e autorizar as entidades do Service Bus é registrar o aplicativo cliente com um locatário do Microsoft Entra ID no portal do Azure. Ao registrar seu aplicativo cliente, você fornece informações sobre o aplicativo para o Active Directory. A ID do Microsoft Entra fornece uma ID do cliente (também chamada de ID do aplicativo) que você pode usar para associar seu aplicativo ao runtime do Microsoft Entra. Para saber mais sobre a ID do cliente, consulte Objetos de entidade de serviço e aplicativo no Microsoft Entra ID.

Para registrar seu aplicativo com a ID do Microsoft Entra, siga as etapas em Registrar um aplicativo na ID do Microsoft Entra.

Observação

Se você registrar seu aplicativo como um aplicativo nativo, poderá especificar qualquer URI válido para o URI de redirecionamento. Para aplicativos nativos, esse valor não precisa ser uma URL real. Para aplicativos Web, o URI de redirecionamento deve ser um URI válido, pois ele especifica a URL para a qual os tokens são fornecidos.

Depois de registrar seu aplicativo, a ID do aplicativo (cliente) e a ID do diretório (locatário) aparecem em Configurações. Anote esses valores. Você precisará deles para executar o aplicativo.

Captura de tela que mostra uma ID do aplicativo e uma ID de locatário no painel para registro do aplicativo.

Criar um segredo do cliente

O aplicativo precisa de um segredo do cliente para provar sua identidade ao solicitar um token. Para adicionar o segredo do cliente, siga estas etapas:

  1. No portal do Azure, acesse o registro do aplicativo se você ainda não estiver na página.

  2. No menu à esquerda, selecione Certificados &segredos.

  3. Em Segredos do cliente, selecione Novo segredo do cliente para criar um novo segredo.

    Captura de tela que mostra o botão para criar um segredo do cliente no painel para certificados e segredos.

  4. Forneça uma descrição para o segredo, escolha o intervalo de expiração e selecione Adicionar.

    Captura de tela que mostra o painel para adicionar um segredo do cliente.

  5. Copie imediatamente o valor do novo segredo para um local seguro. O valor completo aparece apenas uma vez.

    Captura de tela que mostra a área de segredos do cliente, juntamente com o botão para copiar um segredo.

Adicionar permissões para a API do Barramento de Serviço

Se o seu aplicativo for um aplicativo de console, você deverá registrar um aplicativo nativo e adicionar permissões de API para Microsoft.ServiceBus, fazendo parte do conjunto de permissões necessárias.

Os aplicativos nativos também precisam de um URI de redirecionamento na ID do Microsoft Entra, que serve como um identificador. O URI não precisa ser um destino de rede. Use https://servicebus.microsoft.com para este exemplo, porque o exemplo de código já usa esse URI.

Atribuição de funções do Azure por meio do portal do Azure

Atribua uma das funções do Barramento de Serviço à entidade de serviço do aplicativo no escopo desejado (entidade, namespace do Barramento de Serviço, grupo de recursos ou assinatura do Azure). Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.

Depois de definir a função e seu escopo, você pode testar esse comportamento com o exemplo no GitHub.

Autenticação do cliente do Barramento de Serviço

Depois de registrar seu aplicativo e conceder a ele permissões para enviar/receber dados no Barramento de Serviço do Azure, você pode autenticar seu cliente usando a credencial de segredo do cliente. Essa autenticação permite que você faça solicitações ao Barramento de Serviço do Azure.

Para obter uma lista de cenários para os quais há suporte para a aquisição de tokens, consulte a seção Cenários da MSAL (Biblioteca de Autenticação da Microsoft) para o repositório GitHub do .NET.

Usando a biblioteca mais recente do Azure.Messaging.ServiceBus , você pode autenticar o ServiceBusClient com ClientSecretCredential, que é definido na biblioteca Azure.Identity .

TokenCredential credential = new ClientSecretCredential("<tenant_id>", "<client_id>", "<client_secret>");
var client = new ServiceBusClient("<fully_qualified_namespace>", credential);

Se você estiver usando os pacotes .NET mais antigos, consulte os exemplos de RBAC do Azure para o Barramento de Serviço no GitHub.