Mengautentikasi aplikasi C++ ke layanan Azure menggunakan pustaka Azure Identity

Aplikasi dapat menggunakan pustaka Identitas Azure untuk mengautentikasi ke ID Microsoft Entra, yang memungkinkan aplikasi mengakses layanan dan sumber daya Azure. Persyaratan autentikasi ini berlaku apakah aplikasi disebarkan ke Azure, dihosting secara lokal, atau berjalan secara lokal di stasiun kerja pengembang. Bagian di depan menjelaskan pendekatan yang direkomendasikan untuk mengautentikasi aplikasi ke ID Microsoft Entra di berbagai lingkungan saat menggunakan pustaka klien Azure SDK.

Autentikasi berbasis token melalui ID Microsoft Entra adalah pendekatan yang direkomendasikan untuk mengautentikasi aplikasi ke Azure, alih-alih menggunakan string koneksi atau opsi berbasis kunci. Pustaka klien Azure Identity untuk C++ menyediakan autentikasi berbasis token dan memungkinkan aplikasi mengautentikasi ke sumber daya Azure apakah aplikasi berjalan secara lokal, di Azure, atau di server lokal.

Keuntungan autentikasi berbasis token

Autentikasi berbasis token menawarkan keuntungan berikut daripada string koneksi:

  • Autentikasi berbasis token memastikan hanya aplikasi tertentu yang dimaksudkan untuk mengakses sumber daya Azure yang dapat melakukannya, sedangkan siapa pun atau aplikasi apa pun dengan string koneksi dapat terhubung ke sumber daya Azure.
  • Autentikasi berbasis token memungkinkan Anda membatasi akses sumber daya Azure lebih lanjut hanya untuk izin tertentu yang diperlukan oleh aplikasi. Ini mengikuti prinsip hak akses minimum. Sebaliknya, string koneksi memberikan hak penuh ke sumber daya Azure.
  • Saat menggunakan identitas terkelola untuk autentikasi berbasis token, Azure menangani fungsi administratif untuk Anda, sehingga Anda tidak perlu khawatir tentang tugas seperti mengamankan atau memutar rahasia. Ini membuat aplikasi lebih aman karena tidak ada string koneksi atau rahasia aplikasi yang dapat disusupi.
  • String koneksi secara fungsional setara dengan kredensial dan memerlukan penanganan khusus untuk mencegah kebocoran yang tidak disengaja. Mereka harus disimpan dengan aman (misalnya, di Azure Key Vault) dan tidak pernah dikodekan secara permanen dalam aplikasi Anda atau berkomitmen untuk kontrol sumber. Microsoft Secure Future Initiative (SFI) melarang penggunaan string koneksi dan rahasia berumur panjang serupa karena dapat digunakan untuk membahayakan aplikasi Anda jika tidak dikelola dengan hati-hati.
  • Pustaka Azure Identity memperoleh dan mengelola token Microsoft Entra untuk Anda.

Penggunaan string koneksi harus terbatas pada skenario di mana autentikasi berbasis token bukan opsi, aplikasi bukti konsep awal, atau prototipe pengembangan yang tidak mengakses data produksi atau sensitif. Jika memungkinkan, gunakan jenis kredensial di pustaka Azure Identity untuk mengautentikasi ke sumber daya Azure.

Autentikasi di berbagai lingkungan

Jenis autentikasi berbasis token tertentu yang harus digunakan aplikasi untuk mengautentikasi ke sumber daya Azure bergantung pada tempat aplikasi berjalan. Diagram berikut menyediakan panduan untuk skenario dan lingkungan yang berbeda:

Diagram yang menunjukkan strategi autentikasi berbasis token yang direkomendasikan untuk aplikasi tergantung tempatnya berjalan.

Saat aplikasi:

  • Dihosting di Azure: Aplikasi harus mengautentikasi ke sumber daya Azure menggunakan identitas terkelola. Opsi ini dibahas secara lebih rinci di autentikasi untuk aplikasi yang dihosting Azure.
  • Berjalan secara lokal selama pengembangan: Aplikasi dapat mengautentikasi ke Azure menggunakan perwakilan layanan aplikasi untuk pengembangan lokal atau dengan menggunakan kredensial Azure pengembang. Setiap opsi dibahas secara lebih rinci pada autentikasi selama pengembangan lokal.
  • Dihosting secara lokal: Aplikasi harus mengautentikasi ke sumber daya Azure menggunakan perwakilan layanan aplikasi, atau identitas terkelola dalam kasus Azure Arc. Alur kerja lokal dibahas secara lebih rinci pada autentikasi untuk aplikasi yang dihosting secara lokal.

Autentikasi untuk aplikasi yang dihosting Azure

Saat aplikasi Anda dihosting di Azure, aplikasi dapat menggunakan identitas terkelola untuk mengautentikasi ke sumber daya Azure tanpa perlu mengelola kredensial apa pun. Ada dua jenis identitas terkelola: ditetapkan pengguna dan ditetapkan sistem.

Untuk menggunakan identitas terkelola yang ditetapkan pengguna

Identitas terkelola yang ditetapkan pengguna dibuat sebagai sumber daya Azure mandiri. Ini dapat ditetapkan ke satu atau beberapa sumber daya Azure, memungkinkan sumber daya tersebut berbagi identitas dan izin yang sama. Untuk mengautentikasi menggunakan identitas terkelola yang ditetapkan pengguna, buat identitas, tetapkan ke sumber daya Azure Anda, lalu konfigurasikan aplikasi Anda untuk menggunakan identitas ini untuk autentikasi dengan menentukan ID klien, ID sumber daya, atau ID objeknya.

Gunakan identitas terkelola yang ditetapkan sistem

Identitas terkelola yang ditetapkan sistem diaktifkan secara langsung pada sumber daya Azure. Identitas terkait dengan siklus hidup sumber daya tersebut dan secara otomatis dihapus saat sumber daya dihapus. Untuk mengautentikasi menggunakan identitas terkelola yang ditetapkan sistem, aktifkan identitas pada sumber daya Azure Anda lalu konfigurasikan aplikasi Anda untuk menggunakan identitas ini untuk autentikasi.

Autentikasi selama pengembangan lokal

Selama pengembangan lokal, Anda dapat mengautentikasi ke sumber daya Azure menggunakan kredensial pengembang atau perwakilan layanan Anda. Ini memungkinkan Anda menguji logika autentikasi aplikasi tanpa menyebarkannya ke Azure.

Menggunakan kredensial pengembang

Anda dapat menggunakan kredensial Azure Anda sendiri untuk mengautentikasi ke sumber daya Azure selama pengembangan lokal. Ini biasanya dilakukan menggunakan alat pengembangan, seperti Azure CLI, yang dapat memberi aplikasi Anda token yang diperlukan untuk mengakses layanan Azure. Metode ini nyaman tetapi hanya boleh digunakan untuk tujuan pengembangan.

Menggunakan perwakilan layanan

Prinsipal layanan dibuat di penyewa Microsoft Entra untuk mewakili aplikasi dan digunakan untuk autentikasi ke sumber daya Azure. Anda dapat mengonfigurasi aplikasi Anda untuk menggunakan kredensial prinsipal layanan selama pengembangan lokal. Metode ini lebih aman daripada menggunakan kredensial pengembang dan lebih dekat dengan cara aplikasi Anda mengautentikasi dalam produksi. Namun, masih kurang ideal daripada menggunakan identitas terkelola karena kebutuhan akan rahasia.

Autentikasi untuk aplikasi yang dihosting secara lokal

Untuk aplikasi yang dihosting di lokasi, Anda dapat menggunakan prinsipal layanan untuk mengautentikasi ke sumber daya Azure. Ini melibatkan pembuatan perwakilan layanan di MICROSOFT Entra ID, menetapkannya izin yang diperlukan, dan mengonfigurasi aplikasi Anda untuk menggunakan kredensialnya. Metode ini memungkinkan aplikasi lokal Anda mengakses layanan Azure dengan aman.