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 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. 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:
Mengirimkan peristiwa ke webhook yang berada di penyewa 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 peristiwa ke webhook yang berada di penyewa Microsoft Entra yang berbeda dari langganan peristiwa. Anda hanya dapat menggunakan aplikasi Microsoft Entra sebagai penulis langganan peristiwa dalam skenario ini.
Dalam skenario pertama, Anda menjalankan semua langkah atau skrip dalam satu penyewa yang memiliki langganan peristiwa dan webhook. Dan, dalam skenario kedua, Anda menjalankan beberapa langkah di penyewa yang memiliki langganan peristiwa dan beberapa langkah di penyewa yang memiliki webhook.
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.
Ada dua subbagian di bagian ini. Baca skenario atau skenario yang Anda minati.
- Mengonfigurasi langganan peristiwa dengan menggunakan pengguna ID Microsoft Entra
- Mengonfigurasi langganan peristiwa dengan menggunakan aplikasi ID Microsoft Entra
Mengonfigurasi langganan peristiwa dengan menggunakan pengguna Microsoft Entra
Bagian ini memperlihatkan cara mengonfigurasi langganan peristiwa dengan menggunakan pengguna Microsoft Entra.
Buat aplikasi Microsoft Entra untuk webhook yang dikonfigurasi untuk 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 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 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.
- 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 dikonfigurasi untuk 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 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.- 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 webhook
Catatan
Skenario ini menggunakan topik sistem. Jika Anda ingin membuat langganan untuk topik atau domain kustom dengan menggunakan Azure CLI, lihat referensi CLI.
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 perlu 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.
Berdasarkan diagram, ikuti langkah berikutnya untuk mengonfigurasi kedua penyewa.
Penyewa A
Lakukan langkah-langkah berikut di Penyewa A:
Buat aplikasi Microsoft Entra untuk penulis langganan Event Grid yang dikonfigurasi untuk bekerja dengan Microsoft Entra (multipenyewa) apa pun.
Buat rahasia untuk aplikasi Microsoft Entra, dan simpan nilainya (Anda memerlukan nilai ini nanti).
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:
Buat Aplikasi Microsoft Entra untuk webhook yang dikonfigurasi untuk bekerja dengan Microsoft Entra (penyewa tunggal).
Buka Azure Shell, lalu pilih lingkungan PowerShell.
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"
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 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.
- Variabel:
Penyewa A
Sekarang, di Penyewa A, lakukan langkah-langkah berikut:
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]
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.
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 perlu memvalidasi token Otorisasi di webhook Anda.
Konten terkait
- Untuk informasi konseptual, lihat Pengiriman peristiwa 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.