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

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.

  1. Masuk ke Organisasi Azure DevOps Anda.
  2. Buat proyek baru, atau pilih proyek yang sudah ada.
  3. Di proyek Anda, navigasi ke Repos, dan pilih File.
  4. Pilih repositori yang sudah ada atau buatlah yang baru.
  5. Di direktori akar repositori Anda, buat folder bernama B2CAssets. Tambahkan file kebijakan kustom Azure AD B2C Anda ke folder B2CAssets.
  6. Di direktori akar repositori Anda, buat folder bernama Scripts. Membuat file PowerShell DeployToB2C.ps1. Tempelkan skrip PowerShell berikut ke DeployToB2C.ps1.
  7. 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:

  1. Dalam proyek Anda, pilih Pipelines>Rilis>Pipeline baru.
  2. Di bawah Pilih templat, pilih Pekerjaan kosong, lalu pilih Terapkan.
  3. Masukkan Nama panggung, misalnya DeployCustomPolicies, lalu tutup panel.
  4. Pilih Tambahkan artefak, dan di bawah Tipe sumber, pilih Repositori Azure.
    1. Untuk Proyek, pilih proyek Anda.
    2. Pilih Sumber (repositori) yang berisi folder Skrip.
    3. Pilih Cabang Default, misalnya master.
    4. Biarkan pengaturan Versi DefaultTerbaru dari cabang default.
    5. Masukkan Alias sumber untuk repositori. Misalnya, kebijakanRepo.
  5. Pilih Tambahkan
  6. Ganti nama alur untuk mencerminkan niatnya. Misalnya, Sebarkan Pipeline Kebijakan Kustom.
  7. 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:

  1. Di alur Anda, pilih tab Variabel.
  2. Di bawah Variabel alur, tambahkan variabel di atas dengan nilainya.
  3. 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.

  1. Di alur yang Anda buat, pilih tab Tugas.

  2. Pilih Tugas agen, lalu pilih tanda plus (+) untuk menambahkan tugas ke tugas Agen.

  3. Cari dan pilih PowerShell. Jangan pilih "Azure PowerShell," "PowerShell pada mesin target," atau entri PowerShell lainnya.

  4. Pilih tugas Skrip PowerShell yang baru ditambahkan.

  5. 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

  6. Pilih Simpan untuk menyimpan pekerjaan Agen.

Uji alur Anda

Untuk menguji alur rilis Anda:

  1. Pilih Alur, lalu pilih Rilis.
  2. Pilih alur yang Anda buat sebelumnya, misalnya DeployCustomPolicies.
  3. 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: