Menyambungkan dari aplikasi Anda ke sumber daya tanpa menangani info masuk
Sumber daya Azure dengan dukungan identitas terkelola selalu menyediakan opsi untuk menentukan identitas terkelola untuk tersambung ke sumber daya Azure yang mendukung autentikasi Microsoft Entra. Dukungan identitas terkelola membuatnya tidak perlu bagi pengembang untuk mengelola kredensial dalam kode. Identitas terkelola adalah opsi autentikasi yang direkomendasikan saat bekerja dengan sumber daya Azure yang mendukungnya. Baca gambaran umum dari identitas terkelola.
Halaman ini menunjukkan cara mengonfigurasi App Service sehingga dapat tersambung ke Azure Key Vault, Azure Storage, dan Microsoft SQL Server. Prinsip yang sama dapat digunakan untuk sumber daya Azure apa pun yang mendukung identitas terkelola dan yang akan terhubung ke sumber daya yang mendukung autentikasi Microsoft Entra.
Sampel kode menggunakan pustaka klien Azure Identity, yang merupakan metode yang direkomendasikan karena secara otomatis menangani banyak langkah untuk Anda, termasuk memperoleh token akses yang digunakan dalam koneksi.
Sumber daya apa yang dapat disambungkan dengan identitas terkelola?
Identitas terkelola dapat tersambung ke sumber daya apa pun yang mendukung autentikasi Microsoft Entra. Secara umum, tidak ada dukungan khusus yang diperlukan untuk sumber daya untuk memungkinkan identitas terkelola terhubung ke sana.
Beberapa sumber daya tidak mendukung autentikasi Microsoft Entra, atau pustaka klien mereka tidak mendukung autentikasi dengan token. Terus baca untuk melihat panduan kami tentang cara menggunakan identitas Terkelola untuk mengakses kredensial dengan aman tanpa perlu menyimpannya dalam kode atau konfigurasi aplikasi Anda.
Membuat identitas terkelola
Ada dua jenis identitas terkelola: ditetapkan sistem dan ditetapkan pengguna. Identitas yang ditetapkan sistem langsung ditautkan ke satu sumber daya Azure. Saat sumber daya Azure dihapus, begitu juga identitasnya. Identitas terkelola yang ditetapkan pengguna dapat dikaitkan dengan beberapa sumber daya Azure, dan siklus hidupnya tidak bergantung pada sumber daya tersebut.
Artikel ini akan menjelaskan cara membuat dan mengonfigurasi identitas terkelola yang ditetapkan pengguna, yang direkomendasikan untuk sebagian besar skenario. Jika sumber daya sumber yang Anda gunakan tidak mendukung identitas terkelola yang ditetapkan pengguna, maka Anda harus merujuk ke dokumentasi penyedia sumber daya tersebut untuk mempelajari cara mengonfigurasinya agar memiliki identitas terkelola yang ditetapkan sistem.
Membuat identitas terkelola yang ditetapkan pengguna
Catatan
Anda akan memerlukan peran seperti "Kontributor Identitas Terkelola" untuk membuat identitas terkelola baru yang ditetapkan pengguna.
- Cari "Identitas Terkelola" dari bilah pencarian di bagian atas Portal dan pilih hasil yang cocok.
- Pilih tombol "Buat".
- Pilih Grup langganan dan Sumber Daya, dan masukkan nama untuk Identitas terkelola.
Pilih "Tinjau + buat" untuk menjalankan pengujian validasi, lalu pilih tombol "Buat".
Ketika identitas telah dibuat, layar konfirmasi akan muncul.
Anda sekarang memiliki identitas yang dapat dikaitkan dengan sumber daya sumber Azure. Baca selengkapnya tentang mengelola identitas terkelola yang ditetapkan pengguna..
Mengonfigurasi sumber daya sumber Anda untuk menggunakan identitas terkelola yang ditetapkan pengguna
Ikuti langkah-langkah ini untuk mengonfigurasi sumber daya Azure Anda agar memiliki identitas terkelola melalui Portal. Lihat dokumentasi untuk jenis sumber daya tertentu untuk mempelajari cara mengonfigurasi identitas sumber daya menggunakan Antarmuka Baris Perintah, PowerShell, atau templat ARM.
Catatan
Anda memerlukan izin "Tulis" untuk mengonfigurasi sumber daya Azure agar memiliki identitas yang ditetapkan sistem. Anda akan memerlukan peran seperti "Operator Identitas Terkelola" untuk mengaitkan identitas yang ditetapkan pengguna dengan sumber daya Azure.
- Temukan sumber daya menggunakan bilah pencarian di bagian atas Portal
- Pilih tautan Identitas di navigasi
Pilih tab "Ditetapkan pengguna"
Pilih tombol "Tambahkan"
- Pilih identitas yang ditetapkan pengguna yang Anda buat sebelumnya dan pilih "Tambahkan"
- Identitas akan dikaitkan dengan sumber daya, dan daftar akan diperbarui.
Sumber daya sumber Anda sekarang memiliki identitas yang ditetapkan pengguna yang dapat digunakan untuk menyambungkan ke sumber daya target.
Menambahkan izin ke identitas
Catatan
Anda akan memerlukan peran seperti "Administrator Akses Pengguna" atau "Pemilik" untuk sumber daya target guna menambahkan penetapan Peran. Pastikan Anda memberikan hak istimewa paling sedikit yang diperlukan agar aplikasi dapat berjalan.
Sekarang App Service Anda memiliki identitas terkelola, Anda harus memberikan identitas izin yang benar. Saat menggunakan identitas ini untuk berinteraksi dengan Azure Storage, Anda akan menggunakan sistem Azure Role Based Access Control (RBAC).
- Temukan sumber daya yang ingin Anda sambungkan menggunakan bilah pencarian di bagian atas Portal
- Pilih tautan "Access Control (IAM)" di navigasi sebelah kiri.
- Pilih tombol "Tambahkan" di dekat bagian atas layar dan pilih "Tambahkan penetapan peran".
- Daftar Peran akan ditampilkan. Anda dapat melihat izin tertentu yang dimiliki peran dengan memilih tautan "Lihat". Pilih peran yang ingin Anda berikan ke identitas dan pilih tombol "Berikutnya".
- Anda akan diminta untuk memilih kepada siapa peran tersebut harus diberikan. Pilih opsi "Identitas terkelola" lalu tautan "Tambahkan anggota".
- Panel konteks akan muncul di sebelah kanan tempat Anda bisa mencari berdasarkan jenis identitas terkelola. Pilih "Identitas terkelola yang ditetapkan pengguna" dari opsi "Identitas terkelola".
- Pilih identitas yang Anda buat sebelumnya dan tombol "Pilih". Panel konteks akan ditutup, dan identitas akan ditambahkan ke daftar.
- Pilih tombol "Tinjau + tetapkan" untuk melihat ringkasan penetapan peran, lalu sekali lagi untuk mengonfirmasi.
- Pilih opsi "Penetapan peran", dan daftar penetapan peran untuk sumber daya akan ditampilkan.
Identitas terkelola Anda sekarang memiliki izin yang benar untuk mengakses sumber daya target Azure. Baca selengkapnya tentang Kontrol Akses Berbasis Peran Azure.
Menggunakan identitas terkelola dalam kode Anda
App Service Anda sekarang memiliki identitas terkelola dengan izin. Anda dapat menggunakan identitas terkelola dalam kode Anda untuk berinteraksi dengan sumber daya target, alih-alih menyimpan kredensial dalam kode Anda.
Metode yang disarankan adalah menggunakan pustaka Azure Identity untuk bahasa pemrograman pilihan Anda. Bahasa yang didukung termasuk .NET, Java, JavaScript, Python, Go, dan C++. Pustaka memperoleh token akses untuk Anda, sehingga mudah untuk terhubung ke sumber daya target.
Menggunakan pustaka Azure Identity di lingkungan pengembangan Anda
Kecuali untuk pustaka C++, pustaka Azure Identity mendukung jenis DefaultAzureCredential
. DefaultAzureCredential
secara otomatis mencoba mengautentikasi melalui beberapa mekanisme, termasuk variabel lingkungan atau masuk interaktif. Jenis info masuk dapat digunakan di lingkungan pengembangan Anda menggunakan kredensial Anda sendiri. Ini juga dapat digunakan di lingkungan Azure produksi Anda menggunakan identitas terkelola. Tidak ada perubahan kode yang diperlukan saat Anda menyebarkan aplikasi Anda.
Jika Anda menggunakan identitas terkelola yang ditetapkan pengguna, Anda juga harus secara eksplisit menentukan identitas terkelola yang ditetapkan pengguna yang ingin Anda autentikasi dengan meneruskan ID klien identitas sebagai parameter. Anda dapat mengambil ID klien dengan menelusuri identitas di Portal.
Baca selengkapnya tentang pustaka Azure Identity di bawah ini:
- Pustaka Azure Identity untuk .NET
- Pustaka Azure Identity untuk Java
- Pustaka Azure Identity untuk JavaScript
- Pustaka Azure Identity untuk Python
- Pustaka Azure Identity untuk Go
- Pustaka Azure Identity untuk C++
Mengakses Blob di Azure Storage
using Azure.Identity;
using Azure.Storage.Blobs;
// code omitted for brevity
// Specify the Client ID if using user-assigned managed identities
var clientID = Environment.GetEnvironmentVariable("Managed_Identity_Client_ID");
var credentialOptions = new DefaultAzureCredentialOptions
{
ManagedIdentityClientId = clientID
};
var credential = new DefaultAzureCredential(credentialOptions);
var blobServiceClient1 = new BlobServiceClient(new Uri("<URI of Storage account>"), credential);
BlobContainerClient containerClient1 = blobServiceClient1.GetBlobContainerClient("<name of blob>");
BlobClient blobClient1 = containerClient1.GetBlobClient("<name of file>");
if (blobClient1.Exists())
{
var downloadedBlob = blobClient1.Download();
string blobContents = downloadedBlob.Value.Content.ToString();
}
Mengakses rahasia yang disimpan di Azure Key Vault
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Azure.Core;
// code omitted for brevity
// Specify the Client ID if using user-assigned managed identities
var clientID = Environment.GetEnvironmentVariable("Managed_Identity_Client_ID");
var credentialOptions = new DefaultAzureCredentialOptions
{
ManagedIdentityClientId = clientID
};
var credential = new DefaultAzureCredential(credentialOptions);
var client = new SecretClient(
new Uri("https://<your-unique-key-vault-name>.vault.azure.net/"),
credential);
KeyVaultSecret secret = client.GetSecret("<my secret>");
string secretValue = secret.Value;
Mengakses Azure SQL Database
using Azure.Identity;
using Microsoft.Data.SqlClient;
// code omitted for brevity
// Specify the Client ID if using user-assigned managed identities
var clientID = Environment.GetEnvironmentVariable("Managed_Identity_Client_ID");
var credentialOptions = new DefaultAzureCredentialOptions
{
ManagedIdentityClientId = clientID
};
AccessToken accessToken = await new DefaultAzureCredential(credentialOptions).GetTokenAsync(
new TokenRequestContext(new string[] { "https://database.windows.net//.default" }));
using var connection = new SqlConnection("Server=<DB Server>; Database=<DB Name>;")
{
AccessToken = accessToken.Token
};
var cmd = new SqlCommand("select top 1 ColumnName from TableName", connection);
await connection.OpenAsync();
SqlDataReader dr = cmd.ExecuteReader();
while(dr.Read())
{
Console.WriteLine(dr.GetValue(0).ToString());
}
dr.Close();
Koneksi ke sumber daya yang tidak mendukung ID Microsoft Entra atau autentikasi berbasis token di pustaka
Beberapa sumber daya Azure belum mendukung autentikasi Microsoft Entra, atau pustaka klien mereka tidak mendukung autentikasi dengan token. Biasanya sumber daya ini adalah teknologi sumber terbuka yang mengharapkan nama pengguna dan kata sandi atau kunci akses dalam string koneksi.
Untuk menghindari penyimpanan kredensial dalam kode atau konfigurasi aplikasi, Anda dapat menyimpan kredensial sebagai rahasia di Azure Key Vault. Dengan menggunakan contoh yang ditampilkan di atas, Anda dapat mengambil rahasia dari Azure KeyVault menggunakan identitas terkelola, dan meneruskan kredensial ke dalam string koneksi Anda. Pendekatan ini berarti bahwa tidak ada kredensial yang perlu ditangani langsung di kode atau lingkungan Anda.
Panduan jika Anda menangani token secara langsung
Dalam beberapa skenario, Anda mungkin ingin memperoleh token untuk identitas terkelola secara manual alih-alih menggunakan metode bawaan untuk terhubung ke sumber daya target. Skenario ini tidak mencakup pustaka klien untuk bahasa pemrograman yang Anda gunakan atau sumber daya target yang Anda sambungkan, atau menyambungkan ke sumber daya yang tidak berjalan di Azure. Saat memperoleh token secara manual, kami memberikan panduan berikut:
Cache token yang Anda peroleh
Untuk performa dan keandalan, sebaiknya aplikasi Anda menyimpan token dalam memori lokal, atau dienkripsi jika Anda ingin menyimpannya ke disk. Karena token identitas terkelola berlaku selama 24 jam, tidak ada manfaat dalam meminta token baru secara teratur, karena yang di-cache akan dikembalikan dari titik akhir penerbitan token. Jika Anda melebihi batas permintaan, Anda akan dibatasi tarifnya dan menerima kesalahan HTTP 429.
Ketika Anda memperoleh token, Anda dapat mengatur cache token Anda kedaluwarsa 5 menit sebelum expires_on
(atau properti yang setara) yang akan dikembalikan saat token dibuat.
Inspeksi token
Aplikasi Anda tidak boleh mengandalkan konten token. Konten token hanya ditujukan untuk audiens (sumber daya target) yang sedang diakses, bukan klien yang meminta token. Konten token dapat berubah atau dienkripsi di masa mendatang.
Jangan mengekspos atau memindahkan token
Token harus diperlakukan seperti kredensial. Jangan mengeksposnya kepada pengguna atau layanan lain; misalnya, solusi pengelogan/pemantauan. Mereka tidak boleh dipindahkan dari sumber daya sumber yang menggunakannya, selain untuk mengautentikasi terhadap sumber daya target.
Langkah berikutnya
- Cara menggunakan identitas terkelola untuk App Service dan Azure Functions
- Cara menggunakan identitas terkelola dengan Azure Container Instances
- Mengimplementasikan Identitas terkelola untuk Sumber Daya Microsoft Azure
- Menggunakan federasi identitas beban kerja untuk identitas terkelola untuk mengakses sumber daya yang dilindungi Microsoft Entra tanpa mengelola rahasia