Autenticar e autorizar um aplicativo com o Microsoft Entra ID para acessar entidades do Barramento de Serviço do Azure

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 (RBAC) do Azure para conceder permissões a uma entidade de segurança, que pode ser um usuário, um grupo, uma entidade 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, o Microsoft Entra ID retornará um token de acesso ao aplicativo, e, o aplicativo poderá utilizar o token de acesso para autorizar a solicitação aos recursos do Barramento de Serviço.

Importante

Você pode desabilitar a autenticação de chave local ou de SAS 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 uma entidade de segurança (um usuário, grupo ou aplicativo) tenta acessar a entidade de Barramento de Serviç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://servicebus.azure.net.
  2. Em seguida, o token é passado como parte de uma solicitação para o serviço do 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 VM do Azure, um Conjunto de dimensionamento de máquinas virtuais ou um aplicativo de funções do Azure, ele poderá usar uma identidade gerenciada para acessar os recursos. Para saber como autenticar as solicitações feitas por uma identidade gerenciada para o serviço de Barramento de Serviço, consulte Autenticar o acesso aos recursos do Barramento de Serviço do Azure com o Microsoft Entra ID e as identidades gerenciadas para recursos do Azure.

A etapa de autorização requer que uma ou mais funções do Azure sejam atribuídas à entidade de segurança. O Barramento de Serviço do Azure fornece funções do Azure que abrangem conjuntos de permissões para recursos do Barramento de Serviço. As funções atribuídas a uma entidade de segurança determinam as permissões que a entidade terá nos recursos do Barramento de Serviço. Para saber mais sobre como atribuir funções do Azure ao Barramento de Serviço do Azure, confira Funções internas do Azure para o Barramento de Serviço do Azure.

Os aplicativos nativos e os aplicativos Web que fazem as solicitações ao Barramento de Serviço também poderão 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 usadas para acessar entidades do Barramento de Serviço, e 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 ser limitado ao nível de assinatura, ao grupo de recursos, ao 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 Barramento de Serviço do Azure, 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 já está protegido pelo modelo RBAC do Azure. O Azure fornece as funções internas do Azure a seguir para autorizar o acesso a um namespace do Barramento de Serviço:

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ção se aplica à entidade de Barramento de Serviço específica. Atualmente, o portal do Azure não oferece suporte à atribuição de usuários/grupos/identidades gerenciadas às funções do Service Bus do Azure no nível de assinatura do tópico.

  • Namespace do Service Bus: a atribuição de funções abrange toda a topologia do Service Bus sob o namespace e para a fila ou assinatura de 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.

Observação

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, confira Compreender as definições de função. Para obter informações sobre como criar funções personalizadas do Azure, confira Funções personalizadas do Azure.

Autenticar a partir de 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, o Microsoft Entra ID retornará o token de acesso ao aplicativo, e, o aplicativo poderá utilizar o token de acesso para autorizar as solicitações ao Barramento de Serviço do Azure.

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 de identidade 2.0 da Microsoft, confira Visão geral da plataforma de identidade (v2.0) da Microsoft.

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

Registrar seu aplicativo em um locatário do Microsoft Entra

A primeira etapa para usar o Microsoft Entra ID e autorizar as entidades do Barramento de Serviço é registrar o aplicativo cliente com um locatário do Microsoft Entra no portal do Azure. Ao registrar o aplicativo cliente, você fornece informações sobre ele ao AD. Em seguida, o Microsoft Entra ID fornecerá uma ID do cliente (também chamada de ID do aplicativo) que você poderá usar para associar seu aplicativo ao runtime do Microsoft Entra. Para saber mais sobre a ID do cliente, confira Objetos de entidade de serviço e aplicativo no Microsoft Entra ID.

Siga as etapas no Início Rápido: registrar um aplicativo com a plataforma de identidade da Microsoft para registrar seu aplicativo com o Microsoft Entra ID.

Observação

Se você registrar o aplicativo como um aplicativo nativo, poderá especificar qualquer URI válido para 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 o aplicativo, você verá a ID do aplicativo (cliente) e Diretório (locatário) em Configurações:

Importante

Anote o TenantId e o ApplicationId. Você precisará desses valores para executar o aplicativo.

Captura de tela mostrando a página Registro de aplicativo mostrando a ID do Aplicativo e a ID do Locatário.

Para obter mais informações sobre como registrar um aplicativo com o Microsoft Entra ID, consulte Integrar aplicativos com Microsoft Entra ID..

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. Navegue até o registro do aplicativo no portal do Azure se você ainda não estiver na página.

  2. Selecione Certificados e segredos no menu à esquerda.

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

    Captura de tela mostrando a página Certificados e segredos com o botão Novo segredo do cliente selecionado.

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

    Captura de tela mostrando a página Adicionar segredo do cliente.

  5. Copie imediatamente o valor do novo segredo para um local seguro. O valor de preenchimento é exibido apenas uma vez.

    Captura de tela mostrando a seção Segredos do cliente com o segredo que você adicionou.

Permissões para a API do Barramento de Serviço

Se o seu aplicativo de exemplo é um aplicativo de console, você deve registrar um aplicativo nativo e adicionar as permissões de API para Microsoft.ServiceBus ao conjunto de permissões necessárias. Os aplicativos nativos também precisam de um URI de redirecionamento no Microsoft Entra ID que funcione como 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.

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

Atribua uma das funções do Service Bus à entidade de serviço do aplicativo no escopo desejado (entidade, namespace do Service Bus, grupo de recursos, 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 a amostra no GitHub.

Autenticar o cliente do Barramento de Serviço

Depois de registrar seu aplicativo e conceder permissões para ele enviar/receber dados no Barramento de Serviço do Azure, você pode autenticar o cliente com a credencial de segredo do cliente, o que o habilitará a fazer solicitações no Barramento de Serviço do Azure.

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

Usando a biblioteca Azure.Messaging.ServiceBus mais recente, você pode autenticar o ServiceBusClient com um 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, veja as amostras RoleBasedAccessControl no repositório de amostras azure-service-bus.

Próximas etapas

Para saber mais sobre as mensagens do Barramento de Serviço, confira os tópicos a seguir.