Identidades gerenciadas para recursos do Azure com Hubs de EventosManaged identities for Azure resources with Event Hubs

Identidades gerenciadas para recursos do Azure é um recurso do Azure que permite criar uma identidade segura associada à implantação na qual o código do aplicativo é executado.Managed identities for Azure resources is a cross-Azure feature that enables you to create a secure identity associated with the deployment under which your application code runs. Em seguida, você pode associar essa identidade a funções de controle de acesso que concedem permissões personalizadas para acessar os recursos do Azure específicos que seu aplicativo precisa.You can then associate that identity with access-control roles that grant custom permissions for accessing specific Azure resources that your application needs.

Com identidades gerenciadas, a plataforma do Azure gerencia essa identidade de tempo de execução.With managed identities, the Azure platform manages this runtime identity. Você não precisa armazenar e proteger as chaves de acesso no código ou na configuração do aplicativo, seja para a identidade ou para os recursos que você precisa acessar.You do not need to store and protect access keys in your application code or configuration, either for the identity itself, or for the resources you need to access. Um aplicativo cliente do Hubs de Eventos em execução dentro de um aplicativo de Serviço de Aplicativo do Azure ou em uma máquina virtual com suporte para entidades gerenciadas para recursos do Azure habilitado não precisa lidar com regras e chaves de SAS nem com nenhum outro token de acesso.An Event Hubs client app running inside an Azure App Service application or in a virtual machine with managed identities for Azure resources support enabled does not need to handle SAS rules and keys, or any other access tokens. O aplicativo cliente precisa apenas do endereço do ponto de extremidade do namespace dos Hubs de Eventos.The client app only needs the endpoint address of the Event Hubs namespace. Quando o aplicativo se conecta, os Hubs de Eventos associam o contexto da identidade gerenciada com o cliente em uma operação que será mostrada em um exemplo mais adiante neste artigo.When the app connects, Event Hubs binds the managed identity's context to the client in an operation that is shown in an example later in this article.

Quando um cliente dos Hubs de Eventos está associado a uma identidade gerenciada, ele pode realizar todas as operações autorizadas.Once it is associated with a managed identity, an Event Hubs client can do all authorized operations. A autorização é concedida ao associar uma identidade gerenciada com funções de Hubs de Eventos.Authorization is granted by associating a managed identity with Event Hubs roles.

Permissões e funções dos Hubs de EventosEvent Hubs roles and permissions

Você pode adicionar uma identidade gerenciada à função de proprietário de dados dos hubs de eventos de um namespace de hubs de eventos.You can add a managed identity to the Event Hubs Data Owner role of an Event Hubs namespace. Essa função concede a identidade, controle total (para operações de gerenciamento e de dados) em todas as entidades no namespace.This role grants the identity, full control (for management and data operations) on all entities in the namespace.

Importante

Anteriormente, damos suporte à adição de identidade gerenciada à função de proprietário ou colaborador .We earlier supported adding managed identity to the Owner or Contributor role. No entanto, os privilégios de acesso a dados para a função de proprietário e colaborador não são mais respeitados.However, data access privileges for Owner and Contributor role are no longer honored. Se você estiver usando a função de proprietário ou colaborador , mude para usando a função de proprietário de dados dos hubs de eventos .If you are using the Owner or Contributor role, switch to using the Event Hubs Data Owner role.

Para usar a nova função interna, siga estas etapas:To use the new built-in role, follow these steps:

  1. Navegue até o portal do AzureNavigate to the Azure portal

  2. Navegue até o namespace de hubs de eventos.Navigate to the Event Hubs namespace.

  3. Na página namespace de hubs de eventos , selecione controle de acesso (iam) no menu à esquerda.On the Event Hubs Namespace page, select Access Control(IAM) from the left menu.

  4. Na página controle de acesso (iam) , selecione Adicionar na seção Adicionar uma atribuição de função .On the Access Control (IAM) page, select Add in the Add a role assignment section.

    Adicionar um botão de atribuição de função

  5. Na página Adicionar atribuição de função , execute as seguintes etapas:On the Add role assignment page, do the following steps:

    1. Para função, selecione proprietário de dados dos hubs de eventos do Azure.For Role, select Azure Event Hubs Data Owner.

    2. Selecione a identidade a ser adicionada à função.Select the identity to be added to the role.

    3. Clique em Salvar.Select Save.

      Função de proprietário de dados dos hubs de eventos

  6. Alterne para a página atribuições de função e confirme se o usuário foi adicionado à função de proprietário de dados dos hubs de eventos do Azure .Switch to the Role assignments page and confirm that the user is added to the Azure Event Hubs Data Owner role.

    Confirmar que o usuário foi adicionado à função

Usar Hubs de Eventos com identidades gerenciadas para Recursos do AzureUse Event Hubs with managed identities for Azure Resources

A seção a seguir descreve as etapas a seguir:The following section describes the following steps:

  1. Criar e implantar um aplicativo de exemplo executado em uma identidade gerenciada.Create and deploy a sample application that runs under a managed identity.
  2. Conceda a essa identidade o acesso a um namespace de Hubs de eventos.Grant that identity access to an Event Hubs namespace.
  3. Como o aplicativo interage com os hubs de eventos usando essa identidade.How the application interacts with event hubs using that identity.

Esta introdução descreve um aplicativo Web hospedado no Serviço de Aplicativo do Azure.This introduction describes a web application hosted in Azure App Service. As etapas necessárias para um aplicativo hospedado em VM são semelhantes.The steps required for a VM-hosted application are similar.

Criar um aplicativo Web do Serviço de AplicativoCreate an App Service web application

A primeira etapa é criar um aplicativo ASP.NET do Serviço de Aplicativo.The first step is to create an App Service ASP.NET application. Se você não estiver familiarizado com a forma de fazer isso no Azure, siga este guia de instruções.If you're not familiar with how to do this in Azure, follow this how-to guide. No entanto, em vez de criar um aplicativo MVC, conforme é mostrado no tutorial, crie um aplicativo Web Forms.However, instead of creating an MVC application as shown in the tutorial, create a Web Forms application.

Configurar a identidade gerenciadaSet up the managed identity

Depois de criar o aplicativo, navegue até o aplicativo Web recém-criado no portal do Azure (também mostrado nas instruções) e, em seguida, navegue até a página Identidade de Serviço Gerenciada e habilite o recurso:Once you create the application, navigate to the newly created web app in the Azure portal (also shown in the how-to), then navigate to the Managed Service Identity page, and enable the feature:

Página de Identidade de Serviço Gerenciada

Depois de habilitar o recurso, uma nova identidade do serviço será criada no Azure Active Directory e configurada no host do Serviço de Aplicativo.Once you've enabled the feature, a new service identity is created in your Azure Active Directory, and configured into the App Service host.

Criar um novo namespace dos Hubs de EventosCreate a new Event Hubs namespace

Em seguida, crie um namespace de hubs de eventos.Next, create an Event Hubs namespace.

Navegue até a página Controle de Acesso (IAM) do namespace no portal e, em seguida, clique em Adicionar atribuição de função para adicionar a identidade gerenciada à função Proprietário.Navigate to the namespace Access Control (IAM) page on the portal, and then click Add role assignment to add the managed identity to the Owner role. Para fazer isso, procure o nome do aplicativo Web no campo Selecionar do painel Adicionar permissões e, em seguida, clique na entrada.To do so, search for the name of the web application in the Add permissions panel Select field, and then click the entry. Em seguida, clique em Salvar.Then click Save. A identidade gerenciada para o aplicativo Web agora tem acesso ao namespace de Hubs de Eventos e ao hub de eventos criado anteriormente.The managed identity for the web application now has access to the Event Hubs namespace, and to the event hub you previously created.

Executar o aplicativoRun the app

Agora, modifique a página padrão do aplicativo ASP.NET que você criou.Now modify the default page of the ASP.NET application you created. Você também pode usar o código do aplicativo Web deste repositório GitHub.You can also use the web application code from this GitHub repository.

Depois de iniciar o aplicativo, aponte o navegador para EventHubsMSIDemo.aspx.Once you start the app, point your browser to EventHubsMSIDemo.aspx. Você também pode defini-lo como sua página inicial.You can also set it as your start page. O código pode ser encontrado no arquivo EventHubsMSIDemo.aspx.cs.The code can be found in the EventHubsMSIDemo.aspx.cs file. O resultado é um aplicativo Web mínimo com alguns campos de entrada e os botões enviar e receber que se conectam aos Hubs de Eventos para enviar ou receber eventos.The result is a minimal web application with a few entry fields, and with send and receive buttons that connect to Event Hubs to either send or receive events.

Observe como o objeto MessagingFactory é inicializado.Note how the MessagingFactory object is initialized. Em vez de usar o provedor de token SAS (Token de Acesso Compartilhado), o código cria um provedor de token para a identidade gerenciada com a chamada TokenProvider.CreateManagedServiceIdentityTokenProvider(ServiceAudience.EventHubAudience).Instead of using the Shared Access Token (SAS) token provider, the code creates a token provider for the managed identity with the TokenProvider.CreateManagedServiceIdentityTokenProvider(ServiceAudience.EventHubAudience) call. Dessa forma, não há segredos a serem salvos e usados.As such, there are no secrets to save and use. O fluxo do contexto da identidade gerenciada para o Hubs de Eventos e o handshake de autorização são manipulados automaticamente pelo provedor de token, que é um modelo mais simples do que o uso do SAS.The flow of the managed identity context to Event Hubs and the authorization handshake are automatically handled by the token provider, which is a simpler model than using SAS.

Depois de fazer essas alterações, publique e execute o aplicativo.After you make these changes, publish and run the application. Você pode obter os dados de publicação corretos baixando e, em seguida, importando um perfil de publicação no Visual Studio:You can get the correct publishing data by downloading and then importing a publishing profile in Visual Studio:

Importar o perfil de publicação

Para enviar ou receber mensagens, insira o nome do namespace e o nome da entidade que você criou e, em seguida, clique em enviar ou receber.To send or receive messages, enter the name of the namespace and the name of the entity you created, then click either send or receive.

A identidade gerenciada só funciona dentro do ambiente do Azure e somente na implantação do Serviço de Aplicativo em que você a configurou.The managed identity works only inside the Azure environment, and only in the App Service deployment in which you configured it. Identidades gerenciadas não funcionam com slots de implantação do Serviço de Aplicativo no momento.Managed identities do not work with App Service deployment slots at this time.

Próximas etapasNext steps

Para saber mais sobre Hubs de Eventos, acesse os seguintes links:For more information about Event Hubs, visit the following links: