Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come installare, abilitare e configurare l'applicazione continua di patch. L'applicazione del patching continuo quando è abilitata per un registro contenitori rileverà e correggerà automaticamente le vulnerabilità a livello di sistema operativo per le immagini dei contenitori.
Prerequisiti
- È possibile usare Azure Cloud Shell o un'installazione locale dell'interfaccia della riga di comando di Azure con una versione minima della versione 2.15.0 o successiva.
- Hai un gruppo di risorse esistente con un Registro Container di Azure.
- Hai un Azure Container Registry con le attività ACR abilitate. Le attività ACR non sono supportate nel livello gratuito di Azure Container Registry.
Eseguire il comando seguente per installare l'estensione dell'interfaccia della riga di comando:
az extension add -n acrcssc
Abilitare il flusso di lavoro di applicazione continua delle patch
Accedere all'interfaccia della riga di comando di Azure con az login.
az loginAccedere a Registro Azure Container.
az acr login -n <myRegistry>Eseguire il comando seguente per creare un file denominato
continuouspatching.json.cat <<EOF > continuouspatching.json { "version": "v1", "tag-convention" : "<incremental|floating>", "repositories": [{ "repository": "<Repository Name>", "tags": ["<comma-separated-tags>"], "enabled": <true|false> }] } EOFLo schema inserisce repository e tag specifici in un formato di matrice. Ogni variabile è definita qui:
versionconsente al team ACR di Azure Container Registry di tenere traccia della versione dello schema in uso. Non modificare questa variabile a meno che non venga richiesto.tag-conventionè un campo facoltativo. I valori consentiti sono "incrementali" o "fluttuante". Per ulteriori informazioni, vedere Concetti chiave dell'applicazione di patch continua.repositoriesè una matrice costituita da informazioni dettagliate sul repository e sui tag:-
repositoryfa riferimento al nome del repository -
tagsè una matrice di tag separati da virgole. Il carattere jolly (wildcard)*può essere utilizzato per indicare tutti i tag all'interno di quel repository. -
enabledè un valore booleano true o false che determina se il repository specificato è abilitato o meno.
-
L'esempio seguente mostra una configurazione per un cliente che vuole applicare patch a tutti i tag (usare il simbolo *) all'interno del repository
pythone per applicare patch in modo specifico aijammy-20240111tag ejammy-20240125nel repositoryubuntu.{ "version": "v1", "tag-convention" : "incremental", "repositories": [{ "repository": "python", "tags": ["*"], "enabled": true }, { "repository": "ubuntu", "tags": ["jammy-20240111", "jammy-20240125"], "enabled": true, }] }Dopo aver creato il file di configurazione, eseguire un'esecuzione asciutta per verificare che gli artefatti previsti siano selezionati dai criteri JSON. L'esecuzione a secco richiede un parametro denominato
schedule, che specifica la frequenza con cui viene eseguito il ciclo di applicazione di patch continuo. L'indicatore di pianificazione è misurato in giorni, con un valore minimo di un giorno e un valore massimo di 30 giorni. Ad esempio, se si vuole applicare patch a un'immagine ogni giorno, è necessario specificare la pianificazione come1do 1 giorno. Se si desidera una patch settimanale (una volta alla settimana), è necessario impostare la pianificazione come7d, o 7 giorni.az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --dry-runIl
--dry-runflag restituisce tutti gli artefatti specificati dalla configurazione del file JSON. Verificare che siano selezionati gli artefatti corretti. Con la configurazione ubuntu di esempio, i risultati seguenti devono essere visualizzati come output:Ubuntu: jammy-20240111 Ubuntu: jammy-20240125Quando i risultati ottenuti con dry-run sono soddisfacenti, eseguire nuovamente il comando
createsenza il flag--dry-runper creare il flusso di lavoro di applicazione patch continuo.Annotazioni
Il
--scheduleparametro segue un moltiplicatore a giorno fisso a partire dal giorno 1 del mese. Questo significa che:- Se si specifica
--schedule 7de si esegue il comando il 3°, l'esecuzione pianificata successiva sarà il 7, perché 7 è il primo multiplo di 7 (giorni) dopo il 3°, contando dal giorno 1 del mese. - Se
--scheduleè 3d e oggi è il 7°, la prossima corsa pianificata atterra il 9° – dal momento che 9 è il successivo multiplo di 3 che segue 7. - Se si aggiunge il flag
--run-immediately, si attiva un'esecuzione immediata della patch. L'esecuzione pianificata successiva sarà comunque allineata al multiplo di giorni più vicino a partire dal primo del mese, in base al valore--schedulespecificato. - Il contatore della pianificazione viene reimpostato ogni mese. Indipendentemente dalla pianificazione designata, il flusso di lavoro verrà eseguito il primo di ogni mese, quindi seguire il valore di pianificazione specificato per il resto del mese. Se la mia patch viene eseguita il 28 gennaio e la mia pianificazione è di 7 giorni, la prossima patch verrà eseguita il primo febbraio, poi l'otto, e continuerà a seguire i 7 giorni.
az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --run-immediatelyAl termine di un comando riuscito (indipendentemente dal fatto che
--run-immediatelysia incluso o meno), viene visualizzato un messaggio che conferma che le attività del flusso di lavoro vengono accodate. Viene inoltre visualizzato un parametro di output che indica quando è pianificata l'esecuzione successiva del flusso di lavoro, in modo da poter tenere traccia esattamente quando si verificherà nuovamente l'applicazione di patch.- Se si specifica
Usare il portale di Azure per visualizzare le attività del flusso di lavoro
Al termine del flusso di lavoro, passare al portale di Azure per visualizzare le attività in esecuzione. Nel menu del servizio, in Servizi, selezionare Repository. Verrà visualizzato un nuovo repository denominato
csscpolicies/patchpolicy. Questo repository ospita l'artefatto di configurazione JSON a cui viene fatto riferimento continuamente per l'applicazione continua di patch.Quindi, in Servizi selezionare Attività. Verranno visualizzate tre nuove attività:
-
cssc-trigger-workflow- questa attività analizza il file di configurazione e invoca il processo di scansione su ciascuna rispettiva immagine. -
cssc-scan-image: questa attività analizza l'immagine per individuare le vulnerabilità del sistema operativo. Questa attività attiva l'attività di applicazione di patch solo se sono state rilevate vulnerabilità del sistema operativo. -
cssc-patch-image- questa attività applica una patch all'immagine.
Queste attività funzionano insieme per eseguire il flusso di lavoro di applicazione continua delle patch.
-
Per visualizzare esecuzioni di attività specifiche, selezionare Esecuzioni. Qui è possibile visualizzare informazioni sullo stato relative all'esito positivo o negativo dell'attività, insieme alla visualizzazione di un log di debug.
Usare l'interfaccia della riga di comando per visualizzare le attività del flusso di lavoro
È anche possibile eseguire il comando seguente dell'interfaccia della riga di comando per visualizzare altri dettagli su ogni attività e sul flusso di lavoro generale. Il comando restituisce la pianificazione, la data di creazione e i dati di sistema, ad esempio la data dell'ultima modifica.
Per esempio:
az acr supply-chain workflow show -r myRegistry -g myResourceGroup -t continuouspatchv1
Per visualizzare tutti i flag obbligatori e facoltativi, usare il comando di aiuto:
az acr supply-chain workflow show --help
Aggiornare il flusso di lavoro per il patching continuo
Per apportare modifiche al flusso di lavoro di applicazione continua di patch, usare il comando update. È possibile aggiornare direttamente il programma o lo schema di configurazione JSON con il comando CLI di aggiornamento. Per esempio:
az acr supply-chain workflow update -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d
Per aggiornare la pianificazione, eseguire il comando precedente con un nuovo input per la pianificazione. Per aggiornare la configurazione JSON, è consigliabile apportare modifiche al file, eseguire un'esecuzione a secco e quindi eseguire il comando di aggiornamento.
Eliminare il flusso di lavoro di patching continuo
Per eliminare il flusso di lavoro di patching continuo, eseguire il seguente comando dell'interfaccia a riga di comando:
az acr supply-chain workflow delete -r myregistry -g myresourcegroup -t continuouspatchv1
Dopo l'eliminazione di un flusso di lavoro, il repository "csscpolicies/patchpolicy" verrà eliminato automaticamente. Verranno eliminate anche le tre attività che eseguono il flusso di lavoro, insieme a tutte le esecuzioni attualmente in coda.
Risolvere i problemi delle patch continue
Esaminare questi suggerimenti per risolvere i problemi che possono verificarsi con l'applicazione continua di patch.
Elencare le attività in esecuzione
Per ottenere informazioni importanti sul debug, usare il comando seguente per elencare le attività di applicazione di patch continue eseguite più di recente:
az acr supply-chain workflow list -r <registryname> -g <resourcegroup> [--run-status <failed || successful || running>] -t continuouspatchv1
Un risultato positivo restituirà le informazioni seguenti:
- Nome e tag dell'immagine
- Tipo di flusso di lavoro
- Analizzare lo stato
- Data e ora dell'ultima scansione (se lo stato non è riuscito, la data rimarrà vuota)
- ID attività analisi (per altra attività di debug)
- Stato patch
- Data e ora dell'ultima patch (se lo stato fallisce, la data sarà lasciata vuota)
- Nome immagine con patch + tag
- ID attività di patch (per ulteriori operazioni di debug)
Usare [--run-status] per restituire tutti gli stati dell'attività corrispondenti al filtro specificato. Ad esempio, se si specifica --run-status failed, verranno elencate solo le immagini che hanno avuto esito negativo per l'applicazione di patch.
Annullare le attività in esecuzione
Alcuni scenari possono richiedere l'annullamento di attività attualmente in esecuzione o in attesa di esecuzione. Ad esempio, è possibile che venga visualizzata una configurazione errata che si preferisce correggere subito, anziché attendere il completamento delle attività di patch.
Per annullare le attività in esecuzione, usare il comando della CLI seguente:
az acr supply-chain workflow cancel-run -r <registryname> -g <resourcegroup> --type <continuouspatchv1>
Questo comando annulla tutte le attività di patching continue con stato Running, Queued o Started per la pianificazione corrente. Ad esempio, se si annullano le attività in base a una pianificazione giornaliera (--schedule 1d), le attività in tali stati vengono annullate per quel giorno, quindi pianificate di nuovo per il giorno successivo. Se la pianificazione è settimanale, le attività annullate vengono visualizzate di nuovo la settimana successiva.
Trovare le attività non riuscite
Usare il comando elenco attività per restituire tutte le attività non riuscite. Specificare il comando cssc-patch è la soluzione migliore in caso di errore.
Ad esempio, questo comando restituisce le prime 10 attività di patch non riuscite:
az acr task list-runs -r <registryname> -n cssc-patch-image --run-status Failed --top 10
Per analizzare un errore specifico, prendere nota dell'oggetto runID restituito da questo comando ed eseguire:
az acr task logs -r <registryname> --run-id <run-id>
Annullare un flusso di lavoro non configurato correttamente
Annullare le attività in coda con il comando cancel:
az acr supply-chain workflow cancel-run -r <registryname> -g <resourcegroup> --type <continuouspatchv1>