

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Vérifications des fichiers Dockerfile par Amazon Inspector
<a name="dockerfile-checks"></a>

 Cette section décrit comment utiliser le générateur Amazon Inspector SBOM pour scanner Dockerfiles et stocker des images afin de détecter les erreurs Docker de configuration susceptibles d'introduire des failles de sécurité. 

**Topics**
+ [Utilisation des Sbomgen vérifications Dockerfile](#w2aac39c13b7)
+ [Vérifications Dockerfile prises en charge](#w2aac39c13b9)

## Utilisation des Sbomgen vérifications Dockerfile
<a name="w2aac39c13b7"></a>

 Les vérifications Dockerfile sont effectuées automatiquement lorsqu'un fichier `*.Dockerfile` est nommé `Dockerfile` ou découvert et lorsqu'une image Docker est numérisée. 

 Vous pouvez désactiver les vérifications Dockerfile à l'aide de l'`--skip-scanners dockerfile`argument. Vous pouvez également combiner les vérifications Dockerfile avec n'importe quel scanner disponible, tel que le système d'exploitation ou les packages tiers. 

**Exemples de commandes de vérification Docker**  
 Les exemples de commandes suivants montrent comment générer des images SBOMs pour Dockerfiles et des conteneurs Docker, ainsi que pour des systèmes d'exploitation et des packages tiers. 

```
# generate SBOM only containing Docker checks for Dockerfiles in a local directory
./inspector-sbomgen directory --path ./project/ --scanners dockerfile
            
# generate SBOM for container image will by default include Dockerfile checks
./inspector-sbomgen container --image image:tag

# generate SBOM only containing Docker checks for specific Dockerfiles and Alpine, Debian, and Rhel OS packages in a local directory
/inspector-sbomgen directory --path ./project/ --scanners dockerfile,dpkg,alpine-apk,rhel-rpm

# generate SBOM only containing Docker checks for specific Dockerfiles in a local directory
./inspector-sbomgen directory --path ./project/ --skip-scanners dockerfile
```

**Exemple de composant de fichier**  
 Voici un exemple de recherche Dockerfile pour un composant de fichier. 

```
{
     "bom-ref": "comp-2",
      "name": "dockerfile:data/docker/Dockerfile",
      "properties": [
        {
          "name": "amazon:inspector:sbom_scanner:dockerfile_finding:IN-DOCKER-001",
          "value": "affected_lines:27-27"
        }
      ],
      "type": "file"
    },
```

**Exemple de composant de réponse aux vulnérabilités**  
 Voici un exemple de découverte par Dockerfile d'un composant de réponse à une vulnérabilité. 

```
{
      "advisories": [
        {
          "url": "https://docs.docker.com/develop/develop-images/instructions/"
        }
      ],
      "affects": [
        {
          "ref": "comp-2"
        }
      ],
      "analysis": {
        "state": "in_triage"
      },
      "bom-ref": "vuln-13",
      "created": "2024-03-27T14:36:39Z",
      "description": "apt-get layer caching: Using apt-get update alone in a RUN statement causes caching issues and subsequent apt-get install instructions to fail.",
      "id": "IN-DOCKER-001",
      "ratings": [
        {
          "method": "other",
          "severity": "info",
          "source": {
            "name": "AMAZON_INSPECTOR",
            "url": "https://aws.amazon.com/inspector/"
          }
        }
      ],
      "source": {
        "name": "AMAZON_INSPECTOR",
        "url": "https://aws.amazon.com/inspector/"
      },
      "updated": "2024-03-27T14:36:39Z"
    },
```

**Note**  
 Si vous appelez Sbomgen sans l'`--scan-sbom`indicateur, vous ne pouvez afficher que les résultats bruts de Dockerfile. 

## Vérifications Dockerfile prises en charge
<a name="w2aac39c13b9"></a>

 SbomgenLes vérifications Dockerfile sont prises en charge dans les cas suivants : 
+  Le paquet binaire Sudo 
+  utilitaires APT pour Debian 
+  Secrets codés en dur 
+  Conteneurs pour racines 
+  Indicateurs de commande affaiblissant l'exécution 
+  Variables d'environnement affaiblissant l'exécution 

 Chacune de ces vérifications Dockerfile est associée à une note de gravité correspondante, qui est indiquée en haut des rubriques suivantes. 

**Note**  
 Les recommandations décrites dans les rubriques suivantes sont basées sur les meilleures pratiques du secteur. 

### Le paquet binaire Sudo
<a name="w2aac39c13b9c11"></a>

**Note**  
 L'indice de gravité de cette vérification est **Info**. 

 Nous vous recommandons de ne pas installer ou utiliser le paquet binaire Sudo car il présente un comportement imprévisible en matière de TTY et de transfert de signal. Pour plus d'informations, consultez la section [Utilisateur](https://docs.docker.com/build/building/best-practices/#user) sur le site Web de Docker Docs. [Si votre cas d'utilisation nécessite des fonctionnalités similaires à celles du package binaire Sudo, nous vous recommandons d'utiliser Gosu.](https://github.com/tianon/gosu) 

### Debianutilitaires APT
<a name="w2aac39c13b9c13"></a>

**Note**  
 L'indice de sévérité de cette vérification est **élevé**. 

 Les meilleures pratiques d'utilisation des utilitaires Debian APT sont les suivantes. 

**Combinaison de `apt-get` commandes dans une seule `Run` instruction pour éviter les problèmes de mise en cache**  
 Nous vous recommandons de combiner `apt-get` les commandes dans une seule instruction RUN à l'intérieur de votre conteneur Docker. L'utilisation `apt-get update` en elle-même entraîne des problèmes de mise en cache et l'échec `apt-get install` des instructions ultérieures. Pour plus d'informations, consultez [apt-get sur](https://docs.docker.com/build/building/best-practices/#apt-get) le site Web de Docker Docs. 

**Note**  
 Le comportement de mise en cache décrit peut également se produire à l'intérieur de votre Docker conteneur si le logiciel de conteneur Docker est obsolète. 

**Utilisation de l'utilitaire de ligne de commande APT de manière non interactive**  
 Nous recommandons d'utiliser l'utilitaire de ligne de commande APT de manière interactive. L'utilitaire de ligne de commande APT est conçu comme un outil pour l'utilisateur final et son comportement change d'une version à l'autre. Pour plus d'informations, consultez [Utilisation des scripts et différences par rapport aux autres outils APT](https://manpages.debian.org/stretch/apt/apt.8.en.html#SCRIPT_USAGE_AND_DIFFERENCES_FROM_OTHER_APT_TOOLS) sur le site Web de Debian. 

### Secrets codés en dur
<a name="w2aac39c13b9c15"></a>

**Note**  
 L'indice de gravité de cette vérification est **critique**. 

 Les informations confidentielles contenues dans votre Dockerfile sont considérées comme un secret codé en dur. Les secrets codés en dur suivants peuvent être identifiés par le biais de vérifications de fichiers Sbomgen Docker : 
+  AWS clé d'accès IDs — `AKIAIOSFODNN7EXAMPLE` 
+  AWS clés secrètes — `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` 
+  DockerHub jetons d'accès personnels — `dckr_pat_thisisa27charexample1234567` 
+  GitHub jetons d'accès personnels — `ghp_examplev61wY7Pj1YnotrealUoY123456789` 
+  GitLab jetons d'accès personnels — `glpat-12345example12345678` 

### Conteneurs pour racines
<a name="w2aac39c13b9c17"></a>

**Note**  
 Le marqueur de gravité de cette vérification est **Info**. 

 Nous recommandons d'exécuter des conteneurs Docker sans privilèges root. Pour les charges de travail conteneurisées qui ne peuvent pas être exécutées sans les privilèges root, nous vous recommandons de créer vos applications selon le principe du minimum de privilèges. Pour plus d'informations, consultez la section [Utilisateur](https://docs.docker.com/build/building/best-practices/#user) sur le site Web de Docker Docs. 

### Variables d'environnement affaiblissant l'exécution
<a name="w2aac39c13b9c19"></a>

**Note**  
 L'indice de sévérité de cette vérification est **élevé**. 

 Plusieurs utilitaires de ligne de commande ou environnements d'exécution de langage de programmation permettent de contourner les valeurs par défaut sécurisées, ce qui permet une exécution par le biais de méthodes non sécurisées. 

**NODE\_TLS\_REJECT\_UNAUTHORIZED=0**  
 Lorsque Node.js les processus s'exécutent avec la `NODE_TLS_REJECT_UNAUTHORIZED` valeur définie sur`0`, la validation du certificat TLS est désactivée. Pour plus d'informations, consultez [NODE\_TLS\_REJECT\_UNAUTHORIZED=0](https://nodejs.org/api/cli.html#node_tls_reject_unauthorizedvalue) sur le site Web Node.js. 

**GIT\_SSL\_NO\_VERIFY=\***  
 Lorsque les processus de ligne de commande git s'exécutent avec `GIT_SSL_NO_VERIFY` set, Git ignore la vérification des certificats TLS. Pour plus d'informations, consultez la section [Variables d'environnement](https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables) sur le site Web Git. 

**PIP\_TRUSTED\_HOST=\***  
 Lorsque les processus de ligne de commande Python pip s'exécutent avec `PIP_TRUSTED_HOST` set, Pip ignore la vérification des certificats TLS sur le domaine spécifié. Pour plus d'informations, consultez [--trusted-host](https://pip.pypa.io/en/stable/cli/pip/#cmdoption-trusted-host) sur le site Web de Pip. 

**NPM\_CONFIG\_STRICT\_SSL=Faux**  
 Lorsque les processus de ligne de commande Node.js npm s'exécutent avec `NPM_CONFIG_STRICT_SSL` set to false, l'utilitaire Node Package Manager (npm) se connecte au registre NPM sans valider les certificats TLS. Pour plus d'informations, consultez [strict-ssl sur le site](https://docs.npmjs.com/cli/v10/using-npm/config#strict-ssl) Web de npm Docs. 

### Indicateurs de commande affaiblissant l'exécution
<a name="w2aac39c13b9c21"></a>

**Note**  
 L'indice de sévérité de cette vérification est **élevé**. 

 À l'instar des variables d'environnement qui affaiblissent le temps d'exécution, plusieurs utilitaires de ligne de commande ou environnements d'exécution de langage de programmation permettent de contourner les valeurs par défaut sécurisées, ce qui permet une exécution par le biais de méthodes non sécurisées. 

**`npm ––strict-ssl=false`**  
 Lorsque les processus de ligne de commande Node.js npm sont exécutés avec l'`--strict-ssl=false`indicateur, l'utilitaire Node Package Manager (npm) se connecte au registre NPM sans valider les certificats TLS. Pour plus d'informations, consultez [strict-ssl sur](https://docs.npmjs.com/cli/v10/using-npm/config#strict-ssl) le site Web de npm Docs. 

**`apk ––allow-untrusted`**  
 Lorsque l'Alpine Package Keeperutilitaire est exécuté avec l'`--allow-untrusted`indicateur, il `apk` installe des packages sans signature ou sans signature fiable. Pour plus d'informations, consultez [le référentiel suivant sur le](https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/f9eaeb6429325eeb5a17ed771fd477be9227fe15/doc/apk.8.scd#L114-115) site Web d'Apline. 

**`apt-get ––allow-unauthenticated`**  
 Lorsque l'utilitaire de `apt-get` paquetage Debian est lancé avec l'`--allow-unauthenticated`indicateur, `apt-get` il ne vérifie pas la validité du paquet. Pour plus d'informations, consultez [apt-get (8) sur le site](https://manpages.debian.org/stretch/apt/apt-get.8.en.html) web de Debian. 

**`pip ––trusted-host`**  
 Lorsque l'utilitaire Python pip est exécuté avec l'`--trusted-host`indicateur, le nom d'hôte spécifié ignore la validation du certificat TLS. Pour plus d'informations, consultez [--trusted-host](https://pip.pypa.io/en/stable/cli/pip/#cmdoption-trusted-host) sur le site Web de Pip. 

**`rpm ––nodigest, ––nosignature, ––noverify, ––nofiledigest`**  
 Lorsque le gestionnaire de packages basé sur le RPM `rpm` est exécuté avec les `--nofiledigest` indicateurs`--nodigest`,`--nosignature`, et`--noverify`, le gestionnaire de packages RPM ne valide pas les en-têtes, les signatures ou les fichiers du package lors de l'installation d'un package. Pour plus d'informations, consultez la [page de manuel RPM suivante sur](https://rpm-software-management.github.io/rpm/man/) le site Web RPM. 

**`yum-config-manager ––setopt=sslverify false`**  
 Lorsque le gestionnaire de packages basé sur RPM `yum-config-manager` est exécuté avec l'`--setopt=sslverify`indicateur défini sur false, le gestionnaire de packages YUM ne valide pas les certificats TLS. Pour plus d'informations, consultez la [page de manuel YUM suivante sur le site](https://man7.org/linux/man-pages/man5/yum.conf.5.html) Web de Man7. 

**`yum ––nogpgcheck`**  
 Lorsque le gestionnaire de packages basé sur le RPM `yum` est exécuté avec l'`--nogpgcheck`indicateur, le gestionnaire de packages YUM ignore la vérification des signatures GPG sur les packages. Pour plus d'informations, consultez [yum (8) sur le site](https://man7.org/linux/man-pages/man8/yum.8.html) Web de Man7. 

**`curl ––insecure, curl –k`**  
 Lorsqu'elle `curl` est exécutée avec l'`-k`indicateur `--insecure` ou, la validation du certificat TLS est désactivée. Par défaut, chaque connexion sécurisée établie est vérifiée avant le transfert. `curl` Cette option permet de `curl` sauter l'étape de vérification et de procéder sans vérification. Pour plus d'informations, consultez la [page de manuel Curl suivante sur le site](https://curl.se/docs/manpage.html#-k) Web de Curl. 

**`wget ––no-check-certificate`**  
 Lorsqu'elle `wget` est exécutée avec l'`--no-check-certificate`indicateur, la validation du certificat TLS est désactivée. Pour plus d'informations, consultez la [page de manuel Wget suivante sur le site](https://www.gnu.org/software/wget/manual/wget.html#index-SSL-certificate_002c-check) Web de GNU. 

### Contrôles de suppression des bases de données de packages de systèmes d'exploitation dans les conteneurs
<a name="w2aac39c13b9c23"></a>

**Note**  
 L'indice de gravité de cette vérification est **Info**. 

 La suppression d'une base de données de packages de système d'exploitation réduit la capacité de scanner l'inventaire complet du logiciel d'une image de conteneur. Ces bases de données doivent rester intactes pendant les étapes de création du conteneur. 

 Les contrôles de suppression d'une base de données de packages de système d'exploitation sont pris en charge par les gestionnaires de packages suivants : 

**Package Keeper (APK)**  
 Les images de conteneur utilisant le gestionnaire de packages APK pour les logiciels installés doivent garantir que les fichiers système APK ne sont pas supprimés lors d'une compilation. Pour plus d'informations, consultez la documentation des fichiers système [APK manpages](https://man.archlinux.org/man/apk.8.en#System_files) sur le Arch Linux site Web. 

**Gestionnaire de paquets Debian (DPKG)**  
 Les conteneurs utilisant le gestionnaire de paquets DPKG, tels que les images basées sur Debian, Ubuntu ou Distroless, doivent s'assurer que la base de données DPKG n'est pas supprimée lors de la construction d'un conteneur. Pour plus d'informations, consultez la documentation des fichiers système des [pages de manuel de DPKG](https://manpages.ubuntu.com/manpages/trusty/man1/dpkg.1.html#files) sur le Ubuntu site Web. 

**Gestionnaire de packages RPM (RPM)**  
 Les conteneurs utilisant le RPM Package Manager (yum/dnf), tels qu'Amazon Linux ou Red Hat Enterprise Linux, doivent s'assurer que la base de données RPM n'est pas supprimée lors de la création d'un conteneur. Pour plus d'informations, consultez la documentation des fichiers système des [pages de manuel RPM](https://rpm-software-management.github.io/rpm/man/rpm-common.8#FILES) sur le site Web de RPM. 