Sdílet prostřednictvím


Ověření spravované identity pomocí ID Microsoft Entra pro přístup k prostředkům služby Event Hubs

Azure Event Hubs podporuje ověřování Microsoft Entra se spravovanými identitami pro prostředky Azure. Spravované identity pro prostředky Azure můžou autorizovat přístup k prostředkům služby Event Hubs pomocí přihlašovacích údajů Microsoft Entra z aplikací spuštěných ve službě Azure Virtual Machines (virtuální počítače), aplikací funkcí, služby Virtual Machine Scale Sets a dalších služeb. Pomocí spravovaných identit pro prostředky Azure společně s ověřováním Microsoft Entra se můžete vyhnout ukládání přihlašovacích údajů s aplikacemi, které běží v cloudu. Tento článek ukazuje, jak autorizovat přístup k centru událostí pomocí spravované identity z virtuálního počítače Azure.

Povolení spravovaných identit na virtuálním počítači

Před použitím spravovaných identit pro prostředky Azure pro přístup k prostředkům služby Event Hubs z virtuálního počítače musíte nejprve povolit spravované identity pro prostředky Azure na virtuálním počítači. Informace o povolení spravovaných identit pro prostředky Azure najdete v tématu Konfigurace spravovaných identit na virtuálních počítačích Azure.

Udělení oprávnění spravované identitě v Microsoft Entra ID

Pokud chcete autorizovat požadavek na službu Event Hubs ze spravované identity ve vaší aplikaci, nejprve nakonfigurujte nastavení řízení přístupu na základě role v Azure (RBAC) pro tuto spravovanou identitu. Azure Event Hubs definuje role Azure, které zahrnují oprávnění k odesílání událostí a přijímání událostí ze služby Event Hubs. Když je role Azure přiřazená ke spravované identitě, udělí se spravovaná identita přístupu k datům služby Event Hubs v příslušném oboru. Další informace o přiřazování rolí Azure najdete v tématu Ověřování pomocí ID Microsoft Entra pro přístup k prostředkům služby Event Hubs.

Ukázková aplikace

Postup v této části používá jednoduchou aplikaci, která běží pod spravovanou identitou a přistupuje k prostředkům služby Event Hubs.

Tady používáme ukázkovou webovou aplikaci hostované ve službě Aplikace Azure Service. Podrobné pokyny k vytvoření webové aplikace najdete v tématu Vytvoření webové aplikace ASP.NET Core v Azure.

Po vytvoření aplikace postupujte takto:

  1. Přejděte do Nastavení a vyberte Identita.

  2. Vyberte stav, který má být zapnutý.

  3. Vyberte Uložit a nastavení se uloží.

    Snímek obrazovky se stránkou Identita zobrazující stav identity přiřazené systémem nastavený na ZAPNUTO

  4. V informační zprávě vyberte Ano .

    Po povolení tohoto nastavení se ve vašem ID Microsoft Entra vytvoří nová identita služby a nakonfiguruje se do hostitele služby App Service.

    Teď tuto identitu služby přiřaďte k roli v požadovaném oboru v prostředcích služby Event Hubs.

Přiřazení rolí Azure pomocí webu Azure Portal

Přiřaďte spravované identitě jednu z rolí služby Event Hubs v požadovaném oboru (obor názvů služby Event Hubs, skupina prostředků, předplatné). Podrobný postup najdete v tématu Přiřazování rolí Azure s využitím webu Azure Portal.

Poznámka:

Seznam služeb, které podporují spravované identity, najdete v tématu Služby, které podporují spravované identity pro prostředky Azure.

Test webové aplikace

  1. Vytvořte obor názvů služby Event Hubs a centrum událostí.
  2. Nasaďte webovou aplikaci do Azure. Odkazy na ukázkovou webovou aplikaci na GitHubu najdete v následující části s kartami.
  3. Ujistěte se, že je SendReceive.aspx nastavený jako výchozí dokument webové aplikace.
  4. Povolte identitu pro webovou aplikaci.
  5. Tuto identitu přiřaďte k roli Vlastník dat služby Event Hubs na úrovni oboru názvů nebo centra událostí.
  6. Spusťte webovou aplikaci, zadejte název oboru názvů a název centra událostí, zprávu a vyberte Odeslat. Pokud chcete událost přijmout, vyberte Přijmout.

Ukázkovou webovou aplikaci, která odesílá a přijímá data z prostředků služby Event Hubs, najdete v úložišti GitHub.

Nainstalujte nejnovější balíček z NuGetu a začněte odesílat události do služby Event Hubs pomocí EventHubProducerClient a příjem událostí pomocí EventHubConsumerClient.

Poznámka:

Ukázku Javy, která používá spravovanou identitu k publikování událostí do centra událostí, najdete v tématu Publikování událostí s ukázkou identity Azure na GitHubu.

protected async void btnSend_Click(object sender, EventArgs e)
{
    await using (EventHubProducerClient producerClient = new EventHubProducerClient(txtNamespace.Text, txtEventHub.Text, new DefaultAzureCredential()))
    {
        // create a batch
        using (EventDataBatch eventBatch = await producerClient.CreateBatchAsync())
        {

            // add events to the batch. only one in this case. 
            eventBatch.TryAdd(new EventData(Encoding.UTF8.GetBytes(txtData.Text)));

            // send the batch to the event hub
            await producerClient.SendAsync(eventBatch);
        }

        txtOutput.Text = $"{DateTime.Now} - SENT{Environment.NewLine}{txtOutput.Text}";
    }
}
protected async void btnReceive_Click(object sender, EventArgs e)
{
    await using (var consumerClient = new EventHubConsumerClient(EventHubConsumerClient.DefaultConsumerGroupName, $"{txtNamespace.Text}.servicebus.windows.net", txtEventHub.Text, new DefaultAzureCredential()))
    {
        int eventsRead = 0;
        try
        {
            using CancellationTokenSource cancellationSource = new CancellationTokenSource();
            cancellationSource.CancelAfter(TimeSpan.FromSeconds(5));

            await foreach (PartitionEvent partitionEvent in consumerClient.ReadEventsAsync(cancellationSource.Token))
            {
                txtOutput.Text = $"Event Read: { Encoding.UTF8.GetString(partitionEvent.Data.Body.ToArray()) }{ Environment.NewLine}" + txtOutput.Text;
                eventsRead++;
            }
        }
        catch (TaskCanceledException ex)
        {
            txtOutput.Text = $"Number of events read: {eventsRead}{ Environment.NewLine}" + txtOutput.Text;
        }
    }
}

Event Hubs pro Kafka

Aplikace Apache Kafka můžete použít k odesílání a přijímání zpráv ze služby Azure Event Hubs pomocí OAuth spravované identity. Projděte si následující ukázku na GitHubu: Event Hubs pro Kafka – odesílání a příjem zpráv pomocí OAuth spravované identity.

Ukázky