Analyse d’images Docker
Utilisation du moteur d’exécution Buildah
Une distribution Linux avec un noyau supérieur ou égal à 5.11 est nécessaire pour utiliser le moteur Buildah. Pour plus d’information, voir Prérequis techniques à l’installation de Cyberwatch.
Sur les instances le supportant, Cyberwatch configure par défaut un moteur d’exécution Buildah, du nom de la technologie utilisée. Contrairement à un daemon Docker externe, ce moteur tourne au sein de l’instance Cyberwatch et ne demande aucune configuration supplémentaire.
Pour recréer manuellement le moteur Buildah, ajouter depuis le menu Réglages > Identifiants enregistrés un nouveau moteur d’exécution Docker avec pour URL buildah://
, et sans certificats.
En cas d’utilisation intensive des scans Docker, ou bien dans l’éventualité où les images scannées pourraient contenir du code malveillant, il peut être souhaitable de privilégier un moteur externe afin de répartir la charge ou de renforcer l’isolation de l’exécution.
Configuration d’un moteur d’exécution externe
Tout d’abord, il faut préparer une instance de dockerd acceptant les connexions externes. Pour des raisons de sécurité, il est essentiel d’authentifier la connexion par TLS, tel que décrit dans la documentation officielle de Docker : https://docs.docker.com/engine/security/https/.
Une documentation et des scripts de génération des certificats pour la configuration TLS de votre moteur d’exécution Docker est disponible ici : https://github.com/Cyberwatch/docker-scanner.
Suivre la documentation sur GitHub pour configurer votre moteur d’exécution Docker.
L’équipe support de Cyberwatch est également à disposition pour vous assister à la configuration TLS de votre daemon Docker si nécessaire.
Une fois le moteur configuré avec TLS, vous devriez alors disposer des éléments suivants :
- Le certificat de votre autorité de certification
- Le certificat client signé par l’autorité de certification
- La clé privée associée au certificat client
Finalement, allez sur la page Réglages > Identifiants enregistrés à partir de laquelle vous pourrez ajouter des identifiants de type Moteur d’exécution Docker. L’URL attendue est typiquement de la forme tcp://…:2376
, et les certificats attendus sont ceux décrits ci-dessus.
Configuration des registres
À partir de la page Réglages > Identifiants enregistrés, vous pouvez ajouter des identifiants de type Registre Docker. À des fins de tests, le registre public Docker Hub est configuré par défaut.
Si votre registre utilise un certificat auto-signé, il vous faudra soit désactiver la vérification de certificats, soit le faire signer par une autorité reconnue. Notez également que le moteur d’exécution Docker nécessitera probablement une configuration similaire, telle que décrite dans https://docs.docker.com/registry/insecure/.
Les registres privés Amazon ECR nécessitent un accès à l’API AWS pour l’authentification. La procédure pour créer une clé d’API et l’ajouter en tant qu’identifiants enregistrés à Cyberwatch est la même que pour les découvertes AWS. La clé d’API doit autoriser la création de mot de passe temporaire pour la connexion au registre. Pour ensuite faire apparaitre la sélection de clé AWS sur la page d’ajout d’un registre Docker, l’URL du registre doit terminer par .amazonaws.com
.
Google Artifact Registry requiert une clé JSON de compte de service pour l’authentification. Voir https://cloud.google.com/artifact-registry/docs/docker/authentication?hl=en#json-key pour les détails. Vous devez tout d’abord enregistrer cette clé comme identifiant enregistré de type Google Cloud Platform. Ensuite, lors de l’ajout du registre Docker, vous pourrez sélectionner votre clé GCP aussitôt que l’URL terminera par -docker.pkg.dev
.
Ajout d’une image Docker
Les images Docker sont configurables depuis la page Gestion des actifs > Images Docker.
Pour ajouter une image Docker :
- Aller sur Gestion des actifs > Images Docker
- Cliquer sur Ajouter dans le coin haut droit
Compléter le formulaire :
- Image correspond au nom de l’image Docker au format
namespace/name
. Pour une image officielle hébergée sur Docker Hub, veuillez préciser explicitement l’espace de noms library. - Tag correspond à la version de l’image à utiliser
- Registre correspond au dépôt Docker depuis lequel télécharger l’image
- Moteur d’exécution correspond au moteur d’exécution Docker sur lequel lancer le conteneur et les analyses
- Source correspond au nœud Cyberwatch qui doit envoyer les ordres au moteur d’exécution
- Image correspond au nom de l’image Docker au format
- Cliquer sur Confirmer
Une fois l’image ajoutée, une analyse sera lancée en tâche de fond, et en cas de succès ajoutera l’image à l’inventaire Vulnérabilités. L’actif associé, ou une éventuelle erreur, seront affichés sur l’index Images Docker quand la tâche d’analyse se termine.