Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As identidades gerenciadas para recursos Azure permitem que seu aplicativo se autentique no Barramento de Serviço do Azure sem armazenar credenciais em seu código. Azure gerencia automaticamente a identidade e suas credenciais para você.
Armazenar credenciais no código cria riscos de segurança e sobrecarga de manutenção. As identidades gerenciadas eliminam essas preocupações fornecendo gerenciamento automático de credenciais por meio de Microsoft Entra ID.
Este artigo mostra como configurar a autenticação de identidade gerenciada para Barramento de Serviço para que seu aplicativo possa enviar e receber mensagens com segurança sem credenciais codificadas.
Pré-requisitos
Para usar identidades gerenciadas com Barramento de Serviço do Azure, você precisa:
Uma assinatura do Azure. Se você não tiver uma, crie uma conta gratuita antes de começar.
Um namespace do Barramento de Serviço do Azure. Para criar um, consulte Criar um namespace do Barramento de Serviço.
Uma identidade gerenciada habilitada no recurso de computação do Azure. See:
Você pode desabilitar a autenticação com chave de assinatura de acesso compartilhado (SAS), seja ela local ou compartilhada, para um namespace do Azure 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.
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 Barramento de Serviço do Azure oferece funções integradas do Azure que abrangem conjuntos comuns de permissões para acessar entidades do Barramento de Serviço. 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 Barramento de Serviço namespace e suas entidades (tópicos, assinaturas, filas e filtros) |
| Remetente de dados do Barramento de Serviço do Azure | Capacidade de enviar mensagens para filas e tópicos do Barramento de Serviço |
| Receptor de Dados do Barramento de Serviço do Azure | Capacidade de receber mensagens de filas e assinaturas do Barramento de Serviço |
Entenda os níveis de escopo do RBAC do Barramento de Serviço
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 Barramento de Serviço, iniciando pelo escopo mais restrito:
- Fila, tópico ou assinatura de tópico: a atribuição de funções se aplica apenas a essa entidade de mensagens 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 Barramento de Serviço dentro do grupo de recursos.
- Assinatura do Azure: 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 do Azure.
As atribuições de função do Azure podem levar até cinco minutos para serem propagadas.
Atribuir uma função a uma identidade gerenciada no portal do Azure
Acesse o namespace, a fila ou o tópico do Barramento de Serviço.
No menu à esquerda, selecione Controle de acesso (IAM).
Selecione Adicionar>Adicionar atribuição de função.
Na guia Função, selecione a função de dados apropriada para o Barramento de Serviço.
Na guia Membros, selecione Identidade gerenciada>Selecionar membros.
Selecione a identidade gerenciada para o recurso do Azure.
Selecione Examinar + atribuir.
Para obter mais informações, consulte Atribuir funções do Azure usando o portal do Azure.
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 Barramento de Serviço 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, 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.
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.) Esse comportamento é 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.
Conecte-se ao Barramento de Serviço usando uma 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 Barramento de Serviço. 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 uma credencial de token (TokenCredential).
DefaultAzureCredential deriva de TokenCredential, que usa automaticamente a identidade gerenciada configurada para o aplicativo. A credencial de token gerencia automaticamente o fluxo do contexto da identidade gerenciada para o Barramento de Serviço e o processo de autorização. É um modelo mais simples do que usar uma SAS.
var client = new ServiceBusClient("contoso.servicebus.windows.net", new DefaultAzureCredential());
Envie e receba mensagens normalmente usando 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 contêm 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 do Azure, nas máquinas virtuais do Azure e nos conjuntos de dimensionamento. Para aplicativos .NET, a biblioteca Microsoft.Azure.Services.AppAuthentication (usada pelo pacote NuGet Barramento de Serviço) fornece uma abstração sobre esse protocolo e dá suporte ao desenvolvimento local. Você pode testar seu código localmente usando sua conta de usuário de Visual Studio, o CLI do Azure ou Microsoft Entra autenticação integrada. Para obter mais informações, consulte App Authentication client library for .NET.