Compartilhar via


Autenticação e autorização com o Microsoft Entra ID

Este artigo descreve como autenticar os clientes de publicação da Grade de Eventos do Azure usando o Microsoft Entra ID.

Visão geral

A plataforma de identidade da Microsoft fornece autenticação e gerenciamento de controle de acesso integrados para recursos e aplicativos que usam o Microsoft Entra ID como provedor de identidade. Use a plataforma de identidade da Microsoft para dar suporte a autenticação e autorização nos seus aplicativos. Ela é baseada em padrões abertos, como OAuth 2.0 e OpenID Connect, e oferece ferramentas e bibliotecas open-source que dão suporte a vários cenários de autenticação. Ela fornece recursos avançados, como o Acesso condicional, que permite definir políticas que exigem autenticação multifator ou permitir o acesso de locais específicos, por exemplo.

Uma vantagem que aprimora sua postura de segurança durante o uso do Microsoft Entra ID é que você não precisa armazenar credenciais, como chaves de autenticação, no código ou nos repositórios. Em vez disso, você usa a aquisição de tokens de acesso OAuth 2.0 da plataforma de identidade da Microsoft que o seu aplicativo apresenta ao se autenticar em um recurso protegido. Registre o aplicativo de publicação de eventos no Microsoft Entra ID e obtenha uma entidade de serviço associada ao aplicativo que você pode gerenciar e usar. Use Identidades Gerenciadas, atribuídas pelo sistema ou atribuídas pelo usuário, para um modelo de gerenciamento de identidade ainda mais simples, já que alguns aspectos do ciclo de vida da identidade são gerenciados em seu nome.

O RBAC (controle de acesso baseado em função) permite que você configure a autorização de forma que determinadas entidades de segurança (identidades para usuários, grupos ou aplicativos) tenham permissões específicas para executar operações nos recursos do Azure. Dessa forma, a entidade de segurança usada por um aplicativo cliente que envia eventos para a Grade de Eventos precisa ter a função RBAC Remetente de Dados EventGrid associada a ela.

Objetos de segurança

Há duas categorias amplas de entidades de segurança que são aplicáveis à discussão sobre a autenticação de um cliente de publicação da Grade de Eventos:

  • Identidades gerenciadas. Uma identidade gerenciada pode ser atribuída pelo sistema, que você habilita em um recurso do Azure e está associada apenas a esse recurso, ou atribuída pelo usuário, que você cria e nomeia explicitamente. As identidades gerenciadas atribuídas pelo usuário podem ser associadas a mais de um recurso.
  • Entidade de segurança do aplicativo. É um tipo de entidade de segurança que representa um aplicativo, que acessa recursos protegidos pelo Microsoft Entra ID.

Independentemente da entidade de segurança usada, seja uma identidade gerenciada, seja uma entidade de segurança de aplicativo, o cliente usa essa identidade para se autenticar no Microsoft Entra ID e obter um token de acesso OAuth 2.0 que é enviado com as solicitações durante o envio de eventos à Grade de Eventos. Esse token é assinado criptograficamente e, uma vez que a Grade de Eventos o recebe, ele é validado. Por exemplo, o público (o destinatário pretendido do token) é confirmado como a Grade de Eventos (https://eventgrid.azure.net), entre outros. O token contém informações sobre a identidade do cliente. A Grade de Eventos usa essa identidade e valida que o cliente tem o Remetente de Dados EventGrid atribuído a ela. Mais precisamente, a Grade de Eventos valida que a identidade tem a permissão Microsoft.EventGrid/events/send/action em uma função RBAC associada à identidade antes de permitir que a solicitação de publicação de evento seja concluída.

Se você estiver usando o SDK da Grade de Eventos, não precisará se preocupar com os detalhes sobre como implementar a aquisição de tokens de acesso e como incluí-lo em cada solicitação à grade de eventos, pois os SDKs do plano de dados da Grade de Eventos fazem isso por você.

Etapas de configuração do cliente para usar a autenticação do Microsoft Entra

Realize as etapas a seguir para configurar seu cliente para usar a autenticação do Microsoft Entra ao enviar eventos para um tópico, domínio ou namespace de parceiro.

  1. Crie ou use uma entidade de segurança que você deseja usar na autenticação. Você pode usar uma identidade gerenciada ou uma entidade de segurança de aplicativo.
  2. Conceda permissão a uma entidade de segurança para publicar eventos atribuindo a função Remetente de Dados EventGrid à entidade de segurança.
  3. Use o SDK da Grade de Eventos para publicar eventos em uma Grade de Eventos.

Autenticar usando a identidade gerenciada

Identidades gerenciadas são identidades associadas aos recursos do Azure. As identidades gerenciadas fornecem uma identidade usada pelos aplicativos quando eles usam recursos do Azure que dão suporte à autenticação do Microsoft Entra. Os aplicativos podem usar a identidade gerenciada do recurso de hospedagem, como uma máquina virtual ou um Serviço de Aplicativo do Azure, para obter tokens do Microsoft Entra que são apresentados com a solicitação durante a publicação de eventos na Grade de Eventos. Quando o aplicativo se conecta, a Grade de Eventos vincula o contexto da entidade gerenciada ao cliente. Depois que ele é associado com uma identidade gerenciada, o cliente de publicação Grade de Eventos pode realizar todas as operações autorizadas. A autorização é concedida por meio da associação de uma entidade gerenciada a uma função RBAC da Grade de Eventos.

A identidade gerenciada fornece aos serviços do Azure uma identidade gerenciada automaticamente no Microsoft Entra ID. Ao contrário de outros métodos de autenticação, você não precisa armazenar e proteger chaves de acesso ou SAS (assinaturas de acesso compartilhado) no código do aplicativo ou na configuração, seja para a própria identidade, seja para os recursos que precisa acessar.

Para autenticar seu cliente de publicação de eventos usando identidades gerenciadas, primeiro decida sobre serviço de hospedagem do Azure para seu aplicativo cliente e, em seguida, habilite as identidades gerenciadas atribuídas pelo usuário ou atribuídas à instância de serviço do Azure. Por exemplo, você pode habilitar identidades gerenciadas em uma VM, em um Serviço de Aplicativo do Azure ou no Azure Functions.

Depois que você tiver uma identidade gerenciada configurada em um serviço de hospedagem, atribua a permissão de publicar eventos a essa identidade.

Autenticar usando uma entidade de segurança de um aplicativo cliente

Além de identidades gerenciadas, outra opção de identidade é criar uma entidade de segurança para seu aplicativo cliente. Para essa finalidade, você precisa registrar seu aplicativo no Microsoft Entra ID. O registro do aplicativo é um gesto pelo qual você delega o controle de gerenciamento de identidades e acesso ao Microsoft Entra ID. Siga as etapas na seção Registrar um aplicativo e na seção Adicionar um segredo do cliente. Examine os pré-requisitos antes de iniciar.

Depois de obter uma entidade de segurança de aplicativo e seguir as etapas acima, atribua a permissão de publicar eventos a essa identidade.

Observação

Quando você registra um aplicativo no portal, um objeto de aplicativo e uma entidade de serviço são criados automaticamente em seu locatário doméstico. Alternativamente, você pode usar o Microsoft Graph para registrar seu aplicativo. No entanto, ao registrar ou criar um aplicativo com as APIs do Microsoft Graph, há uma etapa separada para a criação do objeto da entidade de serviço.

Atribuir permissão a uma entidade de segurança para publicar eventos

A identidade usada para publicar eventos na Grade de Eventos precisa ter a permissão Microsoft.EventGrid/events/send/action que permite enviar eventos à Grade de Eventos. Essa permissão está incluída na função RBAC interna Remetente de Dados de EventGrid. Essa função pode ser atribuída a uma entidade de segurança, para determinado escopo, que pode ser um grupo de gerenciamento, uma assinatura do Azure, um grupo de recursos ou um namespace específico da Grade de Eventos, um domínio ou um namespace de parceiro. Siga as etapas em Atribuir funções do Azure para atribuir uma entidade de segurança à função Remetente de Dados EventGrid e, dessa forma, conceder a um aplicativo que usa essa entidade de segurança acesso para enviar eventos. Como alternativa, você pode definir uma função personalizada que inclui a permissão Microsoft.EventGrid/events/send/action e atribuir essa função personalizada à entidade de segurança.

Com os privilégios de RBAC resolvidos, agora você pode criar seu aplicativo cliente para enviar eventos à Grade de Eventos.

Observação

A Grade de Eventos dá suporte a mais funções RBAC para outros fins além de enviar eventos. Para obter mais informações, confira Funções internas da Grade de Eventos.

Publicar eventos usando os SDKs de cliente da Grade de Eventos

Use o SDK do plano de dados da Grade de Eventos para publicar eventos na Grade de Eventos. O SDK da Grade de Eventos dá suporte a todos os métodos de autenticação, incluindo a autenticação do Microsoft Entra.

Aqui está o código de exemplo que publica eventos na Grade de Eventos utilizando o SDK do .NET. Você pode obter o ponto de extremidade do tópico na página Visão geral do seu tópico da Grade de Eventos no portal do Microsoft Azure. Está no formato: https://<TOPIC-NAME>.<REGION>-1.eventgrid.azure.net/api/events.

ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredential();
EventGridPublisherClient client = new EventGridPublisherClient( new Uri("<TOPIC ENDPOINT>"), managedIdentityCredential);


EventGridEvent egEvent = new EventGridEvent(
        "ExampleEventSubject",
        "Example.EventType",
        "1.0",
        "This is the event data");

// Send the event
await client.SendEventAsync(egEvent);

Pré-requisitos

A seguir estão os pré-requisitos para se autenticar na Grade de Eventos.

Publicar eventos usando a autenticação do Microsoft Entra

Para enviar eventos para um namespace de tópico, domínio ou parceiro, você pode criar o cliente desta maneira. A versão de API que primeiro deu suporte à autenticação do Microsoft Entra foi 2018-01-01. Use essa versão de API ou uma versão mais recente em seu aplicativo.

Exemplo:

Este snippet C# cria um cliente editor da Grade de Eventos usando um aplicativo (entidade de serviço) com um segredo do cliente. Para habilitar o método DefaultAzureCredential, adicione a biblioteca Azure.Identity. Se você estiver usando o SDK oficial, o SDK cuidará da versão para você.

Environment.SetEnvironmentVariable("AZURE_CLIENT_ID", "");
Environment.SetEnvironmentVariable("AZURE_TENANT_ID", "");
Environment.SetEnvironmentVariable("AZURE_CLIENT_SECRET", "");

EventGridPublisherClient client = new EventGridPublisherClient(new Uri("your-event-grid-topic-domain-or-partner-namespace-endpoint"), new DefaultAzureCredential());

Para obter mais informações, consulte os seguintes artigos:

Desabilitar a autenticação de assinatura de acesso compartilhado e de chave

A autenticação do Microsoft Entra dá suporte de autenticação superior ao oferecido pela chave de acesso ou pela autenticação de token SAS (Assinatura de Acesso Compartilhado). Com a autenticação do Microsoft Entra, a identidade é validada no provedor de identidade do Microsoft Entra. Como desenvolvedor, você não precisará manipular chaves em seu código se usar a autenticação do Microsoft Entra. Você também se beneficiará de todos os recursos de segurança incorporados à plataforma de identidade da Microsoft, como o acesso condicional, que pode ajudar a aprimorar a postura de segurança do seu aplicativo.

Depois de decidir usar a autenticação do Microsoft Entra, você poderá desabilitar a autenticação com base nas chaves de acesso ou nos tokens SAS.

Observação

As chaves de acesso ou a autenticação por token SAS constituem uma forma de autenticação local. Às vezes, você ouvirá uma referência à “autenticação local” ao discutir essa categoria de mecanismos de autenticação que não dependem do Microsoft Entra ID. O parâmetro de API usado para desabilitar a autenticação local é chamado, adequadamente, de disableLocalAuth.

Portal do Azure

Ao criar um novo tópico, você pode desabilitar a autenticação local na guia Avançado da página Criar Tópico.

Captura de tela mostrando a guia Avançado da página Criar Tópico, em que você pode desabilitar a autenticação local.

Para um tópico existente, seguindo estas etapas para desabilitar a autenticação local:

  1. Navegue até a página Tópico da Grade de Eventos do tópico e selecione Habilitado em Autenticação local

    Captura de tela que mostra a página Visão geral de um tópico existente.

  2. Na janela pop-up Autenticação local, selecione Desabilitado e selecione OK.

    Captura de tela que mostra a janela Autenticação Local.

CLI do Azure

O comando da CLI a seguir mostra a maneira de criar um tópico personalizado com a autenticação local desabilitada. O recurso Desabilitar a autenticação local está disponível atualmente como uma versão prévia e você precisa usar a versão da API 2021-06-01-preview.

az resource create --subscription <subscriptionId> --resource-group <resourceGroup> --resource-type Microsoft.EventGrid/topics --api-version 2021-06-01-preview --name <topicName> --location <location> --properties "{ \"disableLocalAuth\": true}"

Para sua referência, a seguir estão os valores de tipo de recurso que você pode usar de acordo com o tópico que está criando ou atualizando.

Tipo de tópico Tipo de recurso
Domínios Microsoft.EventGrid/domains
Namespace do parceiro Microsoft.EventGrid/partnerNamespaces
Tópico personalizado Microsoft.EventGrid/topics

Azure PowerShell

Se você estiver usando o PowerShell, use os cmdlets a seguir para criar um tópico personalizado com a autenticação local desabilitada.


Set-AzContext -SubscriptionId <SubscriptionId>

New-AzResource -ResourceGroupName <ResourceGroupName> -ResourceType Microsoft.EventGrid/topics -ApiVersion 2021-06-01-preview -ResourceName <TopicName> -Location <Location> -Properties @{disableLocalAuth=$true}

Observação

Recursos