Pertimbangan dan pembatasan penting untuk kredensial identitas federasi

Artikel ini menjelaskan pertimbangan, pembatasan, dan batasan penting untuk kredensial identitas federasi pada aplikasi Microsoft Entra dan identitas terkelola yang ditetapkan pengguna.

Untuk informasi selengkapnya tentang skenario yang diaktifkan oleh kredensial identitas federasi, lihat gambaran umum federasi identitas beban kerja.

Pertimbangan kredensial identitas federasi umum

Berlaku untuk: aplikasi dan identitas terkelola yang ditetapkan pengguna

Siapa pun yang memiliki izin untuk membuat pendaftaran aplikasi dan menambahkan rahasia atau sertifikat dapat menambahkan kredensial identitas federasi ke aplikasi. Jika sakelar Aplikasi dapat mendaftarkan diatur ke Tidak di bilah Pengaturan Pengguna-Pengguna> di pusat admin Microsoft Entra, namun, Anda tidak akan dapat membuat pendaftaran aplikasi atau mengonfigurasi kredensial identitas federasi. Temukan admin untuk mengonfigurasi kredensial identitas gabungan atas nama Anda, seseorang dalam peran Administrator Aplikasi atau Pemilik Aplikasi.

Kredensial identitas gabungan tidak menggunakan kuota objek perwakilan layanan penyewa Microsoft Entra.

Maksimal 20 kredensial identitas gabungan dapat ditambahkan ke aplikasi atau identitas terkelola yang ditetapkan pengguna.

Saat Anda mengonfigurasi kredensial identitas federasi, ada beberapa informasi penting untuk diberikan:

  • penerbit dan subjek adalah informasi penting yang diperlukan untuk menyiapkan hubungan kepercayaan. Kombinasi issuer dan subject harus unik di aplikasi. Saat beban kerja perangkat lunak eksternal meminta platform identitas Microsoft untuk menukar token eksternal dengan token akses, nilai penerbit dan subjek dari kredensial identitas federasi diperiksa terhadap klaim issuer dan subject yang diberikan dalam token eksternal. Jika pemeriksaan validasi itu lolos, platform identitas Microsoft akan menerbitkan token akses ke beban kerja perangkat lunak eksternal.

  • penerbit adalah URL penyedia identitas eksternal dan harus cocok dengan issuer klaim token eksternal yang ditukarkan. Harus diisi. Jika klaim issuer memiliki spasi di depan atau di belakang nilai, pertukaran token akan diblokir. Bidang ini memiliki batas karakter 600 karakter.

  • subjek adalah pengidentifikasi beban kerja perangkat lunak eksternal dan harus cocok dengan klaim sub (subject) dari token eksternal yang ditukarkan. subjek tidak memiliki format tetap, karena setiap IdP menggunakan formatnya sendiri - terkadang GUID, terkadang pengidentifikasi yang dibatasi titik dua, terkadang string arbitrer. Bidang ini memiliki batas karakter 600 karakter.

    Penting

    Nilai pengaturan subjek harus sama persis dengan konfigurasi pada konfigurasi alur kerja GitHub. Jika tidak, platform identitas Microsoft akan melihat token eksternal yang masuk dan menolak pertukaran untuk token akses. Anda tidak akan mendapatkan kesalahan, pertukaran akan gagal tanpa kesalahan.

    Penting

    Jika Anda tidak sengaja menambahkan informasi beban kerja eksternal yang salah di pengaturan subjek, kredensial identitas gabungan berhasil dibuat tanpa kesalahan. Kesalahan tidak menjadi jelas sampai pertukaran token gagal.

  • audiens mencantumkan audiens yang dapat muncul di token eksternal. Harus diisi. Anda harus menambahkan satu nilai audiens, yang memiliki batas 600 karakter. Nilai yang direkomendasikan adalah "api://AzureADTokenExchange". Menjelaskan apa yang harus diterima oleh platform identitas Microsoft dalam klaim aud di token yang masuk.

  • nama adalah pengidentifikasi unik untuk informasi masuk identitas gabungan. Harus diisi. Bidang ini memiliki batas karakter 3-120 karakter dan harus ramah URL. Karakter alfanumerik, tanda hubung, atau garis bawah didukung, karakter pertama harus alfanumerik saja.  Ini tidak dapat diubah setelah dibuat.

  • deskripsi adalah deskripsi informasi masuk identitas gabungan yang diberikan pengguna. Opsional. Deskripsi tidak divalidasi atau diperiksa oleh ID Microsoft Entra. Bidang ini memiliki batas 600 karakter.

Karakter kartubebas tidak didukung dalam nilai properti kredensial identitas gabungan apa pun.

Wilayah yang tidak didukung (identitas terkelola yang ditetapkan pengguna)

Berlaku untuk: identitas terkelola yang ditetapkan pengguna

Pembuatan kredensial identitas federasi saat ini tidak didukung pada identitas terkelola yang ditetapkan pengguna yang dibuat di wilayah berikut:

  • Asia Timur
  • Qatar Tengah
  • Malaysia Selatan
  • Italia Utara
  • Israel Tengah

Dukungan untuk membuat kredensial identitas gabungan pada identitas yang ditetapkan pengguna di wilayah ini akan diluncurkan secara bertahap. Sumber daya di wilayah ini yang perlu menggunakan kredensial identitas federasi, dapat melakukannya dengan memanfaatkan identitas terkelola yang ditetapkan pengguna yang dibuat di wilayah yang didukung.

Algoritma penandatanganan dan penerbit yang didukung

Berlaku untuk: aplikasi dan identitas terkelola yang ditetapkan pengguna

Hanya penerbit yang menyediakan token yang ditandatangani menggunakan algoritma RS256 yang didukung untuk pertukaran token menggunakan federasi identitas beban kerja. Bertukar token yang ditandatangani dengan algoritma lain mungkin berfungsi, tetapi belum diuji.

Penerbit Microsoft Entra tidak didukung

Berlaku untuk: aplikasi dan identitas terkelola yang ditetapkan pengguna

Membuat federasi antara dua identitas Microsoft Entra dari penyewa yang sama atau berbeda tidak didukung. Saat membuat kredensial identitas federasi, mengonfigurasi penerbit (URL penyedia identitas eksternal) dengan nilai berikut tidak didukung:

  • *.login.microsoftonline.com
  • *.login.windows.net
  • *.login.microsoft.com
  • *.sts.windows.net

Meskipun dimungkinkan untuk membuat kredensial identitas federasi dengan penerbit Microsoft Entra, upaya untuk menggunakannya untuk otorisasi gagal dengan kesalahan AADSTS700222: AAD-issued tokens may not be used for federated identity flows.

Waktu untuk perubahan kredensial federasi untuk disebarluaskan

Berlaku untuk: aplikasi dan identitas terkelola yang ditetapkan pengguna

Dibutuhkan waktu bagi kredensial identitas federasi untuk disebarluaskan ke seluruh wilayah setelah awalnya dikonfigurasi. Permintaan token yang dibuat beberapa menit setelah mengonfigurasi kredensial identitas federasi mungkin gagal karena cache diisi di direktori dengan data lama. Selama jendela waktu ini, permintaan otorisasi mungkin gagal dengan pesan kesalahan: AADSTS70021: No matching federated identity record found for presented assertion.

Untuk menghindari masalah ini, tunggu beberapa saat setelah menambahkan kredensial identitas federasi sebelum meminta token untuk memastikan replikasi selesai di semua node layanan otorisasi. Sebaiknya tambahkan logika coba lagi untuk permintaan token. Percobaan ulang harus dilakukan untuk setiap permintaan bahkan setelah token berhasil diperoleh. Akhirnya setelah data sepenuhnya direplikasi, persentase kegagalan akan turun.

Pembaruan bersamaan tidak didukung (identitas terkelola yang ditetapkan pengguna)

Berlaku untuk: identitas terkelola yang ditetapkan pengguna

Membuat beberapa kredensial identitas federasi di bawah identitas terkelola yang ditetapkan pengguna yang sama secara bersamaan memicu logika deteksi konkurensi, yang menyebabkan permintaan gagal dengan kode status HTTP yang berkonflik 409.

Penyedia Terraform untuk Azure (Resource Manager) versi 3.40.0 memperkenalkan pembaruan yang membuat beberapa kredensial identitas federasi secara berurutan alih-alih secara bersamaan. Versi yang lebih lama dari 3.40.0 dapat menyebabkan kegagalan dalam alur saat identitas federasi multiped dibuat. Sebaiknya gunakan Penyedia Terraform untuk Azure (Resource Manager) v3.40.0 atau yang lebih baru sehingga beberapa kredensial identitas federasi dibuat secara berurutan.

Saat Anda menggunakan otomatisasi atau templat Azure Resource Manager (templat ARM) untuk membuat kredensial identitas federasi di bawah identitas induk yang sama, buat kredensial federasi secara berurutan. Kredensial identitas gabungan di bawah identitas terkelola yang berbeda dapat dibuat secara paralel tanpa batasan apa pun.

Jika kredensial identitas federasi disediakan dalam perulangan, Anda dapat memprovisikannya secara serial dengan mengatur "mode": "serial".

