⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Intégrer Docker Scout avec Artifactory

L'intégration de Docker Scout avec JFrog Artifactory vous permet d'exécuter l'analyse d'image automatiquement sur les images dans les registres Artifactory.

Analyse d'image locale

Vous pouvez analyser les images Artifactory pour les vulnérabilités localement en utilisant Docker Desktop ou la CLI Docker. Vous devez d'abord vous authentifier avec JFrog Artifactory en utilisant la commande docker login. Par exemple :

docker login {URL}
Tip

Pour Artifactory hébergé dans le cloud, vous pouvez trouver les identifiants pour votre dépôt Artifactory en le sélectionnant dans l'interface utilisateur Artifactory puis le bouton Set Me Up.

Analyse d'image distante

Pour analyser automatiquement les images s'exécutant dans des environnements distants, vous devez déployer l'agent Docker Scout Artifactory. L'agent est un service autonome qui analyse les images et télécharge le résultat vers Docker Scout. Vous pouvez voir les résultats en utilisant le Tableau de bord Docker Scout.

Comment fonctionne l'agent

L'agent Docker Scout Artifactory est disponible comme image sur Docker Hub. L'agent fonctionne en interrogeant continuellement Artifactory pour de nouvelles images. Quand il trouve une nouvelle image, il effectue les étapes suivantes :

  1. Tirer l'image depuis Artifactory
  2. Analyser l'image
  3. Télécharger le résultat d'analyse vers Docker Scout

L'agent enregistre la Nomenclature des Composants Logiciels (SBOM) pour l'image, et les SBOM pour toutes ses images de base. Les SBOM enregistrés incluent à la fois les programmes ou dépendances au niveau du Système d'Exploitation (OS) et au niveau application que l'image contient.

De plus, l'agent envoie les métadonnées suivantes sur l'image à Docker Scout :

  • L'URL du dépôt source et le SHA de commit pour l'image
  • Instructions de construction
  • Date de construction
  • Tags et digest
  • Plateformes cibles
  • Tailles de couches

L'agent ne transmet jamais l'image elle-même, ni aucune donnée à l'intérieur de l'image, comme le code, les binaires, et les blobs de couches.

L'agent ne détecte pas et n'analyse pas les images préexistantes. Il analyse seulement les images qui apparaissent dans le registre pendant que l'agent s'exécute.

Déployer l'agent

Cette section décrit les étapes pour déployer l'agent Artifactory.

Prérequis

Avant de déployer l'agent, assurez-vous de remplir les prérequis :

  • Le serveur où vous hébergez l'agent peut accéder aux ressources suivantes sur le réseau :
    • Votre instance JFrog Artifactory
    • hub.docker.com, port 443, pour s'authentifier avec Docker
    • api.dso.docker.com, port 443, pour transmettre des données à Docker Scout
  • Les registres sont des registres Docker V2. Les registres V1 ne sont pas supportés.

L'agent supporte toutes les versions de JFrog Artifactory et JFrog Container Registry.

Créer le fichier de configuration

Vous configurez l'agent en utilisant un fichier JSON. L'agent s'attend à ce que le fichier de configuration soit dans /opt/artifactory-agent/data/config.json au démarrage.

Le fichier de configuration inclut les propriétés suivantes :

Propriété Description
agent_id Identifiant unique pour l'agent.
docker.organization_name Nom de l'organisation Docker.
docker.username Nom d'utilisateur de l'utilisateur admin dans l'organisation Docker.
docker.pat Jeton d'accès personnel de l'utilisateur admin avec permissions de lecture et écriture.
artifactory.base_url URL de base de l'instance Artifactory.
artifactory.username Nom d'utilisateur de l'utilisateur Artifactory avec permissions de lecture que l'agent utilisera.
artifactory.password Mot de passe ou jeton API pour l'utilisateur Artifactory.
artifactory.image_filters Optionnel : Liste des dépôts et images à analyser.

Si vous ne spécifiez aucun dépôt dans artifactory.image_filters, l'agent exécute l'analyse d'image sur toutes les images dans votre instance Artifactory.

L'extrait suivant montre une configuration d'exemple :

{
  "agent_id": "acme-prod-agent",
  "docker": {
    "organization_name": "acme",
    "username": "mobythewhale",
    "pat": "dckr_pat__dsaCAs_xL3kNyupAa7dwO1alwg"
  },
  "artifactory": [
    {
      "base_url": "https://acme.jfrog.io",
      "username": "acmeagent",
      "password": "hayKMvFKkFp42RAwKz2K",
      "image_filters": [
        {
          "repository": "dev-local",
          "images": ["internal/repo1", "internal/repo2"]
        },
        {
          "repository": "prod-local",
          "images": ["staging/repo1", "prod/repo1"]
        }
      ]
    }
  ]
}

Créez un fichier de configuration et sauvegardez-le quelque part sur le serveur où vous prévoyez d'exécuter l'agent. Par exemple, /var/opt/artifactory-agent/config.json.

Exécuter l'agent

L'exemple suivant montre comment exécuter l'agent Docker Scout Artifactory en utilisant docker run. Cette commande crée un montage de liaison pour le répertoire contenant le fichier de configuration JSON créé plus tôt à /opt/artifactory-agent/data à l'intérieur du conteneur. Assurez-vous que le chemin de montage que vous utilisez est le répertoire contenant le fichier config.json.

Important

Utilisez le tag v1 de l'image agent Artifactory. N'utilisez pas le tag latest car cela pourrait causer des changements cassants.

$ docker run \
  --mount type=bind,src=/var/opt/artifactory-agent,target=/opt/artifactory-agent/data \
  docker/artifactory-agent:v1

Analyser les données préexistantes

Par défaut, l'agent détecte et analyse les images au fur et à mesure qu'elles sont créées et mises à jour. Si vous voulez utiliser l'agent pour analyser des images préexistantes, vous pouvez utiliser le mode de remplissage. Utilisez l'option de ligne de commande --backfill-from=TIME, où TIME est un temps formaté ISO 8601, pour exécuter l'agent en mode de remplissage. Si vous utilisez cette option, l'agent analyse toutes les images poussées entre ce temps et le temps actuel quand l'agent démarre, puis se ferme.

Par exemple :

$ docker run \
  --mount type=bind,src=/var/opt/artifactory-agent,target=/opt/artifactory-agent/data \
  docker/artifactory-agent:v1 --backfill-from=2022-04-10T10:00:00Z

Lors de l'exécution d'un remplissage plusieurs fois, l'agent n'analysera pas les images qu'il a déjà analysées. Pour forcer la ré-analyse, fournissez le drapeau de ligne de commande --force.

Voir les résultats d'analyse

Vous pouvez voir les résultats d'analyse d'image dans le Tableau de bord Docker Scout.

  1. Allez à la page Images dans le Tableau de bord Docker Scout.

    Cette page affiche les dépôts activés Docker Scout dans votre organisation.

  2. Sélectionnez l'image dans la liste.

  3. Sélectionnez le tag.

Quand vous avez sélectionné un tag, vous êtes amené au rapport de vulnérabilité pour ce tag. Ici, vous pouvez sélectionner si vous voulez voir toutes les vulnérabilités dans l'image, ou les vulnérabilités introduites dans une couche spécifique. Vous pouvez aussi filtrer les vulnérabilités par gravité, et s'il y a ou non une version de correction disponible.