Continue met het configureren van continue patching in Azure Container Registry

In dit artikel leert u hoe u continue patches installeert, inschakelt en configureert. Continu patchen wanneer ingeschakeld voor een containerregister zal beveiligingsproblemen op besturingssysteemniveau automatisch voor containerafbeeldingen detecteren en herstellen.

Vereiste voorwaarden

  • U kunt De Azure Cloud Shell of een lokale installatie van de Azure CLI gebruiken met minimaal versie 2.15.0 of hoger.
  • U hebt een bestaande resourcegroep met een Azure Container Registry (ACR).
  • U hebt een Azure Container Registry waarvoor ACR Tasks is ingeschakeld (ACR Tasks wordt niet ondersteund in de gratis laag van ACR).

Voer de volgende opdracht uit om de CLI-extensie te installeren:

    az extension add -n acrcssc

De werkstroom voor continue patches inschakelen

  1. Meld u aan bij Azure CLI met az login.

    az login
    
  2. Meld u aan bij ACR.

    az acr login -n <myRegistry>
    
  3. Voer de volgende opdracht uit om een bestand met de naam continuouspatching.jsonte maken.

    cat <<EOF > continuouspatching.json
    {
        "version": "v1",
        "tag-convention" : "<incremental|floating>",
        "repositories": [{
            "repository": "<Repository Name>",
            "tags": ["<comma-separated-tags>"],   
            "enabled": <true|false>
        }] 
    }
    EOF
    

    Het schema neemt specifieke opslagplaatsen en tags op in een array-indeling. Elke variabele wordt hier gedefinieerd:

    • version hiermee kan het ACR-team bijhouden welke schemaversie u gebruikt. Wijzig deze variabele alleen als u hier instructies voor hebt gegeven.

    • tag-convention is een optioneel veld. Toegestane waarden zijn 'incrementeel' of 'zwevend'. Raadpleeg de belangrijkste concepten van continue patches voor meer informatie.

    • repositories is een matrix die gedetailleerde opslagplaats- en taggegevens bevat:

      • repository verwijst naar de naam van de opslagplaats
      • tags is een matrix met tags, gescheiden door komma's. Het jokerteken * kan worden gebruikt om alle tags in die opslagplaats aan te duiden.
      • enabled is een Booleaanse waarde (waar of onwaar) die aangeeft of de opgegeven repository is ingeschakeld.

    In het onderstaande voorbeeld ziet u een configuratie voor een klant die alle tags wil patchen (gebruik het symbool *) in de opslagplaats pythonen om specifiek de jammy-20240111 tags in jammy-20240125 de opslagplaats ubuntute patchen.

    {
    "version": "v1",
    "tag-convention" : "incremental",
    "repositories": [{
            "repository": "python",
            "tags": ["*"],
            "enabled": true
        },
        {
            "repository": "ubuntu",
            "tags": ["jammy-20240111", "jammy-20240125"],
         "enabled": true, 
        }]
    }
    
  4. Nadat u het configuratiebestand hebt gemaakt, voert u een droge uitvoering uit om te controleren of de beoogde artefacten zijn geselecteerd door de JSON-criteria. Voor de dry run is een parameter vereist die wordt aangeroepen schedule, waarmee wordt aangegeven hoe vaak uw continue patchingcyclus wordt uitgevoerd. De planningsvlag wordt gemeten in dagen, met een minimumwaarde van één dag en een maximumwaarde van 30 dagen. Als u bijvoorbeeld wilt dat een afbeelding elke dag wordt gepatcht, geeft u een planning op als 1d, of 1 dag. Als u een wekelijkse patch (eenmaal per week) wilt, vult u het schema in als 7d, of 7 dagen.

    az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --dry-run   
    

    De --dry-run vlag voert alle opgegeven artefacten uit door de configuratie van het JSON-bestand. Controleer of de juiste artefacten zijn geselecteerd. Met de ubuntu-voorbeeldconfiguratie moeten de volgende resultaten worden weergegeven als uitvoer:

    Ubuntu: jammy-20240111
    Ubuntu: jammy-20240125
    
  5. Zodra u tevreden bent met de resultaten van de proefrun, voert u de create opdracht opnieuw uit zonder de --dry-run flag om uw werkstroom voor continue patches te maken.

    Opmerking

    De --schedule parameter volgt een vermenigvuldiger met een vaste dag vanaf dag 1 van de maand. Dit betekent:

    • Als u --schedule 7d de opdracht opgeeft en uitvoert op de 3e, wordt de volgende geplande uitvoering uitgevoerd op de 7e, omdat 7 het eerste veelvoud is van 7 (dagen) na de 3e, tellend vanaf dag 1 van de maand.
    • Als --schedule 3d en vandaag de 7e is, komt de volgende geplande uitvoering op de 9e, omdat 9 het volgende veelvoud is van 3 dat volgt op 7.
    • Als u de vlag toevoegt --run-immediately, activeert u een onmiddellijke patchuitvoering. De volgende geplande uitvoering blijft uitgelijnd op het dichtstbijzijnde veelvoud van dagen vanaf de eerste van de maand, gebaseerd op uw --schedule waarde.
    • De schema teller wordt elke maand opnieuw ingesteld. Ongeacht het aangewezen schema wordt uw werkstroom uitgevoerd op de eerste van elke maand en volgt u vervolgens de opgegeven planningswaarde voor de rest van de maand. Als mijn patches op 28 januari worden uitgevoerd en mijn schema 7 dagen is, wordt mijn volgende patch uitgevoerd op 1 februari, vervolgens op de achtste en zo verder elke 7 dagen.
    az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --run-immediately
    

    Na een geslaagd commando (ongeacht of u --run-immediately opneemt of niet), wordt een bericht weergegeven waarin wordt bevestigd dat uw werkstroomtaken in de wachtrij staan. U ziet ook een uitvoerparameter die aangeeft wanneer de volgende uitvoering van uw werkstroom is gepland, zodat u precies kunt bijhouden wanneer patches opnieuw worden uitgevoerd.

Azure Portal gebruiken om werkstroomtaken weer te geven

  1. Zodra de workflow is gelukt, gaat u naar de Azure Portal om uw actieve taken weer te geven. Selecteer Opslagplaatsen in het servicemenu onder Services. U ziet nu een nieuwe opslagplaats met de naam csscpolicies/patchpolicy. Deze opslagplaats fungeert als host voor het JSON-configuratieartefact waarnaar continu wordt verwezen voor continue patches.

  2. Selecteer vervolgens onder Services de optie Taken. U ziet nu drie nieuwe taken:

    • cssc-trigger-workflow - met deze taak wordt het configuratiebestand gescand en wordt de scantaak op elke betreffende afbeelding aangeroepen.
    • cssc-scan-image - deze taak scant de image op kwetsbaarheden van het besturingssysteem. Met deze taak wordt de patchtaak alleen geactiveerd als er beveiligingsproblemen met het besturingssysteem zijn gevonden.
    • cssc-patch-image - deze taak patcht de systeemkopie.

    Deze taken werken samen om uw werkstroom voor continue patching uit te voeren.

  3. Als u specifieke taakuitvoeringen wilt zien, selecteert u Uitvoeringen. Hier kunt u statusinformatie bekijken over of de taak is geslaagd of mislukt, samen met het weergeven van een foutopsporingslogboek.

Schermopname van taken die worden uitgevoerd voor continue patches.

CLI gebruiken om werkstroomtaken weer te geven

U kunt ook de volgende CLI-opdracht weergeven uitvoeren voor meer informatie over elke taak en de algemene werkstroom. De opdracht voert de planning, de aanmaakdatum en de systeemgegevens uit, zoals de laatste wijzigingsdatum.

Voorbeeld:

az acr supply-chain workflow show -r myRegistry -g myResourceGroup -t continuouspatchv1 

Als u alle vereiste en optionele vlaggen wilt zien, gebruikt u de Help-opdracht:

az acr supply-chain workflow show --help

De werkstroom voor continue patches bijwerken

Als u wijzigingen wilt aanbrengen in uw werkstroom voor continue patches, gebruikt u de opdracht Update. U kunt uw plannings- of JSON-configuratieschema rechtstreeks bijwerken met de OPDRACHT CLI bijwerken. Voorbeeld:

az acr supply-chain workflow update -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d

Als u uw planning wilt bijwerken, voert u de vorige opdracht uit met een nieuwe invoer voor de planning. Als u uw JSON-configuratie wilt bijwerken, raden we u aan om wijzigingen aan te brengen in het bestand, een droge uitvoering uit te voeren en vervolgens de updateopdracht uit te voeren.

De werkstroom voor continue patches verwijderen

Voer de volgende CLI-opdracht uit om de werkstroom voor continue patches te verwijderen:

az acr supply-chain workflow delete -r myregistry -g myresourcegroup -t continuouspatchv1

Zodra een werkstroom is verwijderd, wordt de opslagplaats 'csscpolicies/patchpolicy' automatisch verwijderd. De drie taken die uw werkstroom uitvoeren worden verwijderd, samen met alle momenteel gequeueerde uitvoeringen.

Problemen met continue patching oplossen

Bekijk deze tips om problemen op te lossen die kunnen optreden met continue patches.

Lopende taken weergeven

Als u belangrijke informatie over foutopsporing wilt ophalen, gebruikt u de volgende opdracht om de laatst uitgevoerde taken voor continue patches weer te geven:

az acr supply-chain workflow list -r <registryname> -g <resourcegroup> [--run-status <failed || successful || running>] -t continuouspatchv1

Een geslaagd resultaat retourneert de volgende informatie:

  • Naam en tag van afbeelding
  • Werkstroomtype
  • Scan status
  • Datum en tijd van laatste scan (als de status is mislukt, blijft de datum leeg)
  • Taak-id scannen (voor verdere foutopsporing)
  • Patch Status
  • Datum en tijd van laatste patch (als de status is mislukt, blijft de datum leeg)
  • Naam van de gepatchte afbeelding + tag
  • Patchtaak-id (voor verdere foutopsporing)

Gebruik [--run-status] om alle taakstatussen te retourneren die overeenkomen met het opgegeven filter. Als u bijvoorbeeld opgeeft --run-status failed, worden alleen beelden vermeld die niet zijn geslaagd voor hun patching.

Actieve taken annuleren

Voor bepaalde scenario's moet u mogelijk taken annuleren die momenteel worden uitgevoerd of wachten om te worden uitgevoerd. U ziet bijvoorbeeld een onjuiste configuratie die u liever meteen wilt herstellen, in plaats van te wachten tot de patchtaken zijn voltooid.

Als u actieve taken wilt annuleren, gebruikt u de volgende CLI-opdracht:

az acr supply-chain workflow cancel-run -r <registryname> -g <resourcegroup> --type <continuouspatchv1>

Met deze opdracht worden alle taken voor continue patches met de status Running, Queuedof Started voor de huidige planning geannuleerd. Als u bijvoorbeeld taken annuleert volgens een dagelijks schema (--schedule 1d), worden taken in die statussen geannuleerd voor die dag, en dan weer gepland voor de volgende dag. Als uw planning wekelijks is, worden geannuleerde taken de volgende week opnieuw weergegeven.

Mislukte taken zoeken

Gebruik de opdracht Takenlijst om alle mislukte taken uit te voeren. Het specificeren van de cssc-patch opdracht is het beste bij falen.

Met deze opdracht worden bijvoorbeeld de tien belangrijkste mislukte patchtaken geretourneerd:

az acr task list-runs -r <registryname> -n cssc-patch-image --run-status Failed --top 10

Als u een specifieke fout wilt onderzoeken, noteer dan het runID resultaat van deze opdracht en voer het volgende uit:

az acr task logs -r <registryname> --run-id <run-id>

Onjuist geconfigureerde werkstroom annuleren

Taken in de wachtrij annuleren met het commando annuleren:

az acr supply-chain workflow cancel-run -r <registryname> -g <resourcegroup> --type <continuouspatchv1>