Bagikan melalui


Identitas terkelola di Azure Container Apps

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 Anda tetapkan ke aplikasi kontainer dan sumber daya lainnya. Aplikasi kontainer dapat memiliki beberapa identitas yang ditetapkan pengguna. Identitas yang ditetapkan pengguna ada hingga 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.
  • Anda dapat menggunakan identitas terkelola untuk membuat koneksi untuk aplikasi yang mendukung Dapr melalui komponen Dapr

Kasus penggunaan umum

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

Kontainer init tidak dapat mengakses identitas terkelola di lingkungan khusus konsumsi dan lingkungan profil beban kerja khusus

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.

Tambahkan identitas yang ditetapkan sistem

  1. Buka aplikasi kontainer Anda di portal Azure.

  2. Dari grup Pengaturan , pilih Identitas.

  3. Dalam tab Ditetapkan oleh sistem, alihkan Status ke Aktif.

  4. Pilih Simpan.

Cuplikan layar identitas yang ditetapkan sistem.

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.

Pertama, Anda harus membuat sumber daya identitas yang ditetapkan pengguna.

  1. Buat sumber daya identitas terkelola yang ditetapkan pengguna sesuai dengan langkah-langkah yang ditemukan di Mengelola identitas terkelola yang ditetapkan pengguna.

  2. Buka aplikasi kontainer Anda di portal Azure.

  3. Dari grup Pengaturan , pilih Identitas.

  4. Pada tab Ditetapkan pengguna, pilih Tambahkan.

  5. Cari dan pilih identitas yang Anda buat sebelumnya.

  6. Pilih Tambahkan.

Cuplikan layar identitas yang ditetapkan pengguna.

Konfigurasikan sumber daya target

Untuk beberapa sumber daya, Anda perlu 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, ditolak bahkan saat 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. Memaksa refresh token tidak didukung.

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 tersedia dari dalam aplikasi dengan permintaan HTTP GET standar, yang dapat Anda kirim dengan klien HTTP generik dalam bahasa pilihan Anda. Untuk .NET, JavaScript, Java, dan Python, pustaka klien Azure Identity menyediakan abstraksi pada titik akhir REST ini. Anda dapat menyambungkan ke layanan Azure lainnya dengan menambahkan objek kredensial ke klien khusus layanan.

Catatan

Saat menggunakan pustaka klien Azure Identity, Anda perlu secara eksplisit menentukan ID klien identitas terkelola yang ditetapkan pengguna.

Catatan

Saat menyambungkan ke sumber data Azure SQL dengan Entity Framework Core, pertimbangkan untuk menggunakan Microsoft.Data.SqlClient, yang menyediakan string koneksi khusus untuk konektivitas identitas terkelola.

Untuk aplikasi .NET, cara paling sederhana untuk bekerja dengan identitas terkelola adalah melalui pustaka klien Azure Identity untuk .NET. Lihat sumber daya berikut ini untuk informasi selengkapnya:

Contoh terkait menggunakan DefaultAzureCredential. Objek ini efektif dalam sebagian besar skenario karena pola yang sama berfungsi di Azure (dengan identitas terkelola) dan pada komputer lokal Anda (tanpa identitas terkelola).

Menggunakan identitas terkelola untuk aturan skala

Anda dapat menggunakan identitas terkelola dalam aturan skala Anda untuk mengautentikasi dengan layanan Azure yang mendukung identitas terkelola. Untuk menggunakan identitas terkelola dalam aturan skala Anda, gunakan identity properti alih-alih auth properti dalam aturan skala Anda. Nilai yang dapat diterima untuk identity properti adalah ID sumber daya Azure dari identitas yang ditetapkan pengguna, atau system untuk menggunakan identitas yang ditetapkan sistem.

Catatan

Autentikasi identitas terkelola dalam aturan skala berada dalam pratinjau publik. Ini tersedia dalam versi 2024-02-02-previewAPI .

Contoh templat ARM berikut menunjukkan cara menggunakan identitas terkelola dengan aturan skala Azure Queue Storage:

Akun penyimpanan antrean menggunakan accountName properti untuk mengidentifikasi akun penyimpanan, sementara identity properti menentukan identitas terkelola mana yang akan digunakan. Anda tidak perlu menggunakan auth properti .

"scale": {
    "minReplicas": 1,
    "maxReplicas": 10,
    "rules": [{
        "name": "myQueueRule",
        "azureQueue": {
            "accountName": "mystorageaccount",
            "queueName": "myqueue",
            "queueLength": 2,
            "identity": "<IDENTITY1_RESOURCE_ID>"
        }
    }]
}

Untuk mempelajari selengkapnya tentang menggunakan identitas terkelola dengan aturan skala, lihat Mengatur aturan penskalakan di Azure Container Apps.

Mengontrol ketersediaan identitas terkelola

Container Apps memungkinkan Anda menentukan kontainer init dan kontainer utama. Secara default, kontainer utama dan init dalam lingkungan profil beban kerja konsumsi dapat menggunakan identitas terkelola untuk mengakses layanan Azure lainnya. Di lingkungan khusus konsumsi dan lingkungan profil beban kerja khusus, hanya kontainer utama yang dapat menggunakan identitas terkelola. Token akses identitas terkelola tersedia untuk setiap identitas terkelola yang dikonfigurasi pada aplikasi kontainer. Namun, dalam beberapa situasi hanya kontainer init atau kontainer utama yang memerlukan token akses untuk identitas terkelola. Di lain waktu, Anda dapat menggunakan identitas terkelola hanya untuk mengakses Azure Container Registry Anda untuk menarik gambar kontainer, dan aplikasi Anda sendiri tidak perlu memiliki akses ke Azure Container Registry Anda.

Mulai versi 2024-02-02-previewAPI , Anda dapat mengontrol identitas terkelola mana yang tersedia untuk aplikasi kontainer Anda selama fase init dan utama untuk mengikuti prinsip keamanan dengan hak istimewa paling sedikit. Pilihan berikut tersedia:

  • Init: Hanya tersedia untuk kontainer init. Gunakan ini saat Anda ingin melakukan beberapa pekerjaan inisialisasi yang memerlukan identitas terkelola, tetapi Anda tidak lagi memerlukan identitas terkelola dalam kontainer utama. Opsi ini saat ini hanya didukung di lingkungan konsumsi profil beban kerja
  • Main: Hanya tersedia untuk kontainer utama. Gunakan ini jika kontainer init Anda tidak memerlukan identitas terkelola.
  • All: Tersedia untuk semua kontainer. Nilai ini adalah pengaturan default.
  • None: Tidak tersedia untuk kontainer apa pun. Gunakan ini ketika Anda memiliki identitas terkelola yang hanya digunakan untuk penarikan gambar ACR, aturan skala, atau rahasia Key Vault dan tidak perlu tersedia untuk kode yang berjalan di kontainer Anda.

Contoh templat ARM berikut menunjukkan cara mengonfigurasi aplikasi kontainer pada lingkungan konsumsi profil beban kerja yang:

  • Membatasi identitas yang ditetapkan sistem aplikasi kontainer hanya untuk kontainer utama.
  • Membatasi identitas tertentu yang ditetapkan pengguna hanya untuk kontainer init.
  • Menggunakan identitas tertentu yang ditetapkan pengguna untuk penarikan gambar Azure Container Registry tanpa mengizinkan kode dalam kontainer menggunakan identitas terkelola tersebut untuk mengakses registri. Dalam contoh ini, kontainer itu sendiri tidak perlu mengakses registri.

Pendekatan ini membatasi sumber daya yang dapat diakses jika aktor jahat mendapatkan akses tidak sah ke kontainer.

{
    "location": "eastus2",
    "identity":{
    "type": "SystemAssigned, UserAssigned",
        "userAssignedIdentities": {
            "<IDENTITY1_RESOURCE_ID>":{},
            "<ACR_IMAGEPULL_IDENTITY_RESOURCE_ID>":{}
         }
     },
    "properties": {
        "workloadProfileName":"Consumption",
        "environmentId": "<CONTAINER_APPS_ENVIRONMENT_ID>",
        "configuration": {
            "registries": [
            {
                "server": "myregistry.azurecr.io",
                "identity": "ACR_IMAGEPULL_IDENTITY_RESOURCE_ID"
            }],
            "identitySettings":[
            {
                "identity": "ACR_IMAGEPULL_IDENTITY_RESOURCE_ID",
                "lifecycle": "None"
            },
            {
                "identity": "<IDENTITY1_RESOURCE_ID>",
                "lifecycle": "Init"
            },
            {
                "identity": "system",
                "lifecycle": "Main"
            }]
        },
        "template": {
            "containers":[
                {
                    "image":"myregistry.azurecr.io/main:1.0",
                    "name":"app-main"
                }
            ],
            "initContainers":[
                {
                    "image":"myregistry.azurecr.io/init:1.0",
                    "name":"app-init",
                }
            ]
        }
    }
}

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.

  1. Di navigasi kiri halaman aplikasi Anda, gulir ke bawah ke grup Pengaturan.

  2. Pilih Identitas. Kemudian ikuti langkah-langkah berdasarkan jenis identitas:

    • Identitas ditetapkan sistem: Dalam tab Sistem yang ditetapkan, alihkan Status menjadi Nonaktif. Pilih Simpan.
    • Identitas yang ditetapkan pengguna: Pilih tab Ditetapkan pengguna, centang kotak untuk identitas, dan pilih Hapus. Pilih Ya untuk mengonfirmasi.

Langkah berikutnya