Mengontrol akses ke IoT Hub dengan menggunakan MICROSOFT Entra ID

Anda dapat menggunakan ID Microsoft Entra untuk mengautentikasi permintaan ke API layanan Azure IoT Hub, seperti membuat identitas perangkat dan memanggil metode langsung. Anda juga dapat menggunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk mengotorisasi API layanan yang sama. Dengan menggunakan teknologi ini bersama-sama, Anda dapat memberikan izin untuk mengakses API layanan IoT Hub ke perwakilan keamanan Microsoft Entra. Prinsip keamanan ini bisa menjadi pengguna, kelompok, atau prinsip layanan aplikasi.

Mengautentikasi akses dengan menggunakan ID Microsoft Entra dan mengontrol izin dengan menggunakan Azure RBAC memberikan peningkatan keamanan dan kemudahan penggunaan melalui token keamanan. Untuk meminimalkan potensi masalah keamanan yang melekat pada token keamanan, kami sarankan Anda menerapkan autentikasi Microsoft Entra jika memungkinkan.

Catatan

Autentikasi dengan ID Microsoft Entra tidak didukung untuk API perangkat IoT Hub (seperti pesan perangkat-ke-cloud dan memperbarui properti yang dilaporkan). Gunakan tombol simetris atau X.509untuk mengautentikasi perangkat ke Hub IoT.

Autentikasi dan otorisasi

Autentikasi adalah proses pembuktian bahwa Anda adalah orang yang Anda katakan. Autentikasi memverifikasi identitas pengguna atau perangkat ke IoT Hub. Ini kadang-kadang disingkat menjadi AuthN. Otorisasi adalah proses mengonfirmasi izin untuk pengguna atau perangkat yang diautentikasi di IoT Hub. Ini menentukan sumber daya dan perintah apa yang diizinkan untuk Anda akses, dan apa yang dapat Anda lakukan dengan sumber daya dan perintah tersebut. Otorisasi kadang-kadang disingkat menjadi AuthZ.

Saat perwakilan keamanan Microsoft Entra meminta akses ke API layanan IoT Hub, identitas utama pertama kali diautentikasi. Untuk autentikasi, permintaan harus berisi token akses OAuth 2.0 saat runtime. Nama sumber daya untuk meminta token adalah https://iothubs.azure.net. Jika aplikasi berjalan di sumber daya Azure seperti Azure VM, aplikasi Azure Functions, atau aplikasi Azure App Service, aplikasi dapat direpresentasikan sebagai identitas terkelola.

Setelah perwakilan Microsoft Entra diautentikasi, langkah selanjutnya adalah otorisasi. Dalam langkah ini, IoT Hub menggunakan layanan penetapan peran Microsoft Entra untuk menentukan izin apa yang dimiliki perwakilan. Jika izin perwakilan cocok dengan sumber daya atau API yang diminta, IoT Hub akan mengesahkan permintaan tersebut. Jadi, langkah ini mengharuskan satu atau beberapa peran Azure untuk ditugaskan ke prinsip keamanan. IoT Hub menyediakan beberapa peran bawaan yang memiliki grup izin umum.

Mengelola akses ke IoT Hub dengan menggunakan penetapan peran Azure RBAC

Dengan MICROSOFT Entra ID dan RBAC, IoT Hub mengharuskan perwakilan yang meminta API untuk memiliki tingkat izin yang sesuai untuk otorisasi. Untuk memberikan izin perwakilan, berikan penetapan peran tersebut.

Untuk memastikan hak istimewa paling sedikit, selalu tetapkan peran yang sesuai pada cakupan sumber daya serendahmungkin, yang mungkin merupakan lingkup IoT Hub.

IoT Hub menyediakan peran bawaan Azure berikut untuk mengotorisasi akses ke API layanan IoT Hub dengan menggunakan ID Microsoft Entra dan RBAC:

Peran Deskripsi
Kontributor Data IoT Hub Memungkinkan akses penuh ke operasi pesawat data Azure IoT Hub.
Pembaca Data IoT Hub Memungkinkan akses baca penuh ke properti pesawat data IoT Hub.
Kontributor Registri IoT Hub Memungkinkan akses penuh ke registri perangkat IoT Hub.
Kontributor Kembar IoT Hub Memungkinkan untuk membaca dan menulis akses ke semua perangkat IoT Hub dan modul kembar.

Anda juga dapat menentukan peran kustom untuk digunakan dengan Azure IoT Hub dengan menggabungkan izin yang Anda butuhkan. Untuk informasi selengkapnya, lihat Membuat peran kustom untuk kontrol akses berbasis peran Azure.

Cakupan sumber daya

Sebelum Anda menetapkan peran Azure RBAC ke perwakilan keamanan, tentukan cakupan akses yang harus dimiliki perwakilan keamanan. Itu selalu yang terbaik untuk memberikan hanya ruang lingkup yang paling sempit. Peran Azure RBAC yang ditentukan pada cakupan yang lebih luas diwariskan oleh sumber daya di bawahnya.

Daftar ini menjelaskan tingkat yang Anda dapat mengakses cakupan IoT Hub, dimulai dengan cakupan tersempit:

  • IoT Hub. Pada lingkup ini, penetapan peran berlaku untuk Azure IoT hub. Tidak ada ruang lingkup yang lebih kecil dari hub IoT individu. Penetapan peran pada cakupan yang lebih kecil seperti identitas perangkat individual atau bagian kembar, tidak didukung.
  • Grup sumber daya. Pada lingkup ini, penetapan peran berlaku untuk semua hub IoT dalam grup sumber daya.
  • Langganan. Pada cakupan ini, penetapan peran berlaku untuk semua hub IoT di semua grup sumber daya dalam langganan.
  • Grup manajemen. Pada cakupan ini, penetapan peran berlaku untuk semua hub IoT di semua grup sumber daya di semua langganan di grup manajemen.

Izin untuk API layanan Hub IoT

Tabel berikut ini menjelaskan izin yang tersedia untuk operasi API layanan Azure IoT Hub. Untuk memungkinkan klien menghubungi operasi tertentu, pastikan bahwa peran RBAC yang ditetapkan klien menawarkan izin yang memadai untuk operasi tersebut.

Tindakan RBAC Deskripsi
Microsoft.Devices/IotHubs/devices/read Membaca identitas perangkat atau modul apa pun.
Microsoft.Devices/IotHubs/devices/write Membuat atau memperbarui identitas perangkat atau modul apa pun.
Microsoft.Devices/IotHubs/devices/delete Menghapus identitas perangkat atau modul apa pun.
Microsoft.Devices/IotHubs/twins/read Membaca perangkat atau modul apa pun kembar.
Microsoft.Devices/IotHubs/twins/write Tulis perangkat atau modul apa pun kembar.
Microsoft.Devices/IotHubs/jobs/read Kembalikan daftar pekerjaan.
Microsoft.Devices/IotHubs/jobs/write Membuat atau memperbarui pekerjaan apa pun.
Microsoft.Devices/IotHubs/jobs/delete Menghapus pekerjaan apa pun.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/send/action Kirim pesan cloud-to-device ke perangkat apa pun.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/feedback/action Terima, selesaikan, atau abaikan pemberitahuan umpan balik pesan cloud-to-device.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/queue/purge/action Menghapus semua perintah tertunda untuk perangkat.
Microsoft.Devices/IotHubs/directMethods/invoke/action Memanggil metode langsung pada perangkat atau modul apa pun.
Microsoft.Devices/IotHubs/fileUpload/notifications/action Menerima, melengkapi, atau meninggalkan pemberitahuan unggahan file.
Microsoft.Devices/IotHubs/statistics/read Membaca statistik perangkat dan layanan.
Microsoft.Devices/IotHubs/configurations/read Membaca konfigurasi manajemen perangkat.
Microsoft.Devices/IotHubs/configurations/write Membuat atau memperbarui konfigurasi manajemen perangkat.
Microsoft.Devices/IotHubs/configurations/delete Menghapus konfigurasi manajemen perangkat apa pun.
Microsoft.Devices/IotHubs/configurations/applyToEdgeDevice/action Menerapkan konten konfigurasi ke perangkat edge.
Microsoft.Devices/IotHubs/configurations/testQueries/action Memvalidasi kondisi target dan kueri metrik khusus untuk konfigurasi.

Tip

Catatan

Untuk mendapatkan data dari IoT Hub dengan menggunakan ID Microsoft Entra, siapkan perutean ke titik akhir Azure Event Hubs kustom. Untuk mengakses titik akhir yang kompatibel dengan Event Hub bawaan, gunakan metode string koneksi (kunci akses berbagi) seperti sebelumnya.

Menerapkan autentikasi Microsoft Entra

Secara default, IoT Hub mendukung akses API layanan melalui ID Microsoft Entra dan kebijakan akses bersama dan token keamanan. Untuk meminimalkan potensi kerentanan keamanan yang melekat pada token keamanan, Anda dapat menonaktifkan akses dengan kebijakan akses bersama.

Peringatan

Dengan menolak koneksi menggunakan kebijakan akses bersama, semua pengguna dan layanan yang terhubung menggunakan metode ini segera kehilangan akses. Terutama, karena Device Provisioning Service (DPS) hanya mendukung penautan hub IoT menggunakan kebijakan akses bersama, semua alur provisi perangkat akan gagal dengan kesalahan "tidak sah". Lanjutkan dengan hati-hati dan rencanakan untuk mengganti akses dengan akses berbasis peran Microsoft Entra. Jangan lanjutkan jika Anda menggunakan DPS.

  1. Pastikan bahwa klien dan pengguna layanan Anda memiliki akses yang memadai ke IoT hub Anda. Ikuti prinsip hak istimewa terendah.
  2. Di portal Microsoft Azure, buka IoT hub Anda.
  3. Di panel sebelah kiri, pilih Kebijakan akses berbagi.
  4. Di bawah Koneksi menggunakan kebijakan akses bersama, pilih Tolak, dan tinjau peringatan. Screenshot that shows how to turn off IoT Hub shared access policies.

API layanan IoT Hub Anda sekarang hanya dapat diakses melalui ID Microsoft Entra dan RBAC.

Akses ID Microsoft Entra dari portal Azure

Anda dapat menyediakan akses ke IoT Hub dari portal Azure dengan kebijakan akses bersama atau izin Microsoft Entra.

Saat Anda mencoba mengakses IoT Hub dari portal Azure, portal Azure pertama-tama memeriksa apakah Anda telah diberi peran Azure dengan Microsoft.Devices/iotHubs/listkeys/action. Jika demikian, portal Microsoft Azure menggunakan kunci dari kebijakan akses berbagi untuk mengakses Azure IoT Hub. Jika tidak, portal Azure mencoba mengakses data dengan menggunakan akun Microsoft Entra Anda.

Untuk mengakses IoT Hub dari portal Azure dengan menggunakan akun Microsoft Entra, Anda memerlukan izin untuk mengakses sumber daya data IoT Hub (seperti perangkat dan kembar). Anda juga memerlukan izin untuk masuk ke sumber daya IoT Hub di portal Microsoft Azure. Peran bawaan yang disediakan oleh IoT Hub memberikan akses ke sumber daya seperti perangkat dan kembar tetapi tidak memberikan akses ke sumber daya IoT Hub. Jadi, akses ke portal juga memerlukan penugasan peran Azure Resource Manager seperti Reader. Peran pembaca adalah pilihan yang baik karena ini adalah peran yang paling dibatasi yang memungkinkan Anda menavigasi portal. Ini tidak termasuk izin Microsoft.Devices/iotHubs/listkeys/action (yang menyediakan akses ke semua sumber daya data IoT Hub melalui kebijakan akses bersama).

Untuk memastikan akun tidak memiliki akses di luar izin yang ditetapkan, jangan sertakan izin Microsoft.Devices/iotHubs/listkeys/action saat Anda membuat peran kustom. Misalnya, untuk membuat peran khusus yang dapat membaca identitas perangkat tetapi tidak dapat membuat atau menghapus perangkat, buat peran khusus yang:

  • Memiliki tindakan data Microsoft.Devices/IotHubs/devices/read.
  • Tidak memiliki tindakan data Microsoft.Devices/IotHubs/devices/write.
  • Tidak memiliki tindakan data Microsoft.Devices/IotHubs/devices/delete.
  • Tidak memiliki tindakan Microsoft.Devices/iotHubs/listkeys/action.

Kemudian, pastikan akun tidak memiliki peran lain yang memiliki izin Microsoft.Devices/iotHubs/listkeys/action, seperti Pemilik atau Kontributor. Untuk mengizinkan akun memiliki akses sumber daya dan menavigasi portal, tetapkan Pembaca.

Akses ID Microsoft Entra dari Azure CLI

Sebagian besar perintah terhadap IoT Hub mendukung autentikasi Microsoft Entra. Anda dapat mengontrol jenis autentikasi yang digunakan untuk menjalankan perintah dengan menggunakan parameter --auth-type, yang menerima nilai key atau login. Nilai key defaultnya adalah benar.

  • Ketika --auth-type memiliki nilai key, seperti sebelumnya, CLI secara otomatis menemukan kebijakan yang sesuai saat berinteraksi dengan IoT Hub.

  • Ketika --auth-type memiliki nilai login, token akses dari Azure CLI yang masuk perwakilan digunakan untuk operasi.

Untuk informasi selengkapnya, lihat halaman rilis ekstensi Azure IoT untuk Azure CLI.

Sampel SDK

Langkah berikutnya

  • Untuk informasi selengkapnya tentang keuntungan menggunakan MICROSOFT Entra ID di aplikasi Anda, lihat Mengintegrasikan dengan ID Microsoft Entra.
  • Untuk informasi selengkapnya tentang meminta token akses dari ID Microsoft Entra untuk pengguna dan perwakilan layanan, lihat Skenario autentikasi untuk ID Microsoft Entra.

Gunakan Device Provisioning Service untuk Memprovisikan beberapa perangkat X.509 menggunakan grup pendaftaran.