Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan cara mengamankan pengiriman peristiwa dari Azure Event Grid (langganan peristiwa) ke titik akhir webhook Anda dengan menggunakan autentikasi ID Microsoft Entra. Anda mempelajari cara mengonfigurasi aplikasi Microsoft Entra dan menetapkan peran yang sesuai untuk membuat koneksi terautentikasi antara Event Grid dan webhook Anda. Artikel ini menggunakan portal Microsoft Azure untuk demonstrasi. Namun, Anda juga dapat mengaktifkan fitur dengan menggunakan CLI, PowerShell, atau SDK.
Penting
Untuk mengatasi kerentanan keamanan, Microsoft memperkenalkan pemeriksaan akses tambahan sebagai bagian dari membuat atau memperbarui langganan peristiwa pada 30 Maret 2021. Prinsipal layanan klien pelanggan harus menjadi pemilik atau memiliki peran yang ditetapkan pada prinsipal layanan aplikasi tujuan. Konfigurasi ulang Aplikasi Microsoft Entra Anda dengan mengikuti instruksi baru dalam artikel 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:
Mengantarkan peristiwa ke webhook yang berada di tenant Microsoft Entra yang sama dengan langganan peristiwa. Anda dapat menggunakan pengguna Microsoft Entra atau aplikasi Microsoft Entra sebagai penulis langganan peristiwa dalam skenario ini.
Mengirimkan acara ke webhook yang berada di penyewa Microsoft Entra yang berbeda dari langganan acara. Anda hanya dapat menggunakan aplikasi Microsoft Entra sebagai penulis langganan peristiwa dalam skenario ini.
Dalam skenario pertama, Anda menjalankan semua skrip atau langkah dalam satu penyewa yang memiliki langganan acara dan webhook. Dalam skenario kedua, Anda menjalankan beberapa langkah di tenant yang memiliki langganan acara dan beberapa langkah di tenant yang memiliki webhook.
Kirim peristiwa ke webhook di penyewa Microsoft Entra yang sama
Diagram berikut menunjukkan bagaimana Event Grid mengirimkan events ke sebuah webhook di penyewa yang sama dengan event subscription.
Bagian ini memiliki dua subbagian. Baca kedua skenario atau skenario yang menarik minat Anda.
- Mengonfigurasi subskripsi acara dengan menggunakan Microsoft Entra ID pengguna
- Mengonfigurasi subskripsi acara dengan menggunakan aplikasi ID Microsoft Entra
Mengonfigurasi langganan acara dengan pengguna Microsoft Entra
Bagian ini memperlihatkan cara mengonfigurasi langganan peristiwa dengan menggunakan pengguna Microsoft Entra.
Buat aplikasi Microsoft Entra untuk webhook yang telah dikonfigurasi agar dapat bekerja dengan Microsoft Entra (penyewa tunggal).
Buka Azure Shell di penyewa, lalu pilih lingkungan PowerShell.
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"- Variabel:
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 dari 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 Anda melihat pesan kesalahan berikut, Anda perlu meningkatkan ke service principal. Pemeriksaan akses tambahan diperkenalkan sebagai bagian dari pembuatan atau pembaruan langganan peristiwa pada 30 Maret 2021 untuk mengatasi kerentanan keamanan. Prinsipal layanan klien pelanggan harus menjadi pemilik atau memiliki peran yang ditetapkan pada prinsipal layanan aplikasi tujuan.
New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment Code: Authorization_RequestDenied Message: Insufficient privileges to complete the operation.- Variabel:
Di portal, saat membuat langganan peristiwa, ikuti langkah berikut:
Pilih tipe titik akhir sebagai Web Hook.
Sebutkan URL titik akhir.
Pilih tab Fitur Tambahan di bagian atas halaman Buat Langganan Acara.
Pada tab Fitur tambahan, lakukan langkah-langkah berikut ini:
Pilih Gunakan autentikasi Microsoft Entra, dan konfigurasikan ID penyewa dan ID aplikasi:
Salin ID penyewa Microsoft Entra dari output skrip dan masukkan di bidang ID penyewa Microsoft Entra.
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.
Mengonfigurasi langganan peristiwa dengan menggunakan aplikasi Microsoft Entra
Bagian ini memperlihatkan cara mengonfigurasi langganan peristiwa dengan menggunakan aplikasi Microsoft Entra.
Buat aplikasi Microsoft Entra untuk penulis langganan Event Grid yang dikonfigurasi untuk bekerja dengan Microsoft Entra (Penyewa tunggal).
Buat rahasia untuk aplikasi Microsoft Entra dan simpan nilainya (Anda memerlukan nilai ini nanti).
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.
Buat aplikasi Microsoft Entra untuk webhook yang sudah dikonfigurasi agar bekerja dengan Microsoft Entra dalam mode penyewa tunggal.
Buka Azure Shell di penyewa, lalu pilih lingkungan PowerShell.
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"- Variabel:
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 telah disetel 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.- Variabel:
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]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 webhookCatatan
Skenario ini menggunakan topik sistem. Jika Anda ingin membuat langganan untuk topik atau domain kustom dengan menggunakan Azure CLI, lihat Referensi CLI.
Jika mengonfigurasi semuanya dengan benar, Anda dapat 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 perlu memvalidasi token otorisasi di webhook Anda.
Menyampaikan acara ke webhook di penyewa Microsoft Entra yang berbeda
Untuk mengamankan koneksi antara langganan acara Anda dan titik akhir webhook yang berada di penyewa Microsoft Entra yang berbeda, gunakan aplikasi ID Microsoft Entra seperti yang ditunjukkan di bagian ini. Saat ini, Anda tidak dapat mengamankan koneksi ini dengan menggunakan pengguna ID Microsoft Entra di portal Microsoft Azure.
Berdasarkan diagram, ikuti langkah berikutnya untuk mengonfigurasi kedua penyewa.
Penyewa A
Selesaikan langkah-langkah berikut di Penyewa A:
Buat aplikasi Microsoft Entra untuk penulis langganan Event Grid yang dikonfigurasi untuk bekerja dengan Entra Microsoft apa saja (multitenant).
Buat rahasia untuk aplikasi Microsoft Entra, dan simpan nilainya (Anda memerlukan nilai ini nanti).
Buka halaman Kontrol akses (IAM) untuk topik Event Grid. Tetapkan peran Kontributor Event Grid ke aplikasi Microsoft Entra dari penulis langganan Event Grid. Langkah ini memberikan akses aplikasi ke sumber daya Event Grid saat Anda masuk ke Azure dengan menggunakan aplikasi Microsoft Entra dan Azure CLI.
Penyewa B
Di Penyewa B, selesaikan langkah-langkah berikut:
Buat aplikasi Microsoft Entra untuk webhook yang dikonfigurasi agar dapat digunakan bersama Microsoft Entra, khusus untuk satu penyewa.
Buka Azure Shell, lalu pilih lingkungan PowerShell.
Ubah nilai $webhookAadTenantId untuk menyambungkan 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"
Buka skrip berikut, dan 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 Anda melihat pesan kesalahan berikut, Anda perlu meningkatkan ke service principal. Pemeriksaan akses tambahan diperkenalkan sebagai bagian dari pembuatan atau pembaruan langganan peristiwa pada 30 Maret 2021 untuk mengatasi kerentanan keamanan. Prinsipal layanan klien pelanggan harus menjadi pemilik atau memiliki peran yang ditetapkan pada prinsipal layanan aplikasi tujuan.
New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment Code: Authorization_RequestDenied Message: Insufficient privileges to complete the operation.- Variabel:
Penyewa A
Di Penyewa A, selesaikan langkah-langkah berikut:
Buka Azure Shell dan masuk sebagai penulis langganan Event Grid Aplikasi Microsoft Entra dengan menjalankan perintah .
az login --service-principal -u [REPLACE_WITH_APP_ID] -p [REPLACE_WITH_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]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 webhookCatatan
Dalam skenario ini, Anda menggunakan Topik Sistem Event Grid. Untuk membuat langganan untuk topik kustom atau domain Event Grid dengan menggunakan Azure CLI, lihat di sini.
Jika mengonfigurasi semuanya dengan benar, Anda dapat membuat langganan webhook di topik Event Grid Anda.
Catatan
Pada titik ini, Event Grid meneruskan token Microsoft Entra Bearer ke klien webhook di setiap pesan. Anda perlu memvalidasi token Otorisasi di webhook Anda.
Konten terkait
- Untuk informasi konseptual, lihat Pengiriman event WebHook.
- Untuk informasi selengkapnya tentang kunci autentikasi, lihat Keamanan dan autentikasi Event Grid.
- Untuk informasi selengkapnya tentang cara membuat langganan Azure Event Grid, lihat Skema langganan Event Grid.