Anda juga dapat menyediakan beberapa kredensial identitas federasi baru secara berurutan menggunakan properti dependsOn . Contoh templat Azure Resource Manager (templat ARM) berikut membuat tiga kredensial identitas federasi baru secara berurutan pada identitas terkelola yang ditetapkan pengguna dengan menggunakan properti dependsOn :

{ 
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 
        "userAssignedIdentities_parent_uami_name": { 
            "defaultValue": "parent_uami", 
            "type": "String" 
        } 
    }, 
    "variables": {}, 
    "resources": [ 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[parameters('userAssignedIdentities_parent_uami_name')]", 
            "location": "eastus" 
        }, 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[concat(parameters('userAssignedIdentities_parent_uami_name'), '/fic01')]", 
            "dependsOn": [ 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentities_parent_uami_name'))]" 
            ], 
            "properties": { 
                "issuer": "https://kubernetes-oauth.azure.com", 
                "subject": "fic01", 
                "audiences": [ 
                    "api://AzureADTokenExchange" 
                ] 
            } 
        }, 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[concat(parameters('userAssignedIdentities_parent_uami_name'), '/fic02')]", 
            "dependsOn": [ 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentities_parent_uami_name'))]", 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials', parameters('userAssignedIdentities_parent_uami_name'), 'fic01')]" 
            ], 
            "properties": { 
                "issuer": "https://kubernetes-oauth.azure.com", 
                "subject": "fic02", 
                "audiences": [ 
                    "api://AzureADTokenExchange" 
                ] 
            } 
        }, 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[concat(parameters('userAssignedIdentities_parent_uami_name'), '/fic03')]", 
            "dependsOn": [ 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentities_parent_uami_name'))]", 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials', parameters('userAssignedIdentities_parent_uami_name'), 'fic02')]" 
            ], 
            "properties": { 
                "issuer": "https://kubernetes-oauth.azure.com", 
                "subject": "fic03", 
                "audiences": [ 
                    "api://AzureADTokenExchange" 
                ] 
            } 
        } 
    ] 
} 

Kebijakan Azure

Berlaku untuk: aplikasi dan identitas terkelola yang ditetapkan pengguna

Dimungkinkan untuk menggunakan Azure Policy tolak seperti dalam contoh templat ARM berikut:

{ 
"policyRule": { 
            "if": { 
                "field": "type", 
                "equals": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials" 
            }, 
            "then": { 
                "effect": "deny" 
            } 
        } 
}

Batas Pembatasan

Berlaku untuk: identitas terkelola yang ditetapkan pengguna

Tabel berikut menjelaskan batasan permintaan ke REST API identitas terkelola yang ditetapkan pengguna. Jika Anda melebihi batas pembatasan, Anda menerima kesalahan HTTP 429.

Operasi Permintaan per detik per penyewa Microsoft Entra Permintaan per detik per langganan Permintaan per detik per sumber daya
Membuat atau memperbarui permintaan 10 2 0.25
Mendapatkan permintaan 30 10 0,5
Daftar menurut grup sumber daya atau Daftar menurut permintaan langganan 15 5 0.25
Menghapus permintaan 10 2 0.25

Kesalahan

Berlaku untuk: aplikasi dan identitas terkelola yang ditetapkan pengguna

Kode kesalahan berikut dapat dikembalikan saat membuat, memperbarui, mendapatkan, mencantumkan, atau menghapus kredensial identitas federasi.

Kode HTTP Pesan kesalahan Komentar
405 Format permintaan tidak terduga: Dukungan untuk kredensial identitas federasi tidak diaktifkan. Kredensial identitas gabungan tidak diaktifkan di wilayah ini. Lihat "Wilayah yang Saat Ini Didukung".
400 Kredensial identitas gabungan harus memiliki tepat satu audiens. Saat ini, kredensial identitas federasi mendukung satu audiens "api://AzureADTokenExchange".
400 Federated Identity Credential dari isi HTTP memiliki properti kosong Semua properti kredensial identitas federasi wajib.
400 Nama Kredensial Identitas Gabungan '{ficName}' tidak valid. Alfanumerik, garis putus-putus, garis bawah, tidak lebih dari 3-120 simbol. Simbol pertama adalah alfanumerik.
404 Identitas yang ditetapkan pengguna induk tidak ada. Periksa nama identitas yang ditetapkan pengguna di jalur sumber daya kredensial identitas gabungan.
400 Pengeluar sertifikat dan kombinasi subjek sudah ada untuk Identitas Terkelola ini. Ini adalah batasan. Cantumkan semua kredensial identitas gabungan yang terkait dengan identitas yang ditetapkan pengguna untuk menemukan kredensial identitas federasi yang ada.
409 Konflik Permintaan tulis bersamaan ke sumber daya kredensial identitas federasi di bawah identitas yang ditetapkan pengguna yang sama telah ditolak.