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}
TipPour 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 :
- Tirer l'image depuis Artifactory
- Analyser l'image
- 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 Dockerapi.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
.
ImportantUtilisez le tag
v1
de l'image agent Artifactory. N'utilisez pas le taglatest
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.
-
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.
-
Sélectionnez l'image dans la liste.
-
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.