Autentikasi dan otorisasi dengan ID Microsoft Entra

Artikel ini menjelaskan cara mengautentikasi klien penerbitan Azure Event Grid menggunakan ID Microsoft Entra.

Gambaran Umum

Platform Identitas Microsoft menyediakan autentikasi terintegrasi dan manajemen kontrol akses untuk sumber daya dan aplikasi yang menggunakan ID Microsoft Entra sebagai idP mereka. Gunakan platform identitas Microsoft untuk memberikan dukungan autentikasi dan otorisasi di aplikasi Anda. Hal ini didasarkan pada standar terbuka seperti OAuth 2.0 dan OpenID Connect dan menawarkan alat serta pustaka sumber terbuka yang mendukung banyak skenario autentikasi. Ini menyediakan fitur canggih seperti Akses Bersyarat yang memungkinkan Anda untuk menetapkan kebijakan yang memerlukan autentikasi multifaktor atau memungkinkan akses dari lokasi tertentu.

Keuntungan yang meningkatkan sikap keamanan Anda saat menggunakan MICROSOFT Entra ID adalah Anda tidak perlu menyimpan kredensial, seperti kunci autentikasi, dalam kode atau repositori. Sebagai gantinya, Anda mengandalkan akuisisi token akses OAuth 2.0 dari platform identitas Microsoft yang disajikan aplikasi Anda saat mengautentikasi ke sumber daya yang dilindungi. Anda dapat mendaftarkan aplikasi penerbitan peristiwa dengan ID Microsoft Entra dan mendapatkan perwakilan layanan yang terkait dengan aplikasi yang Anda kelola dan gunakan. Sebagai gantinya, Anda dapat menggunakan Identitas Terkelola, baik yang ditetapkan sistem atau pengguna, untuk model manajemen identitas yang lebih sederhana, karena beberapa aspek siklus hidup identitas sudah dikelola untuk Anda.

Kontrol akses berbasis peran (RBAC) memungkinkan Anda mengonfigurasi otorisasi sedemikian rupa sehingga prinsip keamanan tertentu (identitas untuk pengguna, grup, atau aplikasi) memiliki izin khusus untuk menjalankan operasi melalui sumber daya Azure. Dengan cara ini, prinsip keamanan yang digunakan oleh aplikasi klien yang mengirimkan peristiwa ke Event Grid harus memiliki peran RBAC EventGrid Data Sender yang terkait dengannya.

Prinsip keamanan

Ada dua kategori luas dari prinsip keamanan yang berlaku saat membahas autentikasi klien penerbitan Event Grid:

  • Identitas Terkelola. Identitas terkelola dapat ditetapkan sistem, yang Anda aktifkan pada sumber daya Azure dan hanya terkait dengan sumber daya tersebut, atau ditetapkan pengguna, yang Anda buat dan beri nama secara eksplisit. Identitas terkelola yang ditetapkan pengguna dapat dikaitkan pada lebih dari satu sumber daya.
  • Prinsip keamanan aplikasi. Ini adalah jenis prinsip keamanan yang mewakili aplikasi, yang mengakses sumber daya yang dilindungi oleh ID Microsoft Entra.

Terlepas dari prinsip keamanan yang digunakan, identitas terkelola atau prinsip keamanan aplikasi, klien Anda menggunakan identitas tersebut untuk mengautentikasi sebelum ID Microsoft Entra dan mendapatkan token akses OAuth 2.0 yang dikirim dengan permintaan saat mengirim peristiwa ke Event Grid. Token itu ditandatangani secara kriptografis dan setelah Event Grid menerimanya, token divalidasi. Misalnya, penonton (penerima token yang dituju) dikonfirmasi sebagai Azure Event Grid (https://eventgrid.azure.net), antara lain. Token tersebut berisi informasi tentang identitas klien. Azure Event Grid mengambil identitas itu dan memvalidasi bahwa klien tersebut memiliki peran Pengirim Data EventGrid ditetapkan padanya. Tepatnya, Event Grid memvalidasi bahwa identitas memiliki izin Microsoft.EventGrid/events/send/action dalam peran RBAC yang terkait dengan identitas sebelum mengizinkan permintaan penerbitan acara selesai.

Jika Anda menggunakan SDK Azure Event Grid, Anda tidak perlu memikirkan detail cara menerapkan perolehan token akses dan cara memasukkannya dengan setiap permintaan ke Azure Event Grid, karena SDK data plane Event Grid sudah melakukannya untuk Anda.

Langkah-langkah konfigurasi klien untuk menggunakan autentikasi Microsoft Entra

Lakukan langkah-langkah berikut untuk mengonfigurasi klien Anda untuk menggunakan autentikasi Microsoft Entra saat mengirim peristiwa ke topik, domain, atau namespace mitra.

  1. Buat atau gunakan prinsip keamanan untuk mengautentikasi. Anda dapat menggunakan identitas terkelola atau prinsip keamanan aplikasi.
  2. Beri izin kepada prinsip keamanan untuk menerbitkan peristiwa dengan menetapkan peran Pengirim Data EventGrid pada prinsip keamanan.
  3. Gunakan SDK Azure Event Grid untuk menerbitkan peristiwa ke Azure Event Grid.

Mengautentikasi menggunakan identitas terkelola

Identitas terkelola adalah identitas yang terkait dengan sumber daya Azure. Identitas terkelola menyediakan identitas yang digunakan aplikasi saat menggunakan sumber daya Azure yang mendukung autentikasi Microsoft Entra. Aplikasi dapat menggunakan identitas terkelola sumber daya hosting seperti komputer virtual atau layanan Azure App untuk mendapatkan token Microsoft Entra yang disajikan dengan permintaan saat menerbitkan peristiwa ke Event Grid. Saat aplikasi terhubung, Azure Event Grid mengikat konteks entitas terkelola kepada klien. Setelah dikaitkan dengan identitas terkelola, klien penerbitan Azure Event Grid Anda dapat melakukan semua operasi resmi. Otorisasi diberikan dengan mengaitkan entitas terkelola ke peran RBAC Azure Event Grid.

Identitas terkelola menyediakan layanan Azure dengan identitas terkelola secara otomatis di ID Microsoft Entra. Berbeda dengan metode autentikasi lainnya, Anda tidak perlu menyimpan dan melindungi kunci akses atau Tanda Tangan Akses Bersama (SAS) dalam kode atau konfigurasi aplikasi Anda, baik untuk identitas itu sendiri atau untuk sumber daya yang perlu Anda akses.

Untuk mengautentikasi klien penerbitan peristiwa Anda menggunakan identitas terkelola, pertama putuskan layanan Azure hosting untuk aplikasi klien Anda, kemudian aktifkan identitas terkelola yang ditetapkan sistem atau pengguna pada instans layanan Azure tersebut. misalnya, Anda dapat mengaktifkan identitas terkelola pada VM, Azure App Service atau Azure Functions.

Setelah Anda telah mengonfigurasi identitas terkelola dalam layanan hosting, tetapkan izin untuk menerbitkan peristiwa kepada identitas tersebut.

Autentikasi menggunakan prinsip keamanan dari aplikasi klien

Selain identitas terkelola, opsi identitas lain adalah membuat prinsip keamanan untuk aplikasi klien Anda. Untuk itu, Anda perlu mendaftarkan aplikasi Anda dengan ID Microsoft Entra. Mendaftarkan aplikasi Anda adalah gerakan di mana Anda mendelegasikan kontrol manajemen identitas dan akses ke ID Microsoft Entra. Ikuti langkah di bagian Daftar aplikasi dan di bagian Tambahkan rahasia klien. Pastikan untuk meninjau prasyarat sebelum mulai.

Setelah Anda memiliki prinsip keamanan aplikasi dan mengikuti langkah-langkah di atas, tetapkan izin untuk menerbitkan pada identitas itu.

Catatan

Saat mendaftarkan aplikasi di portal, proyek aplikasi and perwakilan layanan dibuat secara otomatis di penyewa utama Anda. Atau, Anda dapat menggunakan Microsot Graph untuk mendaftarkan aplikasi Anda. Namun, Jika Anda mendaftar atau membuat aplikasi menggunakan API Microsoft Graph, membuat objek perwakilan layanan adalah langkah terpisah.

Menetapkan izin kepada prinisp keamanan untuk menerbitkan peristiwa

Identitas yang digunakan untuk menerbitkan peristiwa ke Azure Event Grid harus memiliki izin Microsoft.EventGrid/events/send/action yang memungkinkannya untuk mengirim acara ke Azure Event Grid. Izin tersebut disertakan dalam peran RBAC bawaan Pengirim Data Event Grid. Peran ini dapat ditetapkan ke prinsip keamanan, untuk cakupan tertentu, yang dapat berupa grup manajemen, langganan Azure, grup sumber daya, atau topik Event Grid, domain, atau namespace mitra tertentu. Ikuti langkah di Assign Azure roles untuk menetapkan peran EventGrid Data Sender kepada prinsip keamanan, dan dengan itu memberikan akses prinsip keamanan kepada aplikasi untuk mengirim peristiwa. Atau, Anda dapat menentukan peran kustom yang mencakup izin Microsoft.EventGrid/events/send/action dan menetapkan peran kustom itu kepada prinsip keamanan.

Setelah mengurus izin RBAC, Anda dapat membangun aplikasi klien Anda untuk mengirim peristiwa ke Azure Event Grid.

Catatan

Azure Event Grid mendukung lebih banyak peran RBAC untuk tujuan di luar mengirim peristiwa. Untuk informasi selengkapnya, lihat Peran bawaan Azure Event Grid.

Menerbitkan peristiwa menggunakan SDK klien Azure Event Grid

Gunakan SDK data plane Azure Event Grid untuk menerbitkan peristiwa ke Azure Event Grid. SDK Event Grid mendukung semua metode autentikasi, termasuk autentikasi Microsoft Entra.

Berikut adalah kode sampel yang menerbitkan peristiwa ke Event Grid menggunakan .NET SDK. Anda bisa mendapatkan titik akhir topik di halaman Gambaran Umum untuk topik Event Grid Anda di portal Azure. Formatnya adalah: https://<TOPIC-NAME>.<REGION>-1.eventgrid.azure.net/api/events.

ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredential();
EventGridPublisherClient client = new EventGridPublisherClient( new Uri("<TOPIC ENDPOINT>"), managedIdentityCredential);


EventGridEvent egEvent = new EventGridEvent(
        "ExampleEventSubject",
        "Example.EventType",
        "1.0",
        "This is the event data");

// Send the event
await client.SendEventAsync(egEvent);

Prasyarat

Berikut ini adalah prasyarat untuk mengautentikasi ke Azure Event Grid.

Menerbitkan peristiwa menggunakan autentikasi Microsoft Entra

Untuk mengirim peristiwa ke topik, domain, atau namespace mitra, Anda dapat membangun klien dengan cara berikut. Versi API yang pertama kali memberikan dukungan untuk autentikasi Microsoft Entra adalah 2018-01-01. Gunakan versi API itu atau versi yang lebih baru di aplikasi Anda.

Sampel:

Cuplikan C# ini membuat klien penerbit Event Grid menggunakan Aplikasi (Perwakilan Layanan) dengan rahasia klien, untuk mengaktifkan metode DefaultAzureCredential yang Perlu Anda tambahkan pustaka Azure.Identity. Jika Anda menggunakan SDK resmi, SDK akan menangani versi untuk Anda.

Environment.SetEnvironmentVariable("AZURE_CLIENT_ID", "");
Environment.SetEnvironmentVariable("AZURE_TENANT_ID", "");
Environment.SetEnvironmentVariable("AZURE_CLIENT_SECRET", "");

EventGridPublisherClient client = new EventGridPublisherClient(new Uri("your-event-grid-topic-domain-or-partner-namespace-endpoint"), new DefaultAzureCredential());

Untuk informasi lebih lanjut, baca artikel berikut:

Menonaktifkan kunci dan autentikasi tanda tangan akses bersama

Autentikasi Microsoft Entra menyediakan dukungan autentikasi yang unggul daripada yang ditawarkan oleh kunci akses atau autentikasi token Tanda Tangan Akses Bersama (SAS). Dengan autentikasi Microsoft Entra, identitas divalidasi terhadap IdP Microsoft Entra. Sebagai pengembang, Anda tidak perlu menangani kunci dalam kode jika Anda menggunakan autentikasi Microsoft Entra. Anda juga akan mendapat manfaat dari semua fitur keamanan yang disertakan dalam platform Identitas Microsoft, seperti Akses Bersyar yang dapat membantu Anda meningkatkan sikap keamanan aplikasi Anda.

Setelah memutuskan untuk menggunakan autentikasi Microsoft Entra, Anda dapat menonaktifkan autentikasi berdasarkan kunci akses atau token SAS.

Catatan

Autentikasi kunci akses atau token SAS adalah bentuk autentikasi lokal. Terkadang Anda akan mendengar mengacu pada "autentikasi lokal" saat membahas kategori mekanisme autentikasi ini yang tidak bergantung pada ID Microsoft Entra. Parameter API yang digunakan untuk menonaktifkan autentikasi lokal disebut disableLocalAuth.

Portal Azure

Saat membuat topik baru, Anda dapat menonaktifkan autentikasi lokal pada tab Tingkat Lanjut pada halaman Buat Topik.

Screenshot showing the Advanced tab of Create Topic page when you can disable local authentication.

Untuk topik yang sudah ada, ikuti langkah-langkah berikut untuk menonaktifkan autentikasi lokal:

  1. Navigasikan ke halaman Topik Event Grid untuk topik tersebut, dan pilih Diaktifkan pada Autentikasi Lokal

    Screenshot showing the Overview page of an existing topic.

  2. Di jendela pop-up Autentikasi Lokal, pilih Nonaktif, dan pilih OK.

    Screenshot showing the Local Authentication window.

Azure CLI

Perintah CLI berikut menunjukkan cara untuk membuat topik kustom dengan autentikasi lokal dinonaktifkan. Fitur nonaktifkan auth lokal saat ini tersedia sebagai pratinjau, dan Anda perlu menggunakan versi API 2021-06-01-preview.

az resource create --subscription <subscriptionId> --resource-group <resourceGroup> --resource-type Microsoft.EventGrid/topics --api-version 2021-06-01-preview --name <topicName> --location <location> --properties "{ \"disableLocalAuth\": true}"

Untuk referensi, berikut ini adalah nilai jenis sumber daya yang dapat Anda gunakan sesuai dengan topik yang Anda buat atau perbarui.

Jenis topik Jenis Sumber Daya
Domain Microsoft.EventGrid/domains
Namespace Mitra Microsoft.EventGrid/partnerNamespaces
Topik Kustom Microsoft.EventGrid/topics

Azure PowerShell

Jika Anda menggunakan PowerShell, gunakan cmdlet berikut untuk membuat topik kustom dengan autentikasi lokal dinonaktifkan.


Set-AzContext -SubscriptionId <SubscriptionId>

New-AzResource -ResourceGroupName <ResourceGroupName> -ResourceType Microsoft.EventGrid/topics -ApiVersion 2021-06-01-preview -ResourceName <TopicName> -Location <Location> -Properties @{disableLocalAuth=$true}

Catatan

Sumber