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

O Barramento de Serviço do Azure dá suporte ao uso da ID do Microsoft Entra para autorizar solicitações 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 do Azure (Azure RBAC) para conceder permissões a uma entidade de segurança, que pode ser um usuário, grupo, entidade de serviço de aplicativo ou uma identidade gerenciada para recursos do Azure. Uma das principais vantagens de usar o Microsoft Entra ID com o Barramento de Serviço do Azure é que você não precisa mais armazenar suas credenciais no código. Em vez disso, você pode 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 e o aplicativo poderá usar o token de acesso para autorizar a solicitação de recursos do Service Bus.

Importante

Você pode desabilitar a autenticação de chave local ou SAS para um namespace do Service Bus e permitir apenas a autenticação do Microsoft Entra. Para obter instruções passo a passo, consulte Desativar a autenticação local.

Descrição geral

Quando uma entidade de segurança (um usuário, grupo ou aplicativo) tenta acessar uma entidade do Service Bus, 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 ao serviço Service Bus para autorizar o acesso ao recurso especificado.

A etapa de autenticação requer que uma solicitação de aplicativo contenha um token de acesso OAuth 2.0 em tempo de execução. Se um aplicativo estiver sendo executado em uma entidade do Azure, como uma VM do Azure, um Conjunto de Escala de Máquina Virtual ou um aplicativo do Azure Function, ele poderá usar uma identidade gerenciada para acessar os recursos. Para saber como autenticar solicitações feitas por uma identidade gerenciada para o serviço do Service Bus, consulte Autenticar o acesso aos recursos do Barramento de Serviço do Azure com a ID do Microsoft Entra e 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 de segurança terá nos recursos do Service Bus. Para saber mais sobre como atribuir funções do Azure ao Barramento de Serviço do Azure, consulte Funções internas do Azure para o Barramento de Serviço do Azure.

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

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 Azure RBAC. O Barramento de Serviço do Azure define um conjunto de funções internas do Azure que englobam 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 concede acesso a esses recursos para essa entidade de segurança. O acesso pode ter como escopo o nível de assinatura, o grupo de recursos ou o namespace do Service Bus. 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 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 para autorizar o acesso a um namespace do Service Bus:

Â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 Service Bus, começando com o escopo mais restrito:

  • Fila, tópico ou assinatura: a atribuição de função se aplica à entidade específica do Service Bus. Atualmente, o portal do Azure não oferece suporte à atribuição de usuários/grupos/identidades gerenciadas a funções do Service Bus Azure no nível de assinatura.
  • Namespace do Barramento de Serviço: a atribuição de função abrange toda a topologia do Barramento de Serviço sob o namespace e para o grupo de consumidores associado a ele.
  • Grupo de recursos: a atribuição de função aplica-se a todos os recursos do Service Bus no grupo de recursos.
  • Assinatura: a atribuição de função aplica-se a todos os recursos do Service Bus 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 Service Bus é 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, uma entidade de serviço ou uma identidade gerenciada para recursos do Azure) 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 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 Microsoft 2.0. Para obter mais informações sobre a plataforma de identidade da Microsoft 2.0, 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 Service Bus é 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 saber mais sobre a ID do cliente, consulte Objetos principais de aplicativo e serviço na ID do Microsoft Entra.

Siga as etapas no Guia de início rápido: registrar um aplicativo na plataforma de identidade da Microsoft para registrar seu aplicativo com o Microsoft Entra ID.

Nota

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 especifica a URL para a qual os tokens são fornecidos.

Depois de registrar seu aplicativo, você verá o ID do aplicativo (cliente) e o ID do diretório (locatário) em Configurações:

Importante

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

Screenshot showing the App registration page showing the Application ID and Tenant ID.

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

Criar um segredo do cliente

A aplicação precisa de um segredo do cliente para provar a respetiva identidade quando pede um token. Para adicionar o segredo do cliente, siga estas etapas.

  1. Navegue até o registro do seu aplicativo no portal do Azure se ainda não estiver na página.

  2. Selecione Certificados & segredos no menu à esquerda.

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

    Screenshot showing the Certificates and secrets page with New client secret button selected.

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

    Screenshot showing the Add a client secret page.

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

    Screenshot showing the Client secrets section with the secret you added.

Permissões para a API do Service Bus

Se seu aplicativo for um aplicativo de console, você deverá registrar um aplicativo nativo e adicionar permissões de API para Microsoft.ServiceBus ao conjunto de permissões necessárias. Os aplicativos nativos também precisam de um redirect-uri no Microsoft Entra ID, 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 código de exemplo já usa esse URI.

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

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

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

Autenticando o cliente do Service Bus

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

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

Usando a biblioteca mais recente do Azure.Messaging.ServiceBus, 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, consulte os exemplos RoleBasedAccessControl no repositório de exemplos azure-service-bus.

Próximos passos

Para mais informações sobre mensagens do Service Bus, consulte os seguintes tópicos.