Bagikan melalui


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. Namun, jika sakelar Aplikasi dapat mendaftarkan diatur ke Tidak di bilah Pengaturan Pengguna-Pengguna> di pusat admin Microsoft Entra, 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 bagian utama dari informasi yang diperlukan untuk menyiapkan hubungan kepercayaan. Kombinasi dan issuer subject harus unik pada aplikasi. Ketika beban kerja perangkat lunak eksternal meminta platform identitas Microsoft untuk menukar token eksternal dengan token akses, penerbit dan nilai subjek dari kredensial identitas gabungan diperiksa terhadap issuer klaim dan subject yang disediakan dalam token eksternal. Jika pemeriksaan validasi tersebut lolos, platform identitas Microsoft mengeluarkan token akses ke beban kerja perangkat lunak eksternal.

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

  • subjek adalah pengidentifikasi beban kerja perangkat lunak eksternal dan harus cocok dengan sub klaim (subject) token eksternal yang ditukar. subjek tidak memiliki format tetap, karena setiap IdP menggunakan sendiri - kadang-kadang GUID, kadang-kadang pengidentifikasi yang dibatasi titik dua, kadang-kadang 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 gagal tanpa kesalahan.

    Penting

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

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

  • nama adalah pengidentifikasi unik untuk kredensial identitas federasi. Diperlukan. 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 kredensial identitas federasi yang disediakan pengguna. Fakultatif. 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
  • Israel Tengah
  • Italia Utara
  • Malaysia Selatan
  • Meksiko Tengah
  • Qatar Tengah
  • Spanyol 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 ketika beberapa identitas gabungan 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 Perselisihan Permintaan tulis bersamaan ke sumber daya kredensial identitas federasi di bawah identitas yang ditetapkan pengguna yang sama telah ditolak.