Azure Pipelines ile özel ilkeler dağıtma

Azure Pipelines , bir kodu sürekli ve tutarlı bir şekilde test etmek, oluşturmak ve herhangi bir hedefe göndermek için sürekli tümleştirmeyi (CI) ve sürekli teslimi (CD) destekler. Bu makalede, Azure Pipelines kullanılarak Azure Active Directory B2C (Azure AD B2C) özel ilkelerinin dağıtım işleminin nasıl otomatikleştirildiği açıklanır.

Önemli

Azure Pipelines ile Azure AD B2C özel ilkelerini yönetmek şu anda Microsoft Graph API /beta uç noktasında kullanılabilen önizleme işlemlerini kullanmaktadır. Bu API'lerin üretim uygulamalarında kullanımı desteklenmez. Daha fazla bilgi için bkz. Microsoft Graph REST API beta uç noktası başvurusu.

Önkoşullar

Yönetim görevleri için uygulama kaydetme

Azure AD B2C ilkelerini dağıtmak için PowerShell betiğini kullanırsınız. PowerShell betiğinin Microsoft Graph API ile etkileşim kurabilmesi için önce Azure AD B2C kiracınızda bir uygulama kaydı oluşturun. Henüz yapmadıysanız bir Microsoft Graph uygulaması kaydedin.

PowerShell betiğinin MS Graph'taki verilere erişmesi için kayıtlı uygulamaya ilgili uygulama izinlerini verin. Uygulama kaydının API İzinleri içinde Microsoft Graph>İlkesi>İlkesi.ReadWrite.TrustFramework izni verildi.

Azure Depo'larını yapılandırma

Kayıtlı bir Microsoft Graph uygulamasıyla, ilke dosyalarınız için bir depo yapılandırmaya hazırsınız.

  1. Azure DevOps kuruluşunuzda oturum açın.
  2. Yeni bir proje oluşturun veya var olan bir projeyi seçin.
  3. Projenizde Depolar'a gidin ve Dosyalar'ı seçin.
  4. Mevcut bir depo seçin veya bir depo oluşturun.
  5. Deponuzun kök dizininde adlı B2CAssetsbir klasör oluşturun. Azure AD B2C özel ilke dosyalarınızı B2CAssets klasörüne ekleyin.
  6. Deponuzun kök dizininde adlı Scriptsbir klasör oluşturun. DeployToB2C.ps1bir PowerShell dosyası oluşturun. Aşağıdaki PowerShell betiğini DeployToB2C.ps1yapıştırın.
  7. Değişiklikleri işleme ve gönderme .

Aşağıdaki betik, Microsoft Entra kimliğinden bir erişim belirteci alır. Belirteçle betik, B2CAssets klasörüne ilkeleri yüklemek için MS Graph API çağırır. İlkeyi karşıya yüklemeden önce içeriğini de değiştirebilirsiniz. Örneğin, değerini tenant-name.onmicrosoft.com kiracı adınız ile değiştirin.

[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

Azure Pipelines'ı yapılandırma

Deponuz başlatıldığında ve özel ilke dosyalarınızla doldurularak yayın işlem hattını ayarlamaya hazırsınız demektir. İşlem hattı oluşturmak için şu adımları izleyin:

  1. Projenizde İşlem Hatları Yayınları>>Yeni işlem hattı'yı seçin.
  2. Şablon seçin'in altında İşi boşalt'ı ve ardından Uygula'yı seçin.
  3. Bir Aşama adı girin( örneğin DeployCustomPolicies) ve ardından bölmeyi kapatın.
  4. Yapıt ekle'yi seçin ve Kaynak türü'nin altında Azure Deposu'na tıklayın.
    1. Proje için projenizi seçin.
    2. Betikler klasörünü içeren Kaynak (depo) öğesini seçin.
    3. Varsayılan dal (örneğin, ana dal) seçin.
    4. Varsayılandaldan En Son'un Varsayılan sürüm ayarını değiştirmeyin.
    5. Depo için bir Kaynak diğer adı girin. Örneğin , policyRepo.
  5. Ekle’yi seçin
  6. İşlem hattını amacını yansıtacak şekilde yeniden adlandırın. Örneğin, Özel İlke İşlem Hattı Dağıtma.
  7. İşlem hattı yapılandırmasını kaydetmek için Kaydet'i seçin.

İşlem hattı değişkenlerini yapılandırma

İşlem hattı değişkenleri, önemli veri bitlerini işlem hattının çeşitli bölümlerine almak için kullanışlı bir yol sağlar. Aşağıdaki değişkenler Azure AD B2C ortamınız hakkında bilgi sağlar.

Name Değer
clientId Daha önce kaydettiğiniz uygulamanın uygulama (istemci) kimliği.
clientSecret Daha önce oluşturduğunuz istemci gizli dizisinin değeri.
Değişken türünü gizli dizi olarak değiştirin (kilit simgesini seçin).
tenantId your-b2c-tenant.onmicrosoft.com, burada b2c-kiracınız Azure AD B2C kiracınızın adıdır.

İşlem hattı değişkenleri eklemek için şu adımları izleyin:

  1. İşlem hattınızda Değişkenler sekmesini seçin.
  2. İşlem hattı değişkenleri'nin altında, değerleriyle birlikte yukarıdaki değişkeni ekleyin.
  3. Değişkenleri kaydetmek için Kaydet'i seçin.

İşlem hattı görevleri ekleme

İşlem hattı görevi, eylem gerçekleştiren önceden paketlenmiş bir betiktir. DeployToB2C.ps1 PowerShell betiğini çağıran bir görev ekleyin.

  1. Oluşturduğunuz işlem hattında Görevler sekmesini seçin.

  2. Aracı işi'ni seçin ve ardından artı işaretini (+) seçerek Aracı işine bir görev ekleyin.

  3. PowerShell'i arayın ve seçin. "Azure PowerShell", "Hedef makinelerde PowerShell" veya başka bir PowerShell girişi seçmeyin.

  4. Yeni eklenen PowerShell Betiği görevini seçin.

  5. PowerShell Betiği görevi için aşağıdaki değerleri girin:

    • Görev sürümü: 2.*

    • Görünen ad: Bu görevin karşıya yüklemesi gereken ilkenin adı. Örneğin , B2C_1A_TrustFrameworkBase.

    • Tür: Dosya Yolu

    • Betik Yolu: Üç noktayı (...) seçin, Betikler klasörüne gidin ve DeployToB2C.ps1 dosyasını seçin.

    • Bağımsız değişkenler: Aşağıdaki PowerShell betiğini girin.

      -ClientID $(clientId) -ClientSecret $(clientSecret) -TenantId $(tenantId) -Folder $(System.DefaultWorkingDirectory)/policyRepo/B2CAssets/ -Files "TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml,ProfileEdit.xml,PasswordReset.xml"
      

      -Files parametresi, dağıtılacak ilke dosyalarının virgülle sınırlayıcı listesidir. Listeyi ilke dosyalarınızla güncelleştirin.

      Önemli

      İlkelerin doğru sırada yüklendiğinden emin olun. Önce temel ilke, uzantılar ilkesi, sonra bağlı olan taraf ilkeleri. Örneğin, TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml.

  6. Aracı işini kaydetmek için Kaydet'i seçin.

İşlem hattınızı test etme

Yayın işlem hattınızı test etmek için:

  1. İşlem Hatları'nın ardından Yayınlar'ı seçin.
  2. Daha önce oluşturduğunuz işlem hattını seçin, örneğin DeployCustomPolicies.
  3. Yayını kuyruğa almak için Yayınoluştur'u ve ardından Oluştur'u seçin.

Bir yayının kuyruğa alındığını belirten bir bildirim başlığı görmeniz gerekir. Durumunu görüntülemek için bildirim başlığındaki bağlantıyı seçin veya Yayınlar sekmesindeki listeden bağlantıyı seçin.

Sonraki adımlar

Aşağıdakiler hakkında daha fazla bilgi edinin: