Identitas terkelola dari MICROSOFT Entra ID memungkinkan aplikasi kontainer Anda mengakses sumber daya yang dilindungi Microsoft Entra lainnya. Untuk informasi selengkapnya tentang identitas terkelola di ID Microsoft Entra, lihat Identitas terkelola untuk sumber daya Azure.
Aplikasi kontainer Anda dapat diberikan dua jenis identitas:
Identitas yang ditetapkan sistem terkait dengan aplikasi penampung Anda dan dihapus saat aplikasi penampung Anda dihapus. Aplikasi hanya dapat memiliki satu identitas yang ditetapkan sistem.
Identitas yang ditetapkan pengguna adalah sumber daya Azure mandiri yang dapat ditetapkan ke aplikasi penampung Anda dan sumber daya lainnya. Aplikasi kontainer dapat memiliki beberapa identitas yang ditetapkan pengguna. Identitas ada sampai Anda menghapusnya.
Mengapa menggunakan identitas terkelola?
Anda dapat menggunakan identitas terkelola di aplikasi kontainer yang sedang berjalan untuk mengautentikasi ke layanan apa pun yang mendukung autentikasi Microsoft Entra.
Dengan identitas terkelola:
Aplikasi Anda terhubung ke sumber daya dengan identitas terkelola. Anda tidak perlu mengelola kredensial di aplikasi kontainer Anda.
Anda dapat menggunakan kontrol akses berbasis peran untuk memberikan izin tertentu ke identitas terkelola.
Identitas yang ditetapkan sistem dibuat dan dikelola secara otomatis. Mereka dihapus saat aplikasi kontainer Anda dihapus.
Anda dapat menambahkan dan menghapus identitas yang ditetapkan pengguna dan menetapkannya ke beberapa sumber daya. Mereka independen dari siklus hidup aplikasi kontainer Anda.
Anda dapat menggunakan identitas terkelola untuk mengautentikasi dengan Azure Container Registry privat tanpa nama pengguna dan kata sandi untuk menarik kontainer untuk Aplikasi Kontainer Anda.
Identitas yang ditetapkan sistem adalah yang terbaik untuk beban kerja yang:
tersedia dalam satu sumber daya
butuh identitas mandiri
Identitas yang ditetapkan pengguna sangat ideal untuk beban kerja yang:
berjalan di banyak sumber daya dan dapat berbagi satu identitas
perlu pra-otorisasi ke sumber daya yang aman
Batasan
Menggunakan identitas terkelola dalam aturan skala tidak didukung. Anda masih harus menyertakan string koneksi atau kunci dalam secretRef aturan penskalaan.
Kontainer init tidak dapat mengakses identitas terkelola.
Konfigurasi identitas yang dikelola
Anda dapat mengonfigurasi identitas terkelola Anda melalui:
portal Azure
Azure CLI
template Azure Resource Manager (ARM) Anda
Saat identitas terkelola ditambahkan, dihapus, atau dimodifikasi pada aplikasi kontainer yang sedang berjalan, aplikasi tidak dimulai ulang secara otomatis dan revisi baru tidak dibuat.
Catatan
Saat menambahkan identitas terkelola ke aplikasi kontainer yang disebarkan sebelum 11 April 2022, Anda harus membuat revisi baru.
Di navigasi kiri halaman aplikasi penampung Anda, gulir ke bawah ke grup Pengaturan.
Pilih Identitas.
Dalam tab Ditetapkan oleh sistem, alihkan Status ke Aktif. Pilih Simpan.
Jalankan perintah az containerapp identity assign untuk membuat identitas yang ditetapkan sistem:
az containerapp identity assign --name myApp --resource-group myResourceGroup --system-assigned
Template ARM dapat digunakan untuk mengotomatiskan penyebaran aplikasi dan sumber daya kontainer Anda. Untuk menambahkan identitas yang ditetapkan sistem, tambahkan bagian identity ke template ARM Anda.
"identity": {
"type": "SystemAssigned"
}
Menambahkan jenis yang ditetapkan sistem memberi tahu Azure untuk membuat dan mengelola identitas untuk aplikasi Anda. Untuk contoh template ARM lengkap, lihat Spesifikasi ARM API.
Beberapa perintah Azure CLI, termasuk az containerapp create dan az containerapp job create, mendukung file YAML untuk input. Untuk menambahkan identitas yang ditetapkan sistem, tambahkan identity bagian ke file YAML Anda.
identity:
type: SystemAssigned
Menambahkan jenis yang ditetapkan sistem memberi tahu Azure untuk membuat dan mengelola identitas untuk aplikasi Anda. Untuk contoh templat YAML lengkap, lihat Spesifikasi ARM API.
Menambahkan identitas yang ditetapkan pengguna
Mengonfigurasi aplikasi kontainer dengan identitas yang ditetapkan pengguna mengharuskan Anda terlebih dahulu membuat identitas, lalu menambahkan pengidentifikasi sumber dayanya ke konfigurasi aplikasi kontainer Anda. Anda dapat membuat identitas yang ditetapkan pengguna melalui portal Azure atau Azure CLI. Untuk informasi tentang membuat dan mengelola identitas yang ditetapkan pengguna, lihat Mengelola identitas terkelola yang ditetapkan pengguna.
Ganti <IDENTITY_RESOURCE_ID> dengan properti id dari identitas. Untuk menetapkan lebih dari satu identitas yang ditetapkan pengguna, berikan daftar ID identitas yang dipisahkan spasi ke parameter --user-assigned.
Untuk menambahkan satu atau beberapa identitas yang ditetapkan pengguna, tambahkan bagian identity ke template ARM Anda. Ganti <IDENTITY1_RESOURCE_ID> dan <IDENTITY2_RESOURCE_ID> dengan pengidentifikasi sumber daya identitas yang ingin Anda tambahkan.
Tentukan setiap identitas yang ditetapkan pengguna dengan menambahkan item ke objek userAssignedIdentities dengan pengenal sumber daya identitas sebagai kunci. Gunakan objek kosong sebagai nilai.
Sebuah aplikasi dapat memiliki identitas yang ditetapkan sistem dan identitas yang ditetapkan pengguna secara bersamaan. Dalam hal ini, jenis properti akan menjadi SystemAssigned,UserAssigned.
Untuk menambahkan satu atau beberapa identitas yang ditetapkan pengguna, tambahkan identity bagian ke file konfigurasi YAML Anda. Ganti <IDENTITY1_RESOURCE_ID> dan <IDENTITY2_RESOURCE_ID> dengan pengidentifikasi sumber daya identitas yang ingin Anda tambahkan.
Tentukan setiap identitas yang ditetapkan pengguna dengan menambahkan item ke objek userAssignedIdentities dengan pengenal sumber daya identitas sebagai kunci. Gunakan objek kosong sebagai nilai.
Untuk contoh templat YAML lengkap, lihat Spesifikasi ARM API.
Catatan
Sebuah aplikasi dapat memiliki identitas yang ditetapkan sistem dan identitas yang ditetapkan pengguna secara bersamaan. Dalam hal ini, jenis properti akan menjadi SystemAssigned,UserAssigned.
Konfigurasikan sumber daya target
Untuk beberapa sumber daya, Anda harus mengonfigurasi penetapan peran untuk identitas terkelola aplikasi Anda untuk memberikan akses. Jika tidak, panggilan dari aplikasi Anda ke layanan, seperti Azure Key Vault dan Azure SQL Database, akan ditolak bahkan jika Anda menggunakan token yang valid untuk identitas tersebut. Untuk mempelajari selengkapnya tentang kontrol akses berbasis peran Azure (Azure RBAC), lihat Apa yang dimaksud dengan RBAC?. Untuk mempelajari selengkapnya tentang sumber daya mana yang mendukung token Microsoft Entra, lihat Layanan Azure yang mendukung autentikasi Microsoft Entra.
Penting
Layanan back-end untuk identitas terkelola mempertahankan cache per URI sumber daya selama sekitar 24 jam. Jika Anda memperbarui kebijakan akses sumber daya target tertentu dan segera mengambil token untuk sumber daya tersebut, Anda dapat terus mendapatkan token yang di-cache dengan izin yang sudah usang hingga token tersebut kedaluwarsa. Saat ini tidak ada cara untuk memaksa refresh token.
Sambungkan ke layanan Azure dalam kode aplikasi
Dengan identitas terkelola, aplikasi dapat memperoleh token untuk mengakses sumber daya Azure yang menggunakan ID Microsoft Entra, seperti Azure SQL Database, Azure Key Vault, dan Azure Storage. Token tersebut mewakili aplikasi yang mengakses sumber daya, dan bukan pengguna aplikasi tertentu.
Container Apps menyediakan Titik akhir REST yang dapat diakses secara internal untuk mengambil token. Titik akhir REST dapat diakses dari dalam aplikasi dengan GET HTTP standar, yang dapat diimplementasikan dengan klien HTTP generik dalam setiap bahasa. Untuk .NET, JavaScript, Java, dan Python, pustaka klien Azure Identity menyediakan abstraksi pada titik akhir REST ini. Menghubungkan ke layanan Azure lainnya semudah menambahkan objek kredensial ke klien khusus layanan.
Catatan
Saat menggunakan pustaka klien Azure Identity, id klien identitas terkelola yang ditetapkan pengguna harus ditentukan.
Untuk aplikasi .NET, cara paling sederhana untuk bekerja dengan identitas terkelola adalah melalui pustaka klien Azure Identity untuk .NET. Lihat judul dokumentasi setiap pustaka klien untuk mendapatkan informasi:
Contoh terkait menggunakan DefaultAzureCredential. Ini berguna untuk sebagian besar skenario karena pola yang sama berfungsi di Azure (dengan identitas terkelola) dan di mesin lokal Anda (tanpa identitas terkelola).
Untuk aplikasi Node.js, cara paling sederhana untuk bekerja dengan identitas terkelola adalah melalui pustaka klien Azure Identity untuk JavaScript. Lihat judul dokumentasi setiap pustaka klien untuk mendapatkan informasi:
Contoh terkait menggunakan DefaultAzureCredential. Ini berguna untuk sebagian besar skenario karena pola yang sama berfungsi di Azure (dengan identitas terkelola) dan di mesin lokal Anda (tanpa identitas terkelola).
Untuk contoh kode lainnya dari pustaka klien Azure Identity untuk JavaScript, lihat contoh Azure Identity.
Untuk aplikasi Python, cara paling sederhana untuk bekerja dengan identitas terkelola adalah melalui pustaka klien Azure Identity untuk Python. Lihat judul dokumentasi setiap pustaka klien untuk mendapatkan informasi:
Contoh terkait menggunakan DefaultAzureCredential. Ini berguna untuk sebagian besar skenario karena pola yang sama berfungsi di Azure (dengan identitas terkelola) dan di mesin lokal Anda (tanpa identitas terkelola).
Untuk aplikasi dan fungsi Java, cara paling sederhana untuk bekerja dengan identitas terkelola adalah melalui pustaka klien Azure Identity untuk Java. Lihat judul dokumentasi setiap pustaka klien untuk mendapatkan informasi:
Contoh terkait menggunakan DefaultAzureCredential. Ini berguna untuk sebagian besar skenario karena pola yang sama berfungsi di Azure (dengan identitas terkelola) dan di mesin lokal Anda (tanpa identitas terkelola).
Untuk contoh kode lainnya dari pustaka klien Azure Identity untuk Java, lihat Contoh Azure Identity.
Gunakan skrip berikut untuk mengambil token dari titik akhir lokal dengan menentukan URI sumber daya layanan Azure. Ganti tempat penampung dengan URI sumber daya untuk mendapatkan token.
Permintaan HTTP GET mentah terlihat seperti contoh berikut.
Dapatkan URL titik akhir token dari IDENTITY_ENDPOINT variabel lingkungan. x-identity-header berisi GUID yang disimpan dalam IDENTITY_HEADER variabel lingkungan.
GET http://localhost:42356/msi/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
x-identity-header: 853b9a84-5bfa-4b22-a3f3-0b9a43d9ad8a
Sebuah respon mungkin terlihat seperti contoh ini:
Respons ini sama dengan respons untuk permintaan token akses layanan-ke-layanan Microsoft Entra. Untuk mengakses Brankas Kunci, Anda kemudian akan menambahkan nilai access_token ke koneksi klien dengan brankas.
Referensi titik akhir REST
Aplikasi kontainer dengan identitas terkelola mengekspos titik akhir identitas dengan menentukan dua variabel lingkungan:
IDENTITY_ENDPOINT - URL lokal tempat aplikasi kontainer Anda dapat meminta token.
IDENTITY_HEADER - header yang digunakan untuk membantu mengurangi serangan pemalsuan permintaan sisi server (SSRF). Nilai diputar oleh platform.
Untuk mendapatkan token untuk sumber daya, buat permintaan HTTP GET ke titik akhir, termasuk parameter berikut:
Nama Parameter
Masuk
Deskripsi
sumber daya
Kueri
URI sumber daya Microsoft Entra dari sumber daya tempat token harus diperoleh. Sumber daya bisa menjadi salah satu layanan Azure yang mendukung autentikasi Microsoft Entra atau URI sumber daya lainnya.
versi-api
Kueri
Versi API token yang akan digunakan. Gunakan "2019-08-01" atau lebih baru.
X-IDENTITY-HEADER
Header
Nilai variabel lingkungan IDENTITY_HEADER. Header ini mengurangi serangan pemalsuan permintaan sisi server (SSRF).
client_id
Kueri
(Opsional) ID klien dari identitas yang ditetapkan pengguna yang akan digunakan. Tidak dapat digunakan pada permintaan yang menyertakan principal_id, mi_res_id, atau object_id. Jika semua parameter ID (client_id, principal_id, object_id, dan mi_res_id) dihilangkan, identitas yang ditetapkan sistem akan digunakan.
principal_id
Kueri
(Opsional) ID utama dari identitas yang ditetapkan pengguna yang akan digunakan. object_id adalah alias yang dapat digunakan sebagai gantinya. Tidak dapat digunakan pada permintaan yang menyertakan client_id, mi_res_id, atau object_id. Jika semua parameter ID (client_id, principal_id, object_id, dan mi_res_id) dihilangkan, identitas yang ditetapkan sistem akan digunakan.
mi_res_id
Kueri
(Opsional) ID sumber daya Azure dari identitas yang ditetapkan pengguna yang akan digunakan. Tidak dapat digunakan pada permintaan yang menyertakan principal_id, client_id, atau object_id. Jika semua parameter ID (client_id, principal_id, object_id, dan mi_res_id) dihilangkan, identitas yang ditetapkan sistem akan digunakan.
Penting
Jika Anda mencoba mendapatkan token untuk identitas yang ditetapkan pengguna, Anda harus menyertakan salah satu properti opsional. Jika tidak, layanan token akan berusaha mendapatkan token untuk identitas yang ditetapkan sistem, yang mungkin ada atau tidak ada.
Menampilkan identitas terkelola
Anda dapat menampilkan identitas terkelola yang ditetapkan sistem dan ditetapkan pengguna menggunakan perintah Azure CLI berikut. Output menunjukkan jenis identitas terkelola, ID penyewa, dan ID utama dari semua identitas terkelola yang ditetapkan ke aplikasi kontainer Anda.
az containerapp identity show --name <APP_NAME> --resource-group <GROUP_NAME>
Menghapus identitas terkelola
Saat Anda menghapus identitas yang ditetapkan sistem, identitas tersebut akan dihapus dari ID Microsoft Entra. Identitas yang ditetapkan sistem juga secara otomatis dihapus dari ID Microsoft Entra saat Anda menghapus sumber daya aplikasi kontainer itu sendiri. Menghapus identitas terkelola yang ditetapkan pengguna dari aplikasi kontainer Anda tidak menghapusnya dari ID Microsoft Entra.