Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans cet article, vous allez apprendre à installer, activer et configurer la mise à jour corrective continue. La mise à jour corrective continue lorsqu’elle est activée pour un registre de conteneurs détecte et corrige automatiquement les vulnérabilités au niveau du système d’exploitation (système d’exploitation) pour les images conteneur.
Conditions préalables
- Vous pouvez utiliser Azure Cloud Shell ou une installation locale d’Azure CLI avec une version minimale de la version 2.15.0 ou ultérieure.
- Vous disposez d’un groupe de ressources existant avec Azure Container Registry (ACR).
- Vous disposez d’un Registre de conteneurs Azure avec ACR Tasks activé (ACR Tasks n’est pas pris en charge dans le niveau gratuit d’ACR).
Exécutez la commande suivante pour installer l’extension CLI :
az extension add -n acrcssc
Activer le flux de travail de mise à jour corrective continue
Connectez-vous à Azure CLI avec az login.
az loginConnectez-vous à ACR.
az acr login -n <myRegistry>Exécutez la commande suivante pour créer un fichier nommé
continuouspatching.json.cat <<EOF > continuouspatching.json { "version": "v1", "tag-convention" : "<incremental|floating>", "repositories": [{ "repository": "<Repository Name>", "tags": ["<comma-separated-tags>"], "enabled": <true|false> }] } EOFLe schéma ingère des référentiels et des balises spécifiques dans un format de tableau. Chaque variable est définie ici :
versionpermet à l’équipe ACR de suivre la version du schéma que vous utilisez. Ne modifiez pas cette variable, sauf indication.tag-conventionest un champ facultatif. Les valeurs autorisées sont « incrémentielles » ou « flottantes » : reportez-vous aux concepts clés de mise à jour corrective continue pour plus d’informations.repositoriesest un tableau qui se compose d’informations détaillées sur le référentiel et les étiquettes :-
repositoryfait référence au nom du référentiel -
tagsest un tableau de balises séparées par des virgules. Le caractère générique*peut être utilisé pour signer toutes les balises au sein de ce référentiel. -
enabledest une valeur booléenne de true ou false qui détermine si le référentiel spécifié est activé ou non.
-
L’exemple ci-dessous montre une configuration pour un client qui souhaite corriger toutes les balises (utiliser le symbole *) dans le référentiel
python, et corriger spécifiquement les balisesjammy-20240111etjammy-20240125dans le référentielubuntu.{ "version": "v1", "tag-convention" : "incremental", "repositories": [{ "repository": "python", "tags": ["*"], "enabled": true }, { "repository": "ubuntu", "tags": ["jammy-20240111", "jammy-20240125"], "enabled": true, }] }Après avoir créé votre fichier de configuration, exécutez une exécution sèche pour vérifier que les artefacts prévus sont sélectionnés par les critères JSON. L’exécution sèche nécessite un paramètre appelé
schedule, qui spécifie la fréquence à laquelle votre cycle de mise à jour corrective continue s’exécute. L’indicateur de planification est mesuré en jours, avec une valeur minimale d’un jour et une valeur maximale de 30 jours. Par exemple, si vous souhaitez qu’une image soit corrigée tous les jours, vous spécifiez la planification en tant que1dou 1 jour. Si vous souhaitez un correctif hebdomadaire (une fois par semaine), vous devez remplir le calendrier avec7d, ou 7 jours.az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --dry-runL’indicateur
--dry-rungénère tous les artefacts spécifiés par la configuration du fichier JSON. Vérifiez que les artefacts appropriés sont sélectionnés. Avec l’exemple de configuration ubuntu, les résultats suivants doivent être affichés sous forme de sortie :Ubuntu: jammy-20240111 Ubuntu: jammy-20240125Une fois satisfaits des résultats de l’exécution sèche, réexécutez la
createcommande sans l’indicateur--dry-runpour créer votre workflow de mise à jour corrective continue.Remarque
Le
--scheduleparamètre suit un multiplicateur de jour fixe à partir du jour 1 du mois. En d’autres termes :- Si vous spécifiez
--schedule 7det exécutez la commande le 3, la prochaine exécution planifiée sera le 7, car 7 est le premier multiple de 7 (jours) après le 3, à partir du jour 1 du mois. - Si
--scheduleest 3d et que nous sommes aujourd’hui le 7, la prochaine exécution planifiée aura lieu le 9, puisque le 9 est le multiple de 3 qui suit le 7. - Si vous ajoutez l’indicateur
--run-immediately, vous déclenchez une exécution de correctif immédiate. L’exécution planifiée suivante sera toujours alignée sur le multiple de jour le plus proche du premier du mois, sur la base de votre valeur--schedule. - Le compteur d'horaires est réinitialisé chaque mois. Quelle que soit la planification désignée, votre flux de travail s’exécute le premier de chaque mois, puis suit la valeur de planification spécifiée pour le reste du mois. Si ma mise à jour corrective a lieu le 28 janvier et que mon intervalle est de 7 jours, mon prochain correctif aura lieu le premier février, puis le huit, et continuera à suivre un intervalle de 7 jours.
az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --run-immediatelyUne commande réussie (que vous incluiez
--run-immediatelyou non) s’affiche un message de réussite confirmant que vos tâches de flux de travail sont mises en file d’attente. Vous voyez également un paramètre de sortie indiquant quand l’exécution suivante de votre flux de travail est planifiée. Vous pouvez donc suivre exactement quand la mise à jour corrective se produit à nouveau.- Si vous spécifiez
Utiliser le portail Azure pour afficher les tâches de flux de travail
Une fois le flux de travail réussi, accédez au portail Azure pour afficher vos tâches en cours d’exécution. Dans le menu du service, sous Services, sélectionnez Référentiels. Vous devez voir un nouveau référentiel nommé
csscpolicies/patchpolicy. Ce référentiel héberge l’artefact de configuration JSON qui est référencé en permanence pour la mise à jour corrective continue.Ensuite, sous Services, sélectionnez Tâches. Vous devez voir trois nouvelles tâches :
-
cssc-trigger-workflow- cette tâche analyse le fichier de configuration et appelle la tâche d’analyse sur chaque image respective. -
cssc-scan-image- cette tâche analyse l’image pour détecter les vulnérabilités du système d’exploitation. Cette tâche déclenche la tâche de mise à jour corrective uniquement si des vulnérabilités du système d’exploitation ont été détectées. -
cssc-patch-image- cette tâche corrige l’image.
Ces tâches fonctionnent conjointement pour exécuter votre workflow de mise à jour corrective continue.
-
Pour afficher des exécutions de tâches spécifiques, sélectionnez Exécutions. Ici, vous pouvez afficher des informations d'état concernant la réussite ou l'échec de la tâche, ainsi que consulter un journal de débogage.
Utiliser l’interface CLI pour afficher les tâches de flux de travail
Vous pouvez également exécuter la commande cli suivante pour afficher plus de détails sur chaque tâche et le flux de travail général. La commande génère la planification, la date de création et les données système telles que la date de dernière modification.
Par exemple:
az acr supply-chain workflow show -r myRegistry -g myResourceGroup -t continuouspatchv1
Pour afficher tous les indicateurs obligatoires et facultatifs, utilisez la commande d’aide :
az acr supply-chain workflow show --help
** Mettre à jour le flux de travail de correctif continu
Pour apporter des modifications à votre flux de travail de mise à jour corrective continue, utilisez la commande de mise à jour. Vous pouvez mettre à jour votre schéma de configuration JSON ou de planification à l’aide de la commande CLI de mise à jour directement. Par exemple:
az acr supply-chain workflow update -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d
Pour mettre à jour votre planification, exécutez la commande précédente avec une nouvelle entrée pour la planification. Pour mettre à jour votre configuration JSON, nous vous recommandons d’apporter des modifications au fichier, d’exécuter une exécution sèche, puis d’exécuter la commande de mise à jour.
Supprimer le flux de travail de mise à jour corrective continue
Pour supprimer le flux de travail de mise à jour corrective continue, exécutez la commande CLI suivante :
az acr supply-chain workflow delete -r myregistry -g myresourcegroup -t continuouspatchv1
Une fois qu’un flux de travail est correctement supprimé, le dépôt « csscpolicies/patchpolicy » est automatiquement supprimé. Les trois tâches qui exécutent votre workflow seront également supprimées, ainsi que toutes les exécutions actuellement mises en file d’attente.
Résoudre les problèmes de correctifs continus
Passez en revue ces conseils pour résoudre les problèmes que vous pouvez rencontrer avec la mise à jour corrective continue.
Répertorier les tâches en cours d’exécution
Pour obtenir des informations de débogage importantes, utilisez la commande suivante pour répertorier les tâches de mise à jour corrective continue les plus récentes :
az acr supply-chain workflow list -r <registryname> -g <resourcegroup> [--run-status <failed || successful || running>] -t continuouspatchv1
Un résultat réussi retourne les informations suivantes :
- Nom et balise de l’image
- Type de flux de travail
- État de l’analyse
- Date et heure de la dernière analyse (si l’état est en échec, le champ de la date est laissé vide)
- ID de la tâche d’analyse (pour un débogage supplémentaire)
- État des correctifs
- Date et heure du dernier correctif (si le statut a échoué, laissez la date vide)
- Nom de l’image corrigée + balise
- ID de tâche de correctif (pour déboguer supplémentairement)
Utilisez [--run-status] pour retourner tous les états de tâche qui correspondent au filtre spécifié. Par exemple, si vous spécifiez --run-status failed, seules les images qui ont échoué leur mise à jour corrective sont répertoriées.
Annuler les tâches en cours d’exécution
Certains scénarios peuvent nécessiter l’annulation des tâches en cours d’exécution ou en attente d’exécution. Par exemple, vous pouvez voir une configuration incorrecte que vous préférez corriger immédiatement, plutôt que d’attendre que les tâches correctives se terminent.
Pour annuler les tâches en cours d’exécution, utilisez la commande CLI suivante :
az acr supply-chain workflow cancel-run -r <registryname> -g <resourcegroup> --type <continuouspatchv1>
Cette commande annule toutes les tâches de mise à jour corrective continue ayant un statut de Running, Queued ou Started pour le calendrier actuel. Par exemple, si vous annulez des tâches selon une planification quotidienne (--schedule 1d), les tâches dans ces états sont annulées pour ce jour, puis planifiées à nouveau pour le jour suivant. Si votre planification est hebdomadaire, les tâches annulées apparaissent à nouveau la semaine suivante.
Rechercher les tâches ayant échoué
Utilisez la commande de liste des tâches pour afficher toutes les tâches en échec. Il est préférable de spécifier la commande cssc-patch en cas d’échec.
Par exemple, cette commande retourne les 10 principales tâches de correctif ayant échoué :
az acr task list-runs -r <registryname> -n cssc-patch-image --run-status Failed --top 10
Pour examiner un échec spécifique, notez le runID renvoyé par cette commande et exécutez :
az acr task logs -r <registryname> --run-id <run-id>
Annuler un flux de travail mal configuré
Annuler les tâches en file d’attente avec la commande Cancel :
az acr supply-chain workflow cancel-run -r <registryname> -g <resourcegroup> --type <continuouspatchv1>