Share via


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

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

Descrição geral

A plataforma Microsoft Identity fornece um gerenciamento integrado de autenticação e controle de acesso para recursos e aplicativos que usam o Microsoft Entra ID como seu provedor de identidade. Use a plataforma de identidade da Microsoft para fornecer suporte de autenticação e autorização em seus aplicativos. Ele é baseado em padrões abertos, como OAuth 2.0 e OpenID Connect e oferece ferramentas e bibliotecas de código aberto que suportam muitos cenários de autenticação. Ele fornece recursos avançados, como Acesso Condicional, que permite definir políticas que exigem autenticação multifator ou permitem acesso de locais específicos, por exemplo.

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

O RBAC (controle de acesso baseado em função) permite configurar 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 sobre recursos do Azure. Dessa forma, a entidade de segurança usada por um aplicativo cliente que envia eventos para a Grade de Eventos deve ter a função RBAC EventGrid Data Sender associada a ela.

Entidades de segurança

Há duas categorias amplas de entidades de segurança que são aplicáveis ao discutir a autenticação de um cliente de publicação de Grade de Eventos:

  • Identidades gerenciadas. Uma identidade gerenciada pode ser atribuída ao sistema, que você habilita em um recurso do Azure e está associada apenas a esse recurso, ou usuário atribuído, 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, uma identidade gerenciada ou uma entidade de segurança de aplicativo, seu cliente usa essa identidade para autenticar antes da ID do Microsoft Entra e obter um token de acesso OAuth 2.0 que é enviado com solicitações ao enviar eventos para a Grade de Eventos. Esse token é assinado criptograficamente e, uma vez que a Grade de Eventos o recebe, o token é validado. Por exemplo, o público (o destinatário pretendido do token) é confirmado como Grade de Eventos (https://eventgrid.azure.net), entre outras coisas. O token contém informações sobre a identidade do cliente. A Grade de Eventos usa essa identidade e valida que o cliente tem a função EventGrid Data Sender atribuída a ele. Mais precisamente, a Grade de Eventos valida se a identidade tem a permissão em uma função RBAC associada à identidade antes de permitir que a Microsoft.EventGrid/events/send/action solicitação de publicação de eventos 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í-la em todas as solicitações à 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

Execute 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 para autenticar. 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 EventGrid Data Sender à entidade de segurança.
  3. Use o SDK da Grade de Eventos para publicar eventos em uma Grade de Eventos.

Autenticar com uma identidade gerida

As identidades gerenciadas são identidades associadas aos recursos do Azure. As identidades gerenciadas fornecem uma identidade que os aplicativos usam ao usar 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 o serviço de Aplicativo do Azure, para obter tokens do Microsoft Entra que são apresentados com a solicitação ao publicar eventos na Grade de Eventos. Quando o aplicativo se conecta, a Grade de Eventos vincula o contexto da entidade gerenciada ao cliente. Depois de associado a uma identidade gerenciada, seu cliente de publicação de grade de eventos pode fazer todas as operações autorizadas. A autorização é concedida associando uma entidade gerenciada a uma função RBAC de 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 Assinaturas de Acesso Compartilhado (SAS) no código ou configuração do aplicativo, seja para a própria identidade ou para os recursos que você precisa acessar.

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

Depois de ter uma identidade gerenciada configurada em um serviço de hospedagem, atribua a permissão para publicar eventos a essa identidade.

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

Além das identidades gerenciadas, outra opção de identidade é criar uma entidade de segurança para seu aplicativo cliente. Para isso, você precisa registrar seu aplicativo com o Microsoft Entra ID. Registrar seu aplicativo é um gesto através do qual você delega o controle de gerenciamento de identidade e acesso ao Microsoft Entra ID. Siga as etapas na seção Registrar um aplicativo e na seção Adicionar um segredo do cliente. Certifique-se de revisar os pré-requisitos antes de começar.

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

Nota

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 residencial. Como alternativa, você pode usar o Microsot Graph para registrar seu aplicativo. No entanto, se você registrar ou criar um aplicativo usando as APIs do Microsoft Graph, a criação do objeto principal de serviço será uma etapa separada.

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

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

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

Nota

A Grade de Eventos oferece suporte a mais funções RBAC para fins além do envio de eventos. Para obter mais informações, consulteFunções internas da Grade de Eventos.

Publicar eventos usando 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 suporta 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 usando o SDK do .NET. Você pode obter o ponto de extremidade do tópico na página Visão geral do tópico Grade de Eventos no portal do 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 autenticar na Grade de Eventos.

Publicar eventos usando a autenticação do Microsoft Entra

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

Exemplo:

Este trecho em C# cria um cliente editor de Grade de Eventos usando um Aplicativo (Entidade de Serviço) com um segredo de cliente, para habilitar o método DefaultAzureCredential necessário para adicionar a biblioteca Azure.Identity. Se você estiver usando o SDK oficial, o SDK manipulará a 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 que podem estar em inglês:

Desativar autenticação de chave e assinatura de acesso compartilhado

A autenticação do Microsoft Entra fornece um 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 em relação ao 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 Microsoft Identity, como o Acesso Condicional, que pode ajudá-lo a melhorar a postura de segurança do seu aplicativo.

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

Nota

Chaves de acesso ou autenticação de token SAS é uma forma de autenticação local. você ouvirá às vezes se referir a "auth local" ao discutir essa categoria de mecanismos de autenticação que não dependem do Microsoft Entra ID. O parâmetro API usado para desabilitar a autenticação local é chamado, apropriadamente, 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 .

Screenshot showing the Advanced tab of Create Topic page when you can disable local authentication.

Para um tópico existente, siga 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

    Screenshot showing the Overview page of an existing topic.

  2. Na janela pop-up Autenticação Local, selecione Desativado e selecione OK.

    Screenshot showing the Local Authentication window.

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 de desativação de autenticação local está atualmente disponível como uma visualização e você precisa usar a versão 2021-06-01-previewda API.

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 você está criando ou atualizando.

Tipo de tópico Tipo de recurso
Domínios Microsoft.EventGrid/domínios
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}

Nota

Recursos