Compartilhar via


Como usar identidades gerenciadas com o Azure Service Bus

As identidades gerenciadas dos recursos do Azure fornecem aos serviços do Azure uma identidade gerenciada automaticamente na ID do Microsoft Entra. Você pode usar essa identidade para autenticar no Barramento de Serviço do Azure sem armazenar credenciais em seu código.

Este artigo orienta você sobre como habilitar uma identidade gerenciada, atribuir a função adequada do Service Bus e conectar-se ao Service Bus a partir do código do aplicativo.

Observação

Se você não estiver familiarizado com identidades gerenciadas, consulte identidades gerenciadas para recursos do Azure.

Pré-requisitos

Para usar identidades gerenciadas com Azure Service Bus, você precisa:

Importante

Desabilite a autenticação local ou de chave SAS de um namespace do Barramento de Serviço e permita apenas a autenticação do Microsoft Entra. Para obter instruções passo a passo, confira Desabilitar a autenticação local.

Atribuir uma função do Barramento de Serviço à identidade gerenciada

O Microsoft Entra autoriza o acesso aos recursos protegidos por meio do RBAC (controle de acesso baseado em função) do Azure. O Service Bus do Azure fornece funções internas do Azure que abrangem conjuntos comuns de permissões usadas para acessar entidades do Service Bus. Você também pode definir funções personalizadas.

A tabela a seguir lista as funções integradas do Azure para autorizar o acesso a um namespace do Barramento de Serviço:

Função Descrição
Proprietário de dados do Barramento de Serviço do Azure Acesso completo ao Service Bus namespace e suas entidades (tópicos, assinaturas, filas e filtros)
Remetente de dados do Azure Service Bus Enviar mensagens para filas e tópicos do Barramento de Serviço
Receptor de Dados do Azure Service Bus Receber mensagens de filas e assinaturas do Service Bus

Atribuir uma função no portal do Azure

Para atribuir uma função a uma identidade gerenciada no portal do Azure:

  1. Acesse o namespace, a fila ou o tópico do Barramento de Serviço.
  2. Selecione Controle de acesso (IAM) no menu à esquerda.
  3. Selecione Adicionar>Adicionar atribuição de função.
  4. Na guia Função, selecione a função de dados apropriada para o Barramento de Serviço.
  5. Na guia Membros , selecione Identidade gerenciada e selecione Selecionar membros.
  6. Selecione a identidade gerenciada para o recurso do Azure.
  7. Selecione Examinar + atribuir.

Para obter mais informações, consulte Atribuir funções do Azure usando o portal do Azure.

Escolher o escopo do recurso

Antes de atribuir uma função do Azure, determine o escopo de acesso que a identidade gerenciada precisa. Conceda apenas o escopo mais estreito possível.

A lista a seguir descreve os níveis de escopo nos quais você pode definir acesso aos recursos do Service Bus, iniciando pelo escopo mais restrito:

  • Fila, tópico ou assinatura: a atribuição de função se aplica à entidade de Barramento de Serviço específica.

  • Namespace do Barramento de Serviço: a atribuição de função abrange toda a topologia do Barramento de Serviço no namespace.

  • Grupo de recursos: a atribuição de função se aplica a todos os recursos do Service Bus dentro do grupo de recursos.

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

    Observação

    As atribuições de função do Azure podem levar até cinco minutos para serem propagadas.

Atribuir uma função usando a CLI do Azure

O portal do Azure não dá suporte à atribuição de identidades gerenciadas a funções do Service Bus no nível da assinatura do tópico. Use o comando az role assignment create da CLI do Azure para atribuir uma função em qualquer escopo:

az role assignment create \
    --role $service_bus_role \
    --assignee $assignee_id \
    --scope /subscriptions/$subscription_id/resourceGroups/$resource_group/providers/Microsoft.ServiceBus/namespaces/$service_bus_namespace/topics/$service_bus_topic/subscriptions/$service_bus_subscription

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.

Observação

Se o serviço ou aplicativo de origem não for reiniciado depois que você remover sua identidade gerenciada da função RBAC do Barramento de Serviço, o aplicativo de origem poderá continuar enviando ou recebendo mensagens para ou da entidade do Barramento de Serviço até que o token expire (a validade do token padrão é de 24 horas). Este comportamento ocorre por design.

Depois de remover a identidade gerenciada da origem da função RBAC, reinicie o aplicativo ou serviço de origem para expirar imediatamente o token e impedir que ele envie ou receba mensagens da entidade do Barramento de Serviço.

Conectar-se ao Barramento de Serviço usando a identidade gerenciada nos SDKs do Azure

Os SDKs da Azure para .NET, Java, JavaScript e Python dão suporte à autenticação de identidade gerenciada com o Service Bus. O exemplo a seguir mostra como se conectar usando o SDK do .NET.

No .NET, o objeto ServiceBusClient é inicializado usando um construtor que usa um namespace totalmente qualificado e um TokenCredential. O DefaultAzureCredential deriva de TokenCredential, que usa automaticamente a identidade gerenciada configurada para o aplicativo. O fluxo do contexto de identidade gerenciada para o Barramento de Serviço e o handshake de autorização são manipulados automaticamente pela credencial de token. É um modelo mais simples que usar SAS.

var client = new ServiceBusClient("contoso.servicebus.windows.net", new DefaultAzureCredential());

Você envia e recebe mensagens normalmente por meio de ServiceBusSender e ServiceBusReceiver ou ServiceBusProcessor.

Para obter instruções passo a passo para enviar e receber mensagens usando uma identidade gerenciada, consulte os guias de início rápido a seguir. Esses guias de início rápido têm o código para usar uma entidade de serviço para enviar e receber mensagens, mas o código é o mesmo para usar uma identidade gerenciada.

Observação

As identidades gerenciadas funcionam somente dentro do ambiente do Azure, no Serviço de Aplicativo, nas VMs do Azure e nos conjuntos de dimensionamento. Para aplicativos .NET, a biblioteca Microsoft.Azure.Services.AppAuthentication, que o pacote NuGet do Barramento de Serviço usa, fornece uma abstração sobre esse protocolo e dá suporte a uma experiência de desenvolvimento local. Essa biblioteca também permite testar seu código localmente em seu computador de desenvolvimento, usando sua conta de usuário do Visual Studio, da CLI do Azure ou da Autenticação Integrada do Microsoft Entra. Para obter mais informações sobre as opções de desenvolvimento local com essa biblioteca, consulte Autenticação de serviço a serviço para o Azure Key Vault usando .NET.

Próximas etapas