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.
Pendekatan yang disarankan untuk mengautentikasi aplikasi yang dihosting Azure ke sumber daya Azure lainnya adalah dengan menggunakan identitas managed. Pendekatan ini didukung untuk sebagian besar layanan Azure, termasuk aplikasi yang dihosting di Azure App Service, Azure Container Apps, dan Azure Virtual Machines. Temukan selengkapnya tentang berbagai teknik dan pendekatan autentikasi pada halaman gambaran umum autentikasi. Di bagian depan, Anda akan mempelajari:
- Konsep identitas terkelola yang penting
- Cara membuat identitas terkelola yang ditetapkan sistem untuk aplikasi Anda
- Cara menetapkan peran pada identitas terkelola yang ditetapkan oleh sistem
- Cara mengautentikasi menggunakan identitas terkelola yang ditetapkan sistem dari kode aplikasi Anda
Konsep identitas terkelola yang penting
Identitas terkelola memungkinkan aplikasi Anda terhubung dengan aman ke sumber daya Azure lain tanpa menggunakan kunci rahasia atau rahasia aplikasi lainnya. Secara internal, Azure melacak identitas dan sumber daya mana yang diizinkan untuk disambungkan. Azure menggunakan informasi ini untuk mendapatkan token Microsoft Entra secara otomatis agar aplikasi dapat terhubung ke sumber daya Azure lainnya.
Ada dua jenis identitas terkelola yang perlu dipertimbangkan saat mengonfigurasi aplikasi yang dihosting:
- Identitas terkelola yang ditetapkan oleh sistem diaktifkan langsung pada sumber daya Azure dan terkait erat dengan siklus hidup sumber daya tersebut. Saat sumber daya dihapus, Azure secara otomatis menghapus identitas untuk Anda. Identitas yang ditetapkan sistem memberikan pendekatan minimalis untuk menggunakan identitas terkelola.
- Identitas terkelola yang ditetapkan pengguna dibuat sebagai sumber daya Azure mandiri dan menawarkan fleksibilitas dan kemampuan yang lebih besar. Mereka ideal untuk solusi yang melibatkan beberapa sumber daya Azure yang perlu berbagi identitas dan izin yang sama. Misalnya, jika beberapa komputer virtual perlu mengakses set sumber daya Azure yang sama, identitas terkelola yang ditetapkan pengguna memberikan penggunaan kembali dan manajemen yang dioptimalkan.
Petunjuk / Saran
Pelajari selengkapnya tentang memilih dan mengelola identitas terkelola yang ditetapkan sistem dan ditetapkan pengguna di artikel Rekomendasi praktik terbaik identitas terkelola .
Bagian berikut menjelaskan langkah-langkah untuk mengaktifkan dan menggunakan identitas terkelola yang ditetapkan sistem untuk aplikasi yang dihosting Azure. Jika Anda perlu menggunakan identitas terkelola yang ditetapkan pengguna, kunjungi artikel identitas terkelola yang ditetapkan pengguna untuk informasi selengkapnya.
Mengaktifkan identitas terkelola yang ditetapkan sistem pada sumber daya hosting Azure
Untuk mulai menggunakan identitas terkelola yang ditetapkan sistem dengan aplikasi Anda, aktifkan identitas pada sumber daya Azure yang menghosting aplikasi Anda, seperti instans Azure App Service, Azure Container Apps, atau Azure Virtual Machines.
Anda dapat mengaktifkan identitas terkelola yang ditetapkan sistem untuk sumber daya Azure menggunakan portal Azure atau Azure CLI.
Di portal Azure, navigasikan ke sumber daya yang menghosting kode aplikasi Anda, seperti instans Azure App Service atau Azure Container Apps.
Dari halaman Gambaran Umum sumber daya, perluas Pengaturan dan pilih Identitas dari Navigasi.
Pada halaman Identitas, alihkan penggeser Status ke Di.
Pilih Simpan untuk menerapkan perubahan Anda.
Menetapkan peran kepada identitas terkelola
Selanjutnya, tentukan peran mana yang dibutuhkan aplikasi Anda dan tetapkan peran tersebut ke identitas terkelola. Anda dapat menetapkan peran ke identitas terkelola dalam lingkup berikut:
- Resource: Peran yang ditetapkan hanya berlaku untuk sumber daya tertentu tersebut.
- Grup sumber daya: Peran yang ditetapkan berlaku untuk semua sumber daya yang terkandung dalam grup sumber daya.
- Langganan: Peran yang ditetapkan berlaku untuk semua sumber daya yang terkandung dalam langganan.
Contoh berikut menunjukkan cara menetapkan peran di cakupan grup sumber daya, karena banyak aplikasi mengelola semua sumber daya Azure terkait menggunakan satu grup sumber daya.
Akses ke halaman Gambaran Umum grup sumber daya yang berisi aplikasi dengan identitas terkelola yang ditetapkan sistem.
Pilih kontrol akses (IAM) di navigasi kiri.
Pada halaman Kontrol akses (IAM), pilih + Tambahkan di menu atas lalu pilih Tambahkan penetapan peran untuk menavigasi ke halaman Tambahkan penetapan peran.
Halaman Tambahkan penugasan peran menyajikan alur kerja bertahap dengan tab untuk menetapkan peran pada identitas. Pada tab Peran awal, gunakan kotak pencarian di bagian atas untuk menemukan peran yang ingin Anda tetapkan ke identitas.
Pilih peran dari hasil pencarian dan kemudian pilih Berikutnya untuk pindah ke tab Anggota.
Untuk opsi Tetapkan akses ke, pilihlah Identitas yang dikelola.
Untuk opsi Anggota , pilih + Pilih anggota untuk membuka panel Pilih identitas terkelola .
Pada panel Pilih identitas terkelola, gunakan dropdown Langganan dan dropdown Identitas terkelola untuk memfilter hasil pencarian identitas Anda. Gunakan kotak pencarian Select untuk menemukan identitas sistem yang Anda aktifkan untuk sumber daya Azure yang menghosting aplikasi Anda.
Pilih identitas dan pilih Pilih di bagian bawah panel untuk melanjutkan.
Pilih Tinjau + berikan tugas di bagian bawah halaman.
Pada tab akhir Tinjau + tetapkan , pilih Tinjau + tetapkan untuk menyelesaikan alur kerja.
Mengautentikasi ke layanan Azure dari aplikasi Anda
Pustaka Identitas Azure menyediakan berbagai kredensial—implementasi yang diadaptasi untuk mendukung berbagai skenario dan alur autentikasi Microsoft Entra. Karena identitas terkelola tidak tersedia saat berjalan secara lokal, langkah-langkah di depan menunjukkan kredensial mana yang akan digunakan dalam skenario mana:
-
Lingkungan pengembangan lokal: Selama hanya pengembangan lokal, gunakan kelas bernama DefaultAzureCredential untuk rantai kredensial yang disesuaikan dan sudah dikonfigurasi sebelumnya.
DefaultAzureCredentialmenemukan kredensial pengguna dari alat atau IDE lokal Anda, seperti Azure CLI atau Visual Studio. Ini juga memberikan fleksibilitas dan kenyamanan untuk percobaan ulang, waktu tunggu untuk respons, dan dukungan untuk beberapa opsi autentikasi. Kunjungi artikel Mengautentikasi ke layanan Azure selama pengembangan lokal untuk informasi lebih lanjut. - aplikasi yang dihosting Azure: Saat aplikasi Anda berjalan di Azure, gunakan ManagedIdentityCredential untuk menemukan identitas terkelola yang dikonfigurasi dengan aman untuk aplikasi Anda. Menentukan jenis kredensial yang tepat ini mencegah kredensial lain yang tersedia diambil secara tak terduga.
Menerapkan kode
Tambahkan paket azure-identity-cpp ke aplikasi Anda menggunakan vcpkg.
Di terminal pilihan Anda, navigasikan ke direktori proyek aplikasi dan jalankan perintah berikut:
vcpkg add port azure-identity-cppTambahkan yang berikut ini di file CMake Anda:
find_package(azure-identity-cpp CONFIG REQUIRED) target_link_libraries(<your project name> PRIVATE Azure::azure-identity)layanan Azure diakses menggunakan klien khusus dari berbagai pustaka klien Azure SDK. Untuk kode C++ apa pun yang membuat instans klien Azure SDK di aplikasi Anda, Anda perlu:
- Sertakan
azure/identity.hppheader. - Buat sebuah instance
DefaultAzureCredential. - Teruskan instans
DefaultAzureCredentialke konstruktor klien Azure SDK. - Atur
AZURE_TOKEN_CREDENTIALSvariabel lingkungan keManagedIdentityCredentialuntuk memastikan bahwaDefaultAzureCredentialmenggunakan kredensial identitas terkelola. Praktik ini membuat autentikasi lebih mudah diprediksi dan lebih mudah di-debug saat disebarkan ke Azure. Untuk informasi selengkapnya, lihat Menggunakan kredensial tertentu.
Contoh langkah-langkah ini ditampilkan di segmen kode berikut dengan klien Blob Azure Storage.
#include <azure/identity.hpp> #include <azure/storage/blobs.hpp> #include <iostream> #include <memory> int main() { try { // Create a credential auto credential = std::make_shared<Azure::Identity::DefaultAzureCredential>(true); // Create a client for the specified storage account std::string accountUrl = "https://<replace_with_your_storage_account_name>.blob.core.windows.net/"; Azure::Storage::Blobs::BlobServiceClient blobServiceClient(accountUrl, credential); // Get a reference to a container std::string containerName = "sample-container"; auto containerClient = blobServiceClient.GetBlobContainerClient(containerName); // Get a reference to a blob std::string blobName = "sample-blob"; auto blobClient = containerClient.GetBlobClient(blobName); // TODO: perform some action with the blob client // auto downloadResult = blobClient.DownloadTo("path/to/local/file"); std::cout << "Successfully authenticated and created Azure clients." << std::endl; } catch (const std::exception& ex) { std::cout << "Exception: " << ex.what() << std::endl; return 1; } return 0; }- Sertakan
Seperti yang dibahas dalam artikel Azure SDK untuk ikhtisar autentikasi C++, DefaultAzureCredential mendukung beberapa metode autentikasi dan menentukan metode autentikasi yang digunakan saat runtime. Manfaat dari pendekatan ini adalah aplikasi Anda dapat menggunakan metode autentikasi yang berbeda di lingkungan yang berbeda tanpa menerapkan kode khusus lingkungan. Saat kode sebelumnya dijalankan di stasiun kerja Anda selama pengembangan lokal, DefaultAzureCredential menggunakan prinsipal layanan aplikasi, sebagaimana ditentukan oleh pengaturan lingkungan, atau dengan kredensial alat pengembang untuk mengautentikasi dengan sumber daya Azure lainnya. Dengan demikian, kode yang sama dapat digunakan untuk mengautentikasi aplikasi Anda ke sumber daya Azure selama pengembangan lokal dan saat disebarkan ke Azure.
Penting
DefaultAzureCredential menyederhanakan autentikasi sambil mengembangkan aplikasi yang disebarkan ke Azure dengan menggabungkan kredensial yang digunakan di lingkungan hosting Azure dan kredensial yang digunakan dalam pengembangan lokal. Dalam produksi, lebih baik menggunakan jenis kredensial tertentu sehingga autentikasi lebih dapat diprediksi dan lebih mudah di-debug.
Alternatif untuk DefaultAzureCredential adalah menggunakan ManagedIdentityCredential. Langkah-langkah untuk menggunakan ManagedIdentityCredential sama seperti untuk menggunakan jenis .DefaultAzureCredential
Contoh langkah-langkah ini ditampilkan di segmen kode berikut dengan klien Blob Azure Storage.
#include <azure/identity.hpp>
#include <azure/storage/blobs.hpp>
#include <iostream>
#include <memory>
int main() {
try {
// Create a system-assigned managed identity credential
auto credential = std::make_shared<Azure::Identity::ManagedIdentityCredential>();
// Create a client for the specified storage account
std::string accountUrl = "https://<replace_with_your_storage_account_name>.blob.core.windows.net/";
Azure::Storage::Blobs::BlobServiceClient blobServiceClient(accountUrl, credential);
// Get a reference to a container
std::string containerName = "sample-container";
auto containerClient = blobServiceClient.GetBlobContainerClient(containerName);
// Get a reference to a blob
std::string blobName = "sample-blob";
auto blobClient = containerClient.GetBlobClient(blobName);
// TODO: perform some action with the blob client
// auto downloadResult = blobClient.DownloadTo("path/to/local/file");
std::cout << "Successfully authenticated using system-assigned managed identity." << std::endl;
} catch (const std::exception& ex) {
std::cout << "Exception: " << ex.what() << std::endl;
return 1;
}
return 0;
}