Partilhar via


Como usar identidades geridas com o Azure Service Bus

As identidades geridas para os recursos do Azure proporcionam aos recursos do Azure uma identidade gerida automaticamente no Microsoft Entra ID. Pode usar esta identidade para autenticar no Azure Service Bus sem armazenar credenciais no seu código.

Este artigo explica-o como ativar uma identidade gerida, atribuir o papel apropriado no Service Bus e ligar-se ao Service Bus a partir do seu código de aplicação.

Nota

Se não estiver familiarizado com identidades geridas, veja Identidades geridas para recursos Azure.

Pré-requisitos

Para usar identidades geridas com o Azure Service Bus, precisa de:

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.

Atribuir uma função de Service Bus à identidade gerida

O Microsoft Entra autoriza o acesso a recursos protegidos por meio do RBAC (controle de acesso baseado em função) do Azure. O Azure Service Bus fornece funções incorporadas no Azure que abrangem conjuntos comuns de permissões usadas para aceder a entidades do Service Bus. Também podes definir funções personalizadas.

A tabela seguinte lista os papéis incorporados no Azure para autorizar o acesso a um namespace de Service Bus:

Função Descrição
Proprietário de Dados do Barramento de Serviço do Azure Acesso total ao espaço de nomes do Service Bus e suas entidades (filas, tópicos, subscrições e filtros)
Remetente de dados do Azure Service Bus Enviar mensagens para filas e tópicos do Service Bus
Azure Service Bus Data Receiver Receber mensagens de filas e assinaturas do Service Bus

Assigne um papel no portal Azure

Para atribuir um papel a uma identidade gerida no portal Azure:

  1. Vá para o seu namespace, fila ou tópico do Service Bus.
  2. Selecione Controlo de acesso (IAM) no menu da esquerda.
  3. Selecione Adicionar>Adicionar atribuição de função.
  4. No separador Função, selecione a função de dados apropriada do Service Bus.
  5. No separador de Membros , selecione Identidade Gerida e depois selecione Selecionar membros.
  6. Selecione a identidade gerida para o seu recurso Azure.
  7. Selecione Verificar + atribuir.

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

Escolha o âmbito do recurso

Antes de atribuir um papel Azure, determine o âmbito de acesso que a identidade gerida precisa. Conceda apenas o âmbito mais estreito 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.

  • Namespace do Service Bus: A atribuição de função abrange toda a topologia do Service Bus sob o namespace.

  • 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

    As atribuições de funções no Azure podem demorar até cinco minutos a propagar.

Atribuir um papel usando Azure CLI

O portal Azure não suporta atribuir identidades geridas a funções de Service Bus ao nível da subscrição de tópicos. Use o comando Azure CLI az role assignment create para atribuir um papel 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, 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.

Nota

Se o serviço ou a aplicação de origem não reiniciar depois de remover a sua identidade gerida do papel de RBAC do Service Bus, a aplicação de origem pode continuar a enviar ou receber mensagens para ou da entidade do Service Bus até que o token expire (a validade padrão do token é de 24 horas). Este comportamento é intencional.

Depois de remover a identidade gerida da fonte da função RBAC, reinicie a aplicação ou serviço de origem para que o token expire imediatamente e impeça este de enviar ou receber mensagens da entidade do Service Bus.

Liga-te ao Service Bus usando identidade gerida nos SDKs do Azure

Os SDKs Azure para .NET, Java, JavaScript e Python suportam autenticação de identidade gerida com Service Bus. O exemplo seguinte mostra como se ligar usando o SDK .NET.

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

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

Você envia e recebe mensagens como de costume usando ServiceBusSender e ServiceBusReceiver ou ServiceBusProcessor.

Para instruções passo a passo para enviar e receber mensagens usando uma identidade gerida, consulte os seguintes guias rápidos. Esses inícios rápidos 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.

Nota

As identidades geridas funcionam apenas dentro do ambiente Azure, em App Service, VMs Azure e conjuntos de escala. Para aplicações .NET, a biblioteca Microsoft.Azure.Services.AppAuthentication, que o pacote Service Bus NuGet utiliza, fornece uma abstração sobre este protocolo e suporta uma experiência de desenvolvimento local. Esta biblioteca também lhe permite testar o seu código localmente na sua máquina de desenvolvimento, usando a sua conta de utilizador do Visual Studio, Azure CLI ou Microsoft Entra Integrated Authentication. Para obter mais informações sobre opções de desenvolvimento local com esta biblioteca, consulte Autenticação de serviço a serviço no Cofre de Chaves do Azure usando .NET.

Próximos passos