Bagikan melalui


Mengonfigurasi aplikasi untuk mempercayai penyedia identitas eksternal

Artikel ini menjelaskan cara mengelola kredensial identitas federasi pada aplikasi di ID Microsoft Entra. Kredensial identitas federasi menciptakan hubungan kepercayaan antara sebuah aplikasi dan penyedia identitas eksternal (IdP).

Anda kemudian dapat mengonfigurasi beban kerja perangkat lunak eksternal untuk menukar token dari IdP eksternal dengan token akses dari platform identitas Microsoft. Beban kerja eksternal dapat mengakses sumber daya yang dilindungi Microsoft Entra tanpa perlu mengelola rahasia (dalam skenario yang didukung). Untuk mempelajari selengkapnya tentang alur kerja pertukaran token, baca tentang federasi identitas beban kerja .

Dalam artikel ini, Anda mempelajari cara membuat, mencantumkan, dan menghapus kredensial identitas gabungan pada aplikasi di ID Microsoft Entra.

Pertimbangan dan pembatasan penting

Untuk membuat, memperbarui, atau menghapus kredensial identitas federasi, akun yang melakukan tindakan harus menjadi pemilik aplikasi, atau memiliki salah satu peran Entra ini: Administrator Aplikasi, Administrator Aplikasi Cloud, Administrator Global, atau Administrator Identitas Hibrid. izin microsoft.directory/applications/credentials/update diperlukan untuk memperbarui kredensial identitas terfederasi.

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 sertifikat dan subjek adalah bagian informasi penting yang diperlukan untuk menyiapkan hubungan kepercayaan. Kombinasi issuer dan subject harus unik di aplikasi. Ketika beban kerja perangkat lunak eksternal meminta platform identitas Microsoft untuk menukar token eksternal dengan token akses, penerbit dan subjek nilai kredensial identitas federasi diperiksa terhadap klaim issuer 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 dari penyedia identitas eksternal dan harus sesuai dengan klaim issuer dari token eksternal yang sedang dipertukarkan. Diperlukan. Jika klaim issuer memiliki spasi kosong di depan atau di belakang dalam nilai, pertukaran token diblokir. Bidang ini memiliki batas karakter 600 karakter.

  • subyek adalah identifikator beban kerja perangkat lunak pihak ketiga dan harus cocok dengan klaim sub (subject) dari token eksternal yang ditukar. subjek tidak memiliki format tetap, karena setiap IdP menggunakan format mereka sendiri - kadang-kadang menggunakan GUID, kadang-kadang pengidentifikasi yang dipisahkan oleh titik dua, dan kadang-kadang string acak. Bidang ini memiliki batas karakter 600 karakter.

    Penting

    Nilai pengaturan subjek harus sama persis dengan pengaturan 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 melihat pesan kesalahan, transaksi 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 menyebutkan audiens yang dapat muncul pada token eksternal. Diperlukan. Anda harus menambahkan satu nilai audiens, dengan batas 600 karakter. Nilai yang direkomendasikan adalah "api://AzureADTokenExchange". Ini menjelaskan apa yang perlu diterima oleh platform identitas Microsoft dalam klaim aud pada token yang diterima.

  • name adalah pengidentifikasi unik untuk kredensial identitas terfederasi. 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 pengganti tidak didukung dalam nilai properti kredensial identitas terfederasi apa pun.

Untuk mempelajari selengkapnya tentang wilayah yang didukung, waktu propagasi pembaruan kredensial identitas terfederasi, penerbit yang didukung, dan lainnya, baca Pertimbangan dan pembatasan penting untuk kredensial identitas terfederasi.

Prasyarat

  • Buat pendaftaran aplikasi atau identitas terkelola di Microsoft Entra ID. Berikan akses aplikasi Anda ke sumber daya Azure yang ditargetkan oleh beban kerja perangkat lunak eksternal Anda.
  • Temukan ID objek aplikasi (bukan ID aplikasi (klien), yang Anda butuhkan dalam langkah-langkah berikut. Anda dapat menemukan ID objek aplikasi di pusat admin Microsoft Entra . Buka daftar pendaftaran aplikasi dan pilih pendaftaran aplikasi Anda. Dalam Gambaran Umum, Anda dapat menemukan ID Objek.
  • Dapatkan informasi tentang subjek dan penerbit untuk IdP eksternal dan beban kerja perangkat lunak Anda, yang Anda butuhkan dalam langkah-langkah berikut.

Mengonfigurasi kredensial identitas federasi di aplikasi

Tindakan GitHub

Untuk menambahkan identitas federasi untuk tindakan GitHub, ikuti langkah-langkah berikut:

  1. Temukan pendaftaran aplikasi Anda di fitur pendaftaran aplikasi pusat admin Microsoft Entra. Pilih Sertifikat & rahasia di panel navigasi kiri, pilih tab kredensial Federasi, dan pilih Tambahkan kredensial.

  2. Dalam kotak drop-down skenario kredensial federasi, pilih GitHub Actions yang menyebarkan sumber daya Azure.

  3. Tentukan Organisasi dan Repositori untuk alur kerja GitHub Actions Anda.

  4. Untuk Jenis entitas, pilih Lingkungan, Cabang, Permintaan tarik, atau Tag dan tentukan nilainya. Nilai harus sama persis dengan konfigurasi dalam alur kerja GitHub . Pencocokan pola tidak didukung untuk cabang (branch) dan tag. Tentukan lingkungan jika alur kerja pendorongan Anda berjalan terhadap banyak cabang dan/atau tag. Untuk informasi selengkapnya, baca contoh .

  5. Tambahkan Nama untuk kredensial federasi.

  6. Pengeluar , Audiens , dan Pengidentifikasi Subjek terisi otomatis berdasarkan nilai yang Anda masukkan.

  7. Pilih Tambahkan untuk mengonfigurasi kredensial federasi.

    Cuplikan layar jendela Tambahkan kredensial, memperlihatkan nilai sampel.

Gunakan nilai berikut dari pendaftaran aplikasi Microsoft Entra Anda untuk alur kerja GitHub Anda:

  • AZURE_CLIENT_ID ID Aplikasi (klien)

  • AZURE_TENANT_ID ID Direktori (penyewa)

    Cuplikan layar berikut menunjukkan cara menyalin ID aplikasi dan ID penyewa.

    Cuplikan layar yang menunjukkan cara menyalin ID aplikasi dan ID penyewa dari pusat admin Microsoft Entra.

Contoh jenis entitas

Contoh cabang

Untuk alur kerja yang dipicu oleh peristiwa permintaan push atau pull di cabang utama:

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

Tentukan jenis EntitasCabang dan nama cabang GitHub “utama”.

Contoh lingkungan

Untuk Pekerjaan yang terkait dengan lingkungan bernama "produksi":

on:
  push:
    branches:
      - main

jobs:
  deployment:
    runs-on: ubuntu-latest
    environment: production
    steps:
      - name: deploy
        # ...deployment-specific steps

Tentukan jenis Entitas dari Lingkungan dan nama lingkungan GitHub "produksi".

Contoh tag

Misalnya, untuk alur kerja yang dipicu oleh pendorongan ke tag bernama "v2":

on:
  push:
    # Sequence of patterns matched against refs/heads
    branches:
      - main
      - 'mona/octocat'
      - 'releases/**'
    # Sequence of patterns matched against refs/tags
    tags:
      - v2
      - v1.*

Tentukan jenis Entitas dari Tag dan nama tag GitHub "v2".

Contoh permintaan pull

Untuk alur kerja yang dipicu oleh peristiwa permintaan pull, tentukan jenis Entitas dari permintaan Pull.

Kubernetes

Temukan pendaftaran aplikasi Anda di fitur pendaftaran aplikasi pusat admin Microsoft Entra. Pilih Sertifikat & rahasia di panel navigasi kiri, pilih tab kredensial Federasi, dan pilih Tambahkan kredensial.

Pilih skenario Kubernetes yang mengakses sumber daya Azure dari menu dropdown.

Isi URL pengeluar Kluster , Namespace , nama akun layanan , dan kolom Nama .

  • URL penerbit Kluster adalah URL penerbit OIDC untuk kluster terkelola atau URL Penerbit OIDC untuk kluster yang dikelola sendiri.
  • Nama akun Layanan adalah nama akun layanan Kubernetes, yang menyediakan identitas untuk proses yang berjalan dalam Pod.
  • Namespace adalah namespace akun layanan.
  • Nama adalah nama kredensial federasi, yang tidak dapat diubah nanti.

Penyedia identitas lainnya

Temukan pendaftaran aplikasi Anda di fitur pendaftaran aplikasi pusat admin Microsoft Entra. Pilih Sertifikat & rahasia di panel navigasi kiri, pilih tab kredensial Federasi, dan pilih Tambahkan kredensial.

Pilih skenario penerbit lain dari menu dropdown.

Tentukan bidang berikut (menggunakan beban kerja perangkat lunak yang berjalan di Google Cloud sebagai contoh):

  • Nama adalah nama kredensial federasi, yang tidak dapat diubah nanti.
  • Pengidentifikasi subjek: harus cocok dengan klaim sub dalam token yang dikeluarkan oleh penyedia identitas eksternal. Dalam contoh ini menggunakan Google Cloud, subjek adalah ID Unik dari akun layanan yang anda rencanakan untuk pakai.
  • Penerbit: harus sesuai dengan klaim iss dalam token yang dikeluarkan oleh penyedia identitas eksternal. URL yang sesuai dengan spesifikasi Discovery OIDC. Microsoft Entra ID menggunakan URL penerbit ini untuk mengambil kunci yang diperlukan untuk memvalidasi token. Untuk Google Cloud, penerbit adalah https://accounts.google.com.

Mencantumkan kredensial identitas gabungan di aplikasi

Temukan pendaftaran aplikasi Anda di fitur pendaftaran aplikasi pusat admin Microsoft Entra. Pilih Sertifikat & rahasia di panel navigasi kiri dan pilih tab kredensial federasi. Kredensial federasi yang telah dikonfigurasi pada aplikasi Anda akan ditampilkan.

Menghapus kredensial identitas federasi dari aplikasi

Temukan pendaftaran aplikasi Anda di fitur pendaftaran aplikasi pusat admin Microsoft Entra. Pilih Sertifikat & rahasia di panel navigasi kiri dan pilih tab kredensial federasi. Kredensial federasi yang telah dikonfigurasi pada aplikasi Anda akan ditampilkan.

Untuk menghapus kredensial identitas gabungan, pilih ikon Hapus untuk kredensial.

Menyiapkan kredensial identitas Federasi Fleksibel (pratinjau)

  1. Navigasi ke MICROSOFT Entra ID dan pilih aplikasi tempat Anda ingin mengonfigurasi kredensial identitas federasi.
  2. Di bilah navigasi sebelah kiri, pilih Sertifikat & Rahasia.
  3. Di bawah tab kredensial federasi, pilih tombol + Tambah kredensial.
  4. Di jendela Tambahkan kredensial yang muncul, dari menu dropdown di samping Skenario kredensial federasi, pilih Penerbit lain.
  5. Pada Nilai masukkan ekspresi pencocokan klaim yang ingin Anda gunakan.

Prasyarat

  • Buat pendaftaran aplikasi di Microsoft Entra ID. Berikan akses aplikasi Anda ke sumber daya Azure yang ditargetkan oleh beban kerja perangkat lunak eksternal Anda.
  • Temukan ID objek, ID aplikasi (klien), atau URI pengidentifikasi aplikasi, yang Anda butuhkan dalam langkah-langkah berikut. Anda dapat menemukan nilai-nilai ini di pusat admin Microsoft Entra . Buka daftar aplikasi terdaftar dan pilih pendaftaran aplikasi Anda. Dalam Gambaran Umum->Essentials, dapatkan ID Objek , ID Aplikasi (klien) , atau nilai URI ID Aplikasi , yang Anda butuhkan dalam langkah-langkah berikut.
  • Dapatkan informasi tentang subjek dan penerbit untuk IdP eksternal dan beban kerja perangkat lunak Anda, yang Anda butuhkan dalam langkah-langkah berikut.

Mengonfigurasi kredensial identitas federasi di aplikasi

Jalankan perintah az ad app federated-credential create untuk membuat kredensial identitas federasi baru di aplikasi Anda.

Parameter id menentukan URI pengidentifikasi, ID aplikasi, atau ID objek aplikasi. Parameter parameters menentukan parameter, dalam format JSON, untuk membuat kredensial identitas federasi.

Contoh Tindakan GitHub

Nama menentukan nama kredensial identitas federasi Anda.

Penerbit mengidentifikasi jalur ke penyedia GitHub OIDC: https://token.actions.githubusercontent.com/. Pengeluar sertifikat ini menjadi tepercaya oleh aplikasi Azure Anda.

Subjek mengidentifikasi organisasi, repositori, dan lingkungan GitHub untuk alur kerja GitHub Actions Anda. Ketika alur kerja GitHub Actions meminta platform identitas Microsoft untuk menukar token GitHub dengan token akses, nilai dalam kredensial identitas gabungan diperiksa terhadap token GitHub yang disediakan. Sebelum Azure memberikan token akses, permintaan harus sesuai dengan kondisi yang ditentukan di sini.

  • Untuk Pekerjaan yang terkait dengan lingkungan: repo:< Organization/Repository >:environment:< Name >
  • Untuk tugas yang tidak terkait dengan lingkungan, sertakan jalur ref untuk cabang/tag berdasarkan jalur ref yang digunakan untuk memicu alur kerja: repo:< Organization/Repository >:ref:< ref path>. Misalnya, repo:n-username/ node_express:ref:refs/heads/my-branch atau repo:n-username/ node_express:ref:refs/tags/my-tag.
  • Untuk alur kerja yang dipicu oleh peristiwa permintaan pull: repo:< Organization/Repository >:pull-request.
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
    "name": "Testing",
    "issuer": "https://token.actions.githubusercontent.com",
    "subject": "repo:octo-org/octo-repo:environment:Production",
    "description": "Testing",
    "audiences": [
        "api://AzureADTokenExchange"
    ]
}

Contoh Kubernetes

Penerbit adalah URL penerbit akun layanan Anda (URL penerbit OIDC untuk kluster terkelola atau URL Penerbit OIDC untuk kluster yang dikelola sendiri).

Subjek adalah nama subjek dalam token yang dikeluarkan untuk akun layanan tersebut. Kubernetes menggunakan format berikut untuk nama subjek: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>.

Nama adalah nama kredensial federasi, yang tidak dapat diubah nanti.

Daftar audiens mencantumkan pemirsa yang dapat muncul di token eksternal. Bidang ini wajib. Nilai yang disarankan adalah api://AzureADTokenExchange.

az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
    "name": "Kubernetes-federated-credential",
    "issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
    "subject": "system:serviceaccount:erp8asle:pod-identity-sa",
    "description": "Kubernetes service account federated credential",
    "audiences": [
        "api://AzureADTokenExchange"
    ]
}

Contoh penyedia identitas lainnya

Anda dapat mengonfigurasi kredensial identitas federasi pada aplikasi dan membuat hubungan kepercayaan dengan penyedia identitas eksternal lainnya. Contoh berikut menggunakan beban kerja perangkat lunak yang berjalan di Google Cloud sebagai contoh:

  • name adalah nama kredensial federasi, yang tidak dapat diubah nanti.
  • id: ID objek, ID aplikasi (klien), atau URI pengidentifikasi aplikasi.
  • subject: harus cocok dengan klaim sub dalam token yang dikeluarkan oleh penyedia identitas eksternal. Dalam contoh ini menggunakan Google Cloud, subjek adalah ID Unik dari akun layanan yang anda rencanakan untuk pakai.
  • issuer: harus cocok dengan klaim iss dalam token yang dikeluarkan oleh penyedia identitas eksternal. URL yang sesuai dengan spesifikasi Discovery OIDC. Microsoft Entra ID menggunakan URL penerbit ini untuk mengambil kunci yang diperlukan untuk memvalidasi token. Untuk Google Cloud, penerbit adalah https://accounts.google.com.
  • audiences: mencantumkan audiens yang dapat muncul di token eksternal. Bidang ini wajib. Nilai yang direkomendasikan adalah "api://AzureADTokenExchange".
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
    "name": "GcpFederation",
    "issuer": "https://accounts.google.com",
    "subject": "112633961854638529490",
    "description": "Test GCP federation",
    "audiences": [
        "api://AzureADTokenExchange"
    ]
}

Mencantumkan kredensial identitas gabungan di aplikasi

Jalankan perintah az ad app federated-credential list untuk mencantumkan kredensial identitas federasi di aplikasi Anda.

Parameter id menentukan URI pengidentifikasi, ID aplikasi, atau ID objek aplikasi.

az ad app federated-credential list --id 00001111-aaaa-2222-bbbb-3333cccc4444

Mendapatkan kredensial identitas federasi di aplikasi

Jalankan perintah az ad app federated-credential show untuk mendapatkan kredensial identitas terfederasi pada aplikasi Anda.

Parameter id menentukan URI pengidentifikasi, ID aplikasi, atau ID objek aplikasi.

federated-credential-id menentukan ID atau nama kredensial identitas federasi.

az ad app federated-credential show --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb

Menghapus kredensial identitas federasi dari aplikasi

Jalankan perintah az ad app federated-credential delete untuk menghapus kredensial identitas federasi dari aplikasi Anda.

Parameter id menentukan URI pengidentifikasi, ID aplikasi, atau ID objek aplikasi.

federated-credential-id menentukan ID atau nama kredensial identitas federasi.

az ad app federated-credential delete --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb

Prasyarat

  • Untuk menjalankan contoh skrip, Anda memiliki dua opsi:
    • Gunakan Azure Cloud Shell, yang dapat Anda buka dengan menggunakan tombol Coba di sudut kanan atas blok kode.
    • Jalankan skrip secara lokal dengan Azure PowerShell, seperti yang dijelaskan di bagian berikutnya.
  • Buat pendaftaran aplikasi di Microsoft Entra ID. Berikan akses aplikasi Anda ke sumber daya Azure yang ditargetkan oleh beban kerja perangkat lunak eksternal Anda.
  • Temukan ID objek aplikasi (bukan ID aplikasi (klien), yang Anda butuhkan dalam langkah-langkah berikut. Anda dapat menemukan ID objek aplikasi di pusat admin Microsoft Entra . Buka daftar aplikasi terdaftar dan pilih pendaftaran aplikasi Anda. Dalam Ringkasan->Essentials, temukan ID Objek.
  • Dapatkan informasi tentang subjek dan penerbit untuk IdP eksternal dan beban kerja perangkat lunak Anda, yang Anda butuhkan dalam langkah-langkah berikut.

Mengonfigurasi Azure PowerShell secara lokal

Untuk menggunakan Azure PowerShell secara lokal untuk artikel ini alih-alih menggunakan Cloud Shell:

  1. Instal versi terbaru Azure PowerShell jika Anda belum melakukannya.

  2. Masuk ke Azure.

    Connect-AzAccount
    
  3. Instal versi terbaru dari PowerShellGet.

    Install-Module -Name PowerShellGet -AllowPrerelease
    

    Anda mungkin perlu Exit keluar dari sesi PowerShell saat ini setelah menjalankan perintah ini untuk langkah berikutnya.

  4. Instal versi prarilis modul Az.Resources untuk melakukan operasi kredensial identitas federasi dalam artikel ini.

    Install-Module -Name Az.Resources -AllowPrerelease
    

Mengonfigurasi kredensial identitas federasi di aplikasi

Jalankan cmdlet New-AzADAppFederatedCredential untuk membuat kredensial identitas federasi baru pada aplikasi.

Contoh Tindakan GitHub

  • ApplicationObjectId: ID objek aplikasi (bukan ID aplikasi (klien) yang sebelumnya Anda daftarkan di ID Microsoft Entra.
  • Issuer mengidentifikasi GitHub sebagai penerbit token eksternal.
  • Subject mengidentifikasi organisasi, repositori, dan lingkungan GitHub untuk alur kerja GitHub Actions Anda. Ketika alur kerja GitHub Actions meminta platform identitas Microsoft untuk menukar token GitHub dengan token akses, nilai dalam kredensial identitas gabungan diperiksa terhadap token GitHub yang disediakan.
    • Untuk Pekerjaan yang terkait dengan lingkungan: repo:< Organization/Repository >:environment:< Name >
    • Untuk tugas yang tidak terkait dengan lingkungan, sertakan jalur ref untuk cabang/tag berdasarkan jalur ref yang digunakan untuk memicu alur kerja: repo:< Organization/Repository >:ref:< ref path>. Misalnya, repo:n-username/ node_express:ref:refs/heads/my-branch atau repo:n-username/ node_express:ref:refs/tags/my-tag.
    • Untuk alur kerja yang dipicu oleh peristiwa permintaan pull: repo:< Organization/Repository >:pull-request.
  • Nama adalah nama kredensial federasi, yang tidak dapat diubah nanti.
  • Audiens mencantumkan audiens yang dapat muncul di token eksternal. Bidang ini wajib. Nilai yang disarankan adalah api://AzureADTokenExchange.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://token.actions.githubusercontent.com/' -Name 'GitHub-Actions-Test' -Subject 'repo:octo-org/octo-repo:environment:Production'

Contoh Kubernetes

  • ApplicationObjectId: ID objek aplikasi (bukan ID aplikasi (klien) yang sebelumnya Anda daftarkan di ID Microsoft Entra.
  • Issuer adalah URL penerbit akun layanan Anda (URL penerbit OIDC untuk kluster terkelola atau URL Penerbit OIDC untuk kluster yang dikelola sendiri).
  • Subjek adalah nama subjek dalam token yang dikeluarkan untuk akun layanan. Kubernetes menggunakan format berikut untuk nama subjek: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>.
  • Nama adalah nama kredensial federasi, yang tidak dapat diubah nanti.
  • Audiens mencantumkan audiens yang dapat muncul di klaim aud token eksternal.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/' -Name 'Kubernetes-federated-credential' -Subject 'system:serviceaccount:erp8asle:pod-identity-sa'

Contoh penyedia identitas lainnya

Tentukan parameter berikut (menggunakan beban kerja perangkat lunak yang berjalan di Google Cloud sebagai contoh):

  • ObjectID: ID objek aplikasi (bukan ID aplikasi (klien) yang sebelumnya Anda daftarkan di ID Microsoft Entra.
  • Nama adalah nama kredensial federasi, yang tidak dapat diubah nanti.
  • Subjek : harus cocok dengan klaim sub dalam token yang dikeluarkan oleh penyedia identitas eksternal. Dalam contoh ini menggunakan Google Cloud, subjek adalah ID Unik dari akun layanan yang anda rencanakan untuk pakai.
  • Penerbit: harus sesuai dengan klaim iss dalam token yang dikeluarkan oleh penyedia identitas eksternal. URL yang sesuai dengan spesifikasi Discovery OIDC. Microsoft Entra ID menggunakan URL penerbit ini untuk mengambil kunci yang diperlukan untuk memvalidasi token. Untuk Google Cloud, penerbit adalah https://accounts.google.com.
  • Audiens: harus cocok dengan klaim aud di token eksternal. Untuk alasan keamanan, Anda harus memilih nilai yang unik untuk token yang dimaksudkan untuk ID Microsoft Entra. Nilai yang direkomendasikan adalah "api://AzureADTokenExchange".
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://accounts.google.com' -Name 'GcpFederation' -Subject '112633961854638529490'

Mencantumkan kredensial identitas gabungan di aplikasi

Jalankan cmdlet Get-AzADAppFederatedCredential untuk mencantumkan kredensial identitas federasi untuk aplikasi.

Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential

Mendapatkan kredensial identitas federasi di aplikasi

Jalankan cmdlet Get-AzADAppFederatedCredential untuk mendapatkan kredensial identitas federasi berdasarkan ID dari aplikasi.

Get-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId

Menghapus kredensial identitas federasi dari aplikasi

Jalankan cmdlet Remove-AzADAppFederatedCredential untuk menghapus kredensial identitas gabungan dari aplikasi.

Remove-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId

Prasyarat

Buat pendaftaran aplikasi di Microsoft Entra ID. Berikan akses aplikasi Anda ke sumber daya Azure yang ditargetkan oleh beban kerja perangkat lunak eksternal Anda.

Temukan ID objek aplikasi (bukan ID aplikasi (klien), yang Anda butuhkan dalam langkah-langkah berikut. Anda dapat menemukan ID objek aplikasi di pusat admin Microsoft Entra . Buka daftar aplikasi terdaftar dan pilih pendaftaran aplikasi Anda. Dalam Ringkasan->Essentials, temukan ID Objek.

Dapatkan informasi tentang subjek dan penerbit untuk IdP eksternal dan beban kerja perangkat lunak Anda, yang Anda butuhkan dalam langkah-langkah berikut.

Titik akhir Microsoft Graph (https://graph.microsoft.com) mengekspos API REST untuk membuat, memperbarui, dan menghapus federatedIdentityCredentials pada aplikasi. Luncurkan Azure Cloud Shell dan masuk ke akun penyewa Anda untuk menjalankan perintah Microsoft Graph dari AZ CLI.

Mengonfigurasi kredensial identitas federasi di aplikasi

Tindakan GitHub

Jalankan metode berikut untuk membuat kredensial identitas federasi baru di aplikasi Anda (ditentukan oleh ID objek aplikasi). issuer mengidentifikasi GitHub sebagai penerbit token eksternal. subject mengidentifikasi organisasi, repositori, dan lingkungan GitHub untuk alur kerja GitHub Actions Anda. Ketika alur kerja GitHub Actions meminta platform identitas Microsoft untuk menukar token GitHub dengan token akses, nilai dalam kredensial identitas gabungan diperiksa terhadap token GitHub yang disediakan.

az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Testing","issuer":"https://token.actions.githubusercontent.com","subject":"repo:octo-org/octo-repo:environment:Production","description":"Testing","audiences":["api://AzureADTokenExchange"]}'

Dan Anda mendapatkan respons:

{
  "@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
  "audiences": [
    "api://AzureADTokenExchange"
  ],
  "description": "Testing",
  "id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
  "issuer": "https://token.actions.githubusercontent.com",
  "name": "Testing",
  "subject": "repo:octo-org/octo-repo:environment:Production"
}

Dalam cuplikan, parameternya adalah sebagai berikut:

  • name: Nama aplikasi Azure Anda.
  • issuer: Jalur ke penyedia GitHub OIDC: https://token.actions.githubusercontent.com. Pengeluar sertifikat ini menjadi tepercaya oleh aplikasi Azure Anda.
  • subject: Sebelum Azure memberikan token akses, permintaan harus sesuai dengan kondisi yang ditentukan di sini.
    • Untuk Pekerjaan yang terkait dengan lingkungan: repo:< Organization/Repository >:environment:< Name >
    • Untuk tugas yang tidak terkait dengan lingkungan, sertakan jalur ref untuk cabang/tag berdasarkan jalur ref yang digunakan untuk memicu alur kerja: repo:< Organization/Repository >:ref:< ref path>. Misalnya, repo:n-username/ node_express:ref:refs/heads/my-branch atau repo:n-username/ node_express:ref:refs/tags/my-tag.
    • Untuk alur kerja yang dipicu oleh peristiwa permintaan pull: repo:< Organization/Repository >:pull-request.
  • audiences mencantumkan audiens yang dapat muncul di token eksternal. Bidang ini wajib. Nilai yang direkomendasikan adalah "api://AzureADTokenExchange".

Contoh Kubernetes

Jalankan metode berikut untuk mengonfigurasi kredensial identitas federasi pada aplikasi dan membuat hubungan kepercayaan dengan akun layanan Kubernetes. Tentukan parameter berikut:

  • issuer adalah URL penerbit akun layanan Anda (URL penerbit OIDC untuk kluster terkelola atau URL Penerbit OIDC untuk kluster yang dikelola sendiri).
  • subject adalah nama subjek dalam token yang dikeluarkan untuk akun layanan. Kubernetes menggunakan format berikut untuk nama subjek: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>.
  • name adalah nama kredensial federasi, yang tidak dapat diubah nanti.
  • audiences mencantumkan audiens yang dapat muncul di token eksternal. Bidang ini wajib. Nilai yang direkomendasikan adalah "api://AzureADTokenExchange".
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Kubernetes-federated-credential","issuer":"https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/","subject":"system:serviceaccount:erp8asle:pod-identity-sa","description":"Kubernetes service account federated credential","audiences":["api://AzureADTokenExchange"]}'

Dan Anda mendapatkan respons:

{
  "@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
  "audiences": [
    "api://AzureADTokenExchange"
  ],
  "description": "Kubernetes service account federated credential",
  "id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
  "issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
  "name": "Kubernetes-federated-credential",
  "subject": "system:serviceaccount:erp8asle:pod-identity-sa"
}

Contoh penyedia identitas lainnya

Jalankan metode berikut untuk mengonfigurasi kredensial identitas federasi pada aplikasi dan membuat hubungan kepercayaan dengan penyedia identitas eksternal. Tentukan parameter berikut (menggunakan beban kerja perangkat lunak yang berjalan di Google Cloud sebagai contoh):

  • nama adalah nama kredensial federasi, yang tidak dapat diubah nanti.
  • ObjectID: ID objek aplikasi (bukan ID aplikasi (klien) yang sebelumnya Anda daftarkan di ID Microsoft Entra.
  • Subjek : harus sesuai dengan klaim sub dalam token yang dikeluarkan oleh penyedia identitas eksternal. Dalam contoh ini menggunakan Google Cloud, subjek adalah ID Unik dari akun layanan yang anda rencanakan untuk pakai.
  • penerbit: harus cocok dengan klaim iss dalam token yang dikeluarkan oleh penyedia identitas eksternal. URL yang sesuai dengan spesifikasi Discovery OIDC. Microsoft Entra ID menggunakan URL penerbit ini untuk mengambil kunci yang diperlukan untuk memvalidasi token. Untuk Google Cloud, penerbit .
  • Audiens menyebutkan audiens yang dapat muncul pada token eksternal. Bidang ini wajib. Nilai yang direkomendasikan adalah "api://AzureADTokenExchange".
az rest --method POST --uri 'https://graph.microsoft.com/applications/<ObjectID>/federatedIdentityCredentials' --body '{"name":"GcpFederation","issuer":"https://accounts.google.com","subject":"112633961854638529490","description":"Testing","audiences":["api://AzureADTokenExchange"]}'

Dan Anda mendapatkan respons:

{
  "@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
  "audiences": [
    "api://AzureADTokenExchange"
  ],
  "description": "Testing",
  "id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
  "issuer": "https://accounts.google.com"",
  "name": "GcpFederation",
  "subject": "112633961854638529490"
}

Mencantumkan kredensial identitas gabungan di aplikasi

Jalankan metode berikut untuk mencantumkan kredensial identitas federasi untuk aplikasi (ditentukan oleh ID objek aplikasi):

az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials'

Dan Anda mendapatkan respons yang mirip dengan:

{
  "@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
  "value": [
    {
      "audiences": [
        "api://AzureADTokenExchange"
      ],
      "description": "Testing",
      "id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
      "issuer": "https://token.actions.githubusercontent.com/",
      "name": "Testing",
      "subject": "repo:octo-org/octo-repo:environment:Production"
    }
  ]
}

Mendapatkan kredensial identitas federasi di aplikasi

Jalankan metode berikut untuk mendapatkan kredensial identitas federasi untuk aplikasi (ditentukan oleh ID objek aplikasi):

az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444//federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'

Dan Anda mendapatkan respons yang mirip dengan:

{
  "@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
  "value": {
      "@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
      "@odata.id": "https://graph.microsoft.com/v2/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/directoryObjects/$/Microsoft.DirectoryServices.Application('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials('00001111-aaaa-2222-bbbb-3333cccc4444')/00001111-aaaa-2222-bbbb-3333cccc4444",
    "audiences": [
        "api://AzureADTokenExchange"
      ],
      "description": "Testing",
      "id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
      "issuer": "https://token.actions.githubusercontent.com/",
      "name": "Testing",
      "subject": "repo:octo-org/octo-repo:environment:Production"
    }
}

Menghapus kredensial identitas federasi dari aplikasi

Jalankan metode berikut untuk menghapus kredensial identitas federasi dari aplikasi (ditentukan oleh ID objek aplikasi):

az rest -m DELETE  -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'

Lihat juga

  • Untuk mempelajari cara menggunakan federasi identitas untuk beban kerja di Kubernetes, lihat proyek sumber terbuka Microsoft Entra Workload ID untuk Kubernetes.
  • Untuk mempelajari cara menggunakan federasi identitas beban kerja untuk GitHub Actions, lihat Mengonfigurasi alur kerja GitHub Actions untuk mendapatkan token akses.
  • Baca dokumentasi Tindakan GitHub untuk mempelajari selengkapnya tentang mengonfigurasi alur kerja GitHub Actions Anda untuk mendapatkan token akses dari penyedia identitas Microsoft dan mengakses sumber daya Azure.
  • Untuk informasi selengkapnya, baca tentang bagaimana Microsoft Entra ID menggunakan grant kredensial klien OAuth 2.0 dan pernyataan klien yang dikeluarkan oleh IdP lain untuk mendapatkan token.
  • Untuk informasi tentang format JWT yang diperlukan oleh penyedia identitas eksternal, silakan baca tentang format pernyataan .