Nasazení vlastních zásad pomocí Azure Pipelines

Azure Pipelines podporuje kontinuální integraci (CI) a průběžné doručování (CD) k neustálému a konzistentnímu testování, sestavování a odesílání kódu do libovolného cíle. Tento článek popisuje, jak automatizovat proces nasazení vlastních zásad Azure Active Directory B2C (Azure AD B2C) pomocí Azure Pipelines.

Důležité

Správa vlastních zásad Azure AD B2C pomocí Azure Pipelines v současné době využívá operace ve verzi Preview, které jsou dostupné v koncovém bodu Microsoft Graph API/beta. Použití těchto rozhraní API v produkčních aplikacích se nepodporuje. Další informace najdete v referenčních informacích o beta koncovém bodu rozhraní Microsoft Graph REST API.

Požadavky

Registrace aplikace pro úlohy správy

K nasazení zásad Azure AD B2C použijete skript PowerShellu. Než bude moct skript PowerShellu pracovat s Microsoft Graph API, vytvořte registraci aplikace v tenantovi Azure AD B2C. Pokud jste to ještě neudělali, zaregistrujte aplikaci Microsoft Graph.

Aby skript PowerShellu přistupoval k datům v MS Graphu, udělte zaregistrované aplikaci příslušná oprávnění aplikace. Uděleno oprávnění Microsoft Graph>Policy>Policy.ReadWrite.TrustFramework v rámci oprávnění rozhraní API registrace aplikace.

Konfigurace úložiště Azure

Po registraci aplikace Microsoft Graph můžete nakonfigurovat úložiště pro soubory zásad.

  1. Přihlaste se ke své organizaci Azure DevOps.
  2. Vytvořte nový projekt nebo vyberte existující projekt.
  3. V projektu přejděte na Úložiště a vyberte Soubory.
  4. Vyberte existující úložiště nebo vytvořte úložiště.
  5. V kořenovém adresáři úložiště vytvořte složku s názvem B2CAssets. Přidejte soubory vlastních zásad Azure AD B2C do složky B2CAssets.
  6. V kořenovém adresáři úložiště vytvořte složku s názvem Scripts. Vytvořte soubor PowerShelluDeployToB2C.ps1. DoDeployToB2C.ps1vložte následující skript PowerShellu .
  7. Potvrďte a nasdílíte změny.

Následující skript získá přístupový token z ID Microsoft Entra. S tokenem volá skript ms Graph API k nahrání zásad do složky B2CAssets. Před nahráním můžete také změnit obsah zásad. Například nahraďte tenant-name.onmicrosoft.com názvem vašeho tenanta.

[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

Configure Azure Pipelines (Konfigurace Azure Pipelines)

Jakmile je úložiště inicializované a naplněné vlastními soubory zásad, můžete nastavit kanál verze. Pokud chcete vytvořit kanál, postupujte takto:

  1. V projektu vyberte PipelinesReleasesNew pipeline (Kanály Releases>>New pipeline).
  2. V části Vybrat šablonu vyberte Prázdná úloha a pak vyberte Použít.
  3. Zadejte název fáze, například DeployCustomPolicies, a pak podokno zavřete.
  4. Vyberte Přidat artefakt a v části Typ zdroje vyberte Úložiště Azure.
    1. V části Project (Projekt) vyberte svůj projekt.
    2. Vyberte Zdroj (úložiště), který obsahuje složku Scripts .
    3. Vyberte výchozí větev, například hlavní větev.
    4. Ponechte nastavení Výchozí verzena Nejnovější z výchozí větve.
    5. Zadejte alias zdroje pro úložiště. Například policyRepo.
  5. Vyberte Přidat.
  6. Přejmenujte kanál tak, aby odrážel jeho záměr. Například Nasazení vlastního kanálu zásad.
  7. Vyberte Uložit a uložte konfiguraci kanálu.

Konfigurace proměnných kanálu

Proměnné kanálu poskytují pohodlný způsob, jak do různých částí kanálu dostat klíčové části dat. Následující proměnné poskytují informace o prostředí Azure AD B2C.

Name Hodnota
clientId ID aplikace (klienta) aplikace, kterou jste zaregistrovali dříve.
clientSecret Hodnota tajného klíče klienta , kterou jste vytvořili dříve.
Změňte typ proměnné na secret (vyberte ikonu zámku).
tenantId your-b2c-tenant.onmicrosoft.com, kde your-b2c-tenant je název vašeho tenanta Azure AD B2C.

Pokud chcete přidat proměnné kanálu, postupujte takto:

  1. V kanálu vyberte kartu Proměnné .
  2. V části Proměnné kanálu přidejte výše uvedenou proměnnou s jejich hodnotami.
  3. Vyberte Uložit a uložte proměnné.

Přidání úloh kanálu

Úloha kanálu je předem zabalený skript, který provádí akci. Přidejte úlohu, která volá DeployToB2C.ps1 powershellový skript.

  1. V kanálu, který jste vytvořili, vyberte kartu Úlohy .

  2. Vyberte Úloha agenta a pak výběrem znaménka plus (+) přidejte úlohu do úlohy Agent.

  3. Vyhledejte a vyberte PowerShell. Nevybírejte Azure PowerShell, PowerShell na cílových počítačích ani jinou položku PowerShellu.

  4. Vyberte nově přidanou úlohu skriptu PowerShellu .

  5. Zadejte následující hodnoty pro úlohu powershellového skriptu:

    • Verze úlohy: 2.*

    • Zobrazovaný název: Název zásady, kterou má tento úkol nahrát. Například B2C_1A_TrustFrameworkBase.

    • Typ: Cesta k souboru

    • Cesta skriptu: Vyberte tři tečky (...), přejděte do složky Scripts a pak vyberte DeployToB2C.ps1 soubor.

    • Argumenty: Zadejte následující skript PowerShellu.

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

      Parametr -Files je seznam oddělovačů čárkami souborů zásad, které se mají nasadit. Aktualizujte seznam soubory zásad.

      Důležité

      Ujistěte se, že se zásady nahrají ve správném pořadí. Nejprve základní zásady, zásady rozšíření a pak zásady předávající strany. Například, TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml.

  6. Vyberte Uložit a uložte úlohu agenta.

Test kanálu

Testování kanálu verze:

  1. Vyberte Pipelines (Kanály) a pak Releases (Vydané verze).
  2. Vyberte kanál, který jste vytvořili dříve, například DeployCustomPolicies.
  3. Vyberte Vytvořit verzi a pak vyberte Vytvořit , aby se verze zařadila do fronty.

Měl by se zobrazit banner s oznámením, že verze byla zařazena do fronty. Pokud chcete zobrazit jeho stav, vyberte odkaz v informačním pruhu nebo ho vyberte v seznamu na kartě Vydané verze .

Další kroky

Přečtěte si další informace: