Menyebarkan kebijakan kustom dengan Azure Pipelines
Azure Pipelines mendukung integrasi berkelanjutan (CI) dan pengiriman berkelanjutan (CD) untuk menguji, membangun, dan mengirim kode secara konstan dan konsisten ke target mana pun. Artikel ini menjelaskan cara mengotomatisasi proses penyebaran kebijakan kustom Azure Active Directory B2C (Azure AD B2C) menggunakan Azure Pipelines.
Penting
Mengelola kebijakan kustom Azure AD B2C dengan Azure Pipelines saat ini menggunakan operasi pratinjau yang tersedia di titik akhir /beta
Microsoft Graph API. Penggunaan API ini dalam aplikasi produksi tidak didukung. Untuk informasi selengkapnya, lihat referensi titik akhir Microsoft Graph REST API beta.
Prasyarat
- Selesaikan langkah-langkah dalam Memulai dengan kebijakan kustom di Azure AD B2C.
- Jika Anda belum membuat organisasi DevOps, buat organisasi dengan mengikuti petunjuk di Mendaftar, masuk ke Azure DevOps.
Mendaftarkan aplikasi untuk tugas manajemen
Anda menggunakan skrip PowerShell untuk menyebarkan kebijakan Azure AD B2C. Sebelum skrip PowerShell dapat berinteraksi dengan Microsoft Graph API, buat pendaftaran aplikasi di penyewa Azure AD B2C Anda. Jika Anda belum melakukannya, daftarkan aplikasi Microsoft Graph.
Agar skrip PowerShell Anda mengakses data di Ms Graph, berikan izin aplikasi yang relevan pada aplikasi yang terdaftar. Memberikan izin Kebijakan>Microsoft Graph>Policy.ReadWrite.TrustFramework dalam Izin API dari pendaftaran aplikasi.
Mengonfigurasi Azure Repo
Dengan aplikasi Microsoft Graph yang terdaftar, Anda siap untuk mengonfigurasi repositori untuk file kebijakan Anda.
- Masuk ke Organisasi Azure DevOps Anda.
- Buat proyek baru, atau pilih proyek yang sudah ada.
- Di proyek Anda, navigasi ke Repos, dan pilih File.
- Pilih repositori yang sudah ada atau buatlah yang baru.
- Di direktori akar repositori Anda, buat folder bernama
B2CAssets
. Tambahkan file kebijakan kustom Azure AD B2C Anda ke folder B2CAssets. - Di direktori akar repositori Anda, buat folder bernama
Scripts
. Membuat file PowerShell DeployToB2C.ps1. Tempelkan skrip PowerShell berikut ke DeployToB2C.ps1. - Komit dan Dorong perubahan.
Skrip berikut memperoleh token akses dari ID Microsoft Entra. Dengan token, skrip memanggil MS Graph API untuk mengunggah kebijakan di folder B2CAssets. Anda juga dapat mengubah konten kebijakan sebelum mengunggahnya. Misalnya, ganti tenant-name.onmicrosoft.com
dengan nama penyewa Anda.
[Cmdletbinding()]
Param(
[Parameter(Mandatory = $true)][string]$ClientID,
[Parameter(Mandatory = $true)][string]$ClientSecret,
[Parameter(Mandatory = $true)][string]$TenantId,
[Parameter(Mandatory = $true)][string]$Folder,
[Parameter(Mandatory = $true)][string]$Files
)
try {
$body = @{grant_type = "client_credentials"; scope = "https://graph.microsoft.com/.default"; client_id = $ClientID; client_secret = $ClientSecret }
$response = Invoke-RestMethod -Uri https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token -Method Post -Body $body
$token = $response.access_token
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Content-Type", 'application/xml')
$headers.Add("Authorization", 'Bearer ' + $token)
# Get the list of files to upload
$filesArray = $Files.Split(",")
Foreach ($file in $filesArray) {
$filePath = $Folder + $file.Trim()
# Check if file exists
$FileExists = Test-Path -Path $filePath -PathType Leaf
if ($FileExists) {
$policycontent = Get-Content $filePath -Encoding UTF8
# Optional: Change the content of the policy. For example, replace the tenant-name with your tenant name.
# $policycontent = $policycontent.Replace("your-tenant.onmicrosoft.com", "contoso.onmicrosoft.com")
# Get the policy name from the XML document
$match = Select-String -InputObject $policycontent -Pattern '(?<=\bPolicyId=")[^"]*'
If ($match.matches.groups.count -ge 1) {
$PolicyId = $match.matches.groups[0].value
Write-Host "Uploading the" $PolicyId "policy..."
$graphuri = 'https://graph.microsoft.com/beta/trustframework/policies/' + $PolicyId + '/$value'
$content = [System.Text.Encoding]::UTF8.GetBytes($policycontent)
$response = Invoke-RestMethod -Uri $graphuri -Method Put -Body $content -Headers $headers -ContentType "application/xml; charset=utf-8"
Write-Host "Policy" $PolicyId "uploaded successfully."
}
}
else {
$warning = "File " + $filePath + " couldn't be not found."
Write-Warning -Message $warning
}
}
}
catch {
Write-Host "StatusCode:" $_.Exception.Response.StatusCode.value__
$_
$streamReader = [System.IO.StreamReader]::new($_.Exception.Response.GetResponseStream())
$streamReader.BaseStream.Position = 0
$streamReader.DiscardBufferedData()
$errResp = $streamReader.ReadToEnd()
$streamReader.Close()
$ErrResp
exit 1
}
exit 0
Mengonfigurasi Azure Pipelines
Dengan repositori Anda diinisialisasi dan diisi dengan file kebijakan kustom Anda, Anda siap untuk menyiapkan alur rilis. Untuk membuat alur, ikuti langkah-langkah berikut:
- Dalam proyek Anda, pilih Pipelines>Rilis>Pipeline baru.
- Di bawah Pilih templat, pilih Pekerjaan kosong, lalu pilih Terapkan.
- Masukkan Nama panggung, misalnya DeployCustomPolicies, lalu tutup panel.
- Pilih Tambahkan artefak, dan di bawah Tipe sumber, pilih Repositori Azure.
- Untuk Proyek, pilih proyek Anda.
- Pilih Sumber (repositori) yang berisi folder Skrip.
- Pilih Cabang Default, misalnya master.
- Biarkan pengaturan Versi DefaultTerbaru dari cabang default.
- Masukkan Alias sumber untuk repositori. Misalnya, kebijakanRepo.
- Pilih Tambahkan
- Ganti nama alur untuk mencerminkan niatnya. Misalnya, Sebarkan Pipeline Kebijakan Kustom.
- Pilih Simpan untuk menyimpan konfigurasi alur.
Mengonfigurasi variabel alur
Variabel alur memberi Anda cara yang mudah untuk mendapatkan bit kunci data ke berbagai bagian alur. Variabel berikut ini menyediakan informasi tentang lingkungan Azure AD B2C Anda.
Nama | Nilai |
---|---|
clientId |
ID Aplikasi (klien) dari aplikasi yang Anda daftarkan sebelumnya. |
clientSecret |
Nilai rahasia klien yang Anda buat sebelumnya. Ubah tipe variabel menjadi rahasia (pilih ikon kunci). |
tenantId |
your-b2c-tenant.onmicrosoft.com , di mana penyewa b2c Anda adalah nama penyewa Azure AD B2C Anda. |
Untuk menambahkan variabel alur, ikuti langkah-langkah ini:
- Di alur Anda, pilih tab Variabel.
- Di bawah Variabel alur, tambahkan variabel di atas dengan nilainya.
- Pilih Simpan untuk menyimpan variabel.
Menambahkan tugas alur
Tugas alur adalah skrip pra-paket yang melakukan tindakan. Tambahkan tugas yang memanggil skrip PowerShell DeployToB2C.ps1.
Di alur yang Anda buat, pilih tab Tugas.
Pilih Tugas agen, lalu pilih tanda plus (+) untuk menambahkan tugas ke tugas Agen.
Cari dan pilih PowerShell. Jangan pilih "Azure PowerShell," "PowerShell pada mesin target," atau entri PowerShell lainnya.
Pilih tugas Skrip PowerShell yang baru ditambahkan.
Masukkan nilai berikut untuk tugas Skrip PowerShell:
Versi tugas: 2.*
Nama tampilan: Nama kebijakan yang harus diunggah tugas ini. Misalnya, B2C_1A_TrustFrameworkBase.
Ketik: Jalur File
Jalur Skrip: Pilih elipsis (...), navigasikan ke folder Scripts, lalu pilih DeployToB2C berkas .ps1.
Argumen: Masukkan skrip PowerShell berikut.
-ClientID $(clientId) -ClientSecret $(clientSecret) -TenantId $(tenantId) -Folder $(System.DefaultWorkingDirectory)/policyRepo/B2CAssets/ -Files "TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml,ProfileEdit.xml,PasswordReset.xml"
Parameter
-Files
adalah daftar pemisah koma dari file kebijakan yang akan diterapkan. Perbarui daftar dengan file kebijakan Anda.Penting
Pastikan kebijakan diunggah dalam urutan yang benar. Pertama kebijakan dasar, kebijakan perpanjangan, kemudian kebijakan partai yang mengandalkan. Contohnya:
TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml
Pilih Simpan untuk menyimpan pekerjaan Agen.
Uji alur Anda
Untuk menguji alur rilis Anda:
- Pilih Alur, lalu pilih Rilis.
- Pilih alur yang Anda buat sebelumnya, misalnya DeployCustomPolicies.
- Pilih Buat rilis, lalu pilih Buat untuk antrean rilis.
Anda akan melihat banner pemberitahuan yang mengatakan bahwa rilis telah diantrikan. Untuk melihat statusnya, pilih link di banner pemberitahuan, atau pilih di daftar pada tab Rilis.
Langkah berikutnya
Pelajari lebih lanjut tentang: