Mengirimkan peristiwa ke titik akhir yang dilindungi Microsoft Entra

Artikel ini menjelaskan cara menggunakan ID Microsoft Entra untuk mengamankan koneksi antara langganan peristiwa Anda dan titik akhir webhook Anda. Ini menggunakan portal Azure untuk demonstrasi, namun fitur ini juga dapat diaktifkan menggunakan CLI, PowerShell, atau SDK.

Penting

Pemeriksaan akses tambahan telah diperkenalkan sebagai bagian dari membuat atau memperbarui langganan kejadian pada 30 Maret 2021 untuk mengatasi kerentanan keamanan. Prinsipal layanan klien pelanggan harus pemilik atau memiliki peran yang ditetapkan pada prinsip layanan aplikasi tujuan. Konfigurasi ulang Aplikasi Microsoft Entra Anda dengan mengikuti instruksi baru di bawah ini. Untuk gambaran umum aplikasi Microsoft Entra dan perwakilan layanan, lihat gambaran umum platform identitas Microsoft (v2.0).

Skenario

Artikel ini menjelaskan cara menerapkan dua skenario berikut secara rinci:

Mengirimkan peristiwa ke Webhook di penyewa Microsoft Entra yang sama

Diagram berikut menggambarkan bagaimana peristiwa Event Grid dikirimkan ke webhook di penyewa yang sama dengan langganan peristiwa.

Image that depicts secure delivery of events to a webhook that's in the same tenant.

Ada dua subbagian di bagian ini. Baca skenario atau skenario yang Anda minati.

Mengonfigurasi langganan peristiwa dengan menggunakan pengguna Microsoft Entra

Bagian ini memperlihatkan cara mengonfigurasi langganan peristiwa dengan menggunakan pengguna Microsoft Entra.

  1. Buat aplikasi Microsoft Entra untuk webhook yang dikonfigurasi untuk bekerja dengan Microsoft Entra (penyewa tunggal).

  2. Buka Azure Shell di penyewa, lalu pilih lingkungan PowerShell.

  3. Ubah nilai $webhookAadTenantId untuk terhubung ke penyewa.

    • Variabel:
      • $webhookAadTenantId: ID penyewa Azure
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  4. Buka skrip berikut, lalu perbarui nilai $webhookAppObjectId dan $eventSubscriptionWriterUserPrincipalName dengan pengidentifikasi Anda, lalu lanjutkan untuk menjalankan skrip.

    • Variabel:
      • $webhookAppObjectId: ID aplikasi Microsoft Entra yang dibuat untuk webhook
      • $eventSubscriptionWriterUserPrincipalName: Nama prinsipal pengguna Azure pengguna yang membuat langganan peristiwa

    Catatan

    Anda tidak perlu mengubah nilai $eventGridAppId. Dalam skrip ini, AzureEventGridSecureWebhookSubscriber diatur untuk $eventGridRoleName. Ingat, Anda harus menjadi anggota peran Administrator Aplikasi Microsoft Entra atau menjadi pemilik perwakilan layanan aplikasi webhook di ID Microsoft Entra untuk menjalankan skrip ini.

    Jika melihat pesan kesalahan berikut, Anda perlu menaikkan ke perwakilan layanan. Pemeriksaan akses tambahan telah diperkenalkan sebagai bagian dari pembuatan atau pembaruan langganan peristiwa pada 30 Maret 2021 untuk mengatasi kerentanan keamanan. Prinsipal layanan klien pelanggan harus pemilik atau memiliki peran yang ditetapkan pada prinsip layanan aplikasi tujuan.

    New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment
    Code: Authorization_RequestDenied
    Message: Insufficient privileges to complete the operation.
    
  5. Di portal, saat membuat langganan peristiwa, ikuti langkah berikut:

    1. Pilih tipe titik akhir sebagai Web Hook.

    2. Sebutkan URL titik akhir.

      Select endpoint type webhook

    3. Pilih tab Fitur Tambahan di bagian atas halaman Buat Langganan Acara.

    4. Pada tab Fitur tambahan, lakukan langkah-langkah berikut ini:

      1. Pilih Gunakan autentikasi Microsoft Entra, dan konfigurasikan ID penyewa dan ID aplikasi:

      2. Salin ID penyewa Microsoft Entra dari output skrip dan masukkan di bidang ID penyewa Microsoft Entra.

      3. Salin ID aplikasi Microsoft Entra dari output skrip dan masukkan di bidang ID Aplikasi Microsoft Entra. Anda dapat menggunakan URI ID Aplikasi Microsoft Entra alih-alih menggunakan ID aplikasi. Untuk informasi selengkapnya tentang aplikasi ID URL, lihat artikel ini.

        Secure Webhook action

Mengonfigurasi langganan peristiwa dengan menggunakan aplikasi Microsoft Entra

Bagian ini memperlihatkan cara mengonfigurasi langganan peristiwa dengan menggunakan aplikasi Microsoft Entra.

  1. Buat aplikasi Microsoft Entra untuk penulis langganan Event Grid yang dikonfigurasi untuk bekerja dengan Microsoft Entra (Penyewa tunggal).

  2. Buat rahasia untuk aplikasi Microsoft Entra dan simpan nilainya (Anda memerlukan nilai ini nanti).

  3. Buka halaman Kontrol akses (IAM) untuk topik Event Grid dan tetapkan peran Kontributor Event Grid ke aplikasi penulis langganan Event Grid. Langkah ini memungkinkan Anda memiliki akses ke sumber daya Event Grid saat Anda masuk ke Azure dengan aplikasi Microsoft Entra dengan menggunakan Azure CLI.

  4. Buat aplikasi Microsoft Entra untuk webhook yang dikonfigurasi untuk bekerja dengan Microsoft Entra (Penyewa tunggal).

  5. Buka Azure Shell di penyewa, lalu pilih lingkungan PowerShell.

  6. Ubah nilai $webhookAadTenantId untuk terhubung ke penyewa.

    • Variabel:
      • $webhookAadTenantId: ID penyewa Azure
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  7. Buka skrip berikut dan perbarui nilai $webhookAppObjectId juga $eventSubscriptionWriterAppId dengan pengidentifikasi Anda, lalu lanjutkan untuk menjalankan skrip.

    • Variabel:
      • $webhookAppObjectId: ID aplikasi Microsoft Entra yang dibuat untuk webhook
      • $eventSubscriptionWriterAppId: ID aplikasi Microsoft Entra untuk aplikasi penulis langganan Event Grid.

    Catatan

    Anda tidak perlu memodifikasi nilai $eventGridAppId. Dalam skrip ini, AzureEventGridSecureWebhookSubscriber sebagaimana diatur untuk $eventGridRoleName. Ingat, Anda harus menjadi anggota peran Administrator Aplikasi Microsoft Entra atau menjadi pemilik perwakilan layanan aplikasi webhook di ID Microsoft Entra untuk menjalankan skrip ini.

  8. Masuk sebagai penulis langganan Event Grid Aplikasi Microsoft Entra dengan menjalankan perintah .

    az login --service-principal -u [REPLACE_WITH_EVENT_GRID_SUBSCRIPTION_WRITER_APP_ID] -p [REPLACE_WITH_EVENT_GRID_SUBSCRIPTION_WRITER_APP_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]
    
  9. Buat langganan Anda dengan menjalankan perintah.

    az eventgrid system-topic event-subscription create --name [REPLACE_WITH_SUBSCRIPTION_NAME] -g [REPLACE_WITH_RESOURCE_GROUP] --system-topic-name [REPLACE_WITH_SYSTEM_TOPIC] --endpoint [REPLACE_WITH_WEBHOOK_ENDPOINT] --event-delivery-schema [REPLACE_WITH_WEBHOOK_EVENT_SCHEMA] --azure-active-directory-tenant-id [REPLACE_WITH_TENANT_ID] --azure-active-directory-application-id-or-uri [REPLACE_WITH_APPLICATION_ID_FROM_SCRIPT] --endpoint-type webhook
    

    Catatan

    Skenario ini menggunakan topik sistem. Jika Anda ingin membuat langganan untuk topik atau domain kustom dengan menggunakan Azure CLI, lihat referensi CLI.

  10. Jika semuanya dikonfigurasi dengan benar, Anda dapat berhasil membuat langganan webhook di topik Event Grid Anda.

    Catatan

    Pada titik ini, Event Grid sekarang meneruskan token pembawa Microsoft Entra ke klien webhook di setiap pesan. Anda harus memvalidasi token otorisasi di webhook Anda.

Mengirimkan peristiwa ke Webhook di penyewa Microsoft Entra yang berbeda

Untuk mengamankan koneksi antara langganan peristiwa dan titik akhir webhook Anda yang berada di penyewa Microsoft Entra yang berbeda, Anda perlu menggunakan aplikasi ID Microsoft Entra seperti yang ditunjukkan di bagian ini. Saat ini, tidak dimungkinkan untuk mengamankan koneksi ini dengan menggunakan pengguna ID Microsoft Entra di portal Azure.

Multitenant events with Microsoft Entra ID and Webhooks

Berdasarkan diagram, ikuti langkah berikutnya untuk mengonfigurasi kedua penyewa.

Penyewa A

Lakukan langkah-langkah berikut di Penyewa A:

  1. Buat aplikasi Microsoft Entra untuk penulis langganan Event Grid yang dikonfigurasi untuk bekerja dengan Microsoft Entra (multipenyewa) apa pun.

  2. Buat rahasia untuk aplikasi Microsoft Entra, dan simpan nilainya (Anda memerlukan nilai ini nanti).

  3. Navigasi ke halaman Kontrol akses (IAM) untuk topik Event Grid. Tetapkan peran Kontributor Event Grid ke aplikasi Microsoft Entra dari penulis langganan Event Grid. Langkah ini memungkinkan aplikasi untuk memiliki akses ke sumber daya Event Grid saat Anda masuk ke Azure dengan aplikasi Microsoft Entra dengan menggunakan Azure CLI.

Penyewa B

Lakukan langkah-langkah berikut di Penyewa B:

  1. Buat Aplikasi Microsoft Entra untuk webhook yang dikonfigurasi untuk bekerja dengan Microsoft Entra (penyewa tunggal).

  2. Buka Azure Shell, lalu pilih lingkungan PowerShell.

  3. Ubah nilai $webhookAadTenantId untuk terhubung ke Penyewa B.

    • Variabel:

      • $webhookAadTenantId: ID Penyewa Azure untuk Penyewa B
      $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
      Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
      
  4. Buka skrip berikut, lalu perbarui nilai $webhookAppObjectId dan $eventSubscriptionWriterAppId dengan pengidentifikasi Anda, kemudian lanjutkan untuk menjalankan skrip.

    • Variabel:
      • $webhookAppObjectId: ID aplikasi Microsoft Entra yang dibuat untuk webhook

      • $eventSubscriptionWriterAppId: ID aplikasi Microsoft Entra untuk penulis langganan Event Grid

        Catatan

        Anda tidak perlu memodifikasi nilai $eventGridAppId. Dalam skrip ini, AzureEventGridSecureWebhookSubscriber diatur untuk $eventGridRoleName. Ingat, Anda harus menjadi anggota peran Administrator Aplikasi Microsoft Entra atau menjadi pemilik perwakilan layanan aplikasi webhook di ID Microsoft Entra untuk menjalankan skrip ini.

    Jika melihat pesan kesalahan berikut, Anda perlu menaikkan ke perwakilan layanan. Pemeriksaan akses tambahan telah diperkenalkan sebagai bagian dari pembuatan atau pembaruan langganan peristiwa pada 30 Maret 2021 untuk mengatasi kerentanan keamanan. Prinsipal layanan klien pelanggan harus pemilik atau memiliki peran yang ditetapkan pada prinsip layanan aplikasi tujuan.

    New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment
    Code: Authorization_RequestDenied
    Message: Insufficient privileges to complete the operation.
    

Penyewa A

Di Penyewa A, lakukan langkah-langkah berikut:

  1. Buka Azure Shell, dan masuk sebagai penulis langganan Event Grid Microsoft Entra Application dengan menjalankan perintah .

    az login --service-principal -u [REPLACE_WITH_APP_ID] -p [REPLACE_WITH_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]
    
  2. Buat langganan Anda dengan menjalankan perintah.

    az eventgrid system-topic event-subscription create --name [REPLACE_WITH_SUBSCRIPTION_NAME] -g [REPLACE_WITH_RESOURCE_GROUP] --system-topic-name [REPLACE_WITH_SYSTEM_TOPIC] --endpoint [REPLACE_WITH_WEBHOOK_ENDPOINT] --event-delivery-schema [REPLACE_WITH_WEBHOOK_EVENT_SCHEMA] --azure-active-directory-tenant-id [REPLACE_WITH_TENANT_B_ID] --azure-active-directory-application-id-or-uri [REPLACE_WITH_APPLICATION_ID_FROM_SCRIPT] --endpoint-type webhook
    

    Catatan

    Dalam skenario ini, kami menggunakan Topik Sistem Event Grid. Lihat di sini jika Anda ingin membuat langganan untuk topik kustom atau domain Event Grid menggunakan Azure CLI.

  3. Jika semuanya dikonfigurasi dengan benar, Anda dapat berhasil membuat langganan webhook di topik Event Grid Anda.

    Catatan

    Pada titik ini, Event Grid sekarang meneruskan token Microsoft Entra Bearer ke klien webhook di setiap pesan. Anda harus memvalidasi token Otorisasi di webhook Anda.

Langkah berikutnya