

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Amazon Inspector Dockerfile-Prüfungen
<a name="dockerfile-checks"></a>

 In diesem Abschnitt wird beschrieben, wie Sie den Amazon Inspector SBOM Generator verwenden, um Bilder zu scannen Dockerfiles und Docker zu speichern, um Fehlkonfigurationen zu erkennen, die zu Sicherheitslücken führen. 

**Topics**
+ [Dockerfile-Prüfungen verwenden Sbomgen](#w2aac39c13b7)
+ [Unterstützte Dockerfile-Prüfungen](#w2aac39c13b9)

## Dockerfile-Prüfungen verwenden Sbomgen
<a name="w2aac39c13b7"></a>

 Dockerfile-Prüfungen werden automatisch durchgeführt, wenn eine Datei mit dem Namen `Dockerfile` oder entdeckt `*.Dockerfile` wird und wenn ein Docker-Image gescannt wird. 

 Sie können Dockerfile-Prüfungen mit dem Argument deaktivieren. `--skip-scanners dockerfile` Sie können Dockerfile-Prüfungen auch mit allen verfügbaren Scannern kombinieren, z. B. mit Betriebssystemen oder Paketen von Drittanbietern. 

**Beispiele für Docker-Checkbefehle**  
 Die folgenden Beispielbefehle zeigen, wie SBOMs für Dockerfiles und Docker-Container-Images sowie für Betriebssysteme und Pakete von Drittanbietern generiert werden. 

```
# 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
```

**Beispiel für eine Dateikomponente**  
 Im Folgenden finden Sie ein Beispiel für eine Dockerfile-Suche nach einer Dateikomponente. 

```
{
     "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"
    },
```

**Beispiel einer Komponente zur Reaktion auf Sicherheitslücken**  
 Im Folgenden finden Sie ein Beispiel für eine Dockerfile-Suche nach einer Komponente zur Reaktion auf Sicherheitslücken. 

```
{
      "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"
    },
```

**Anmerkung**  
 Wenn Sie Sbomgen ohne das `--scan-sbom` Flag aufrufen, können Sie nur Rohergebnisse von Dockerfile anzeigen. 

## Unterstützte Dockerfile-Prüfungen
<a name="w2aac39c13b9"></a>

 SbomgenDockerfile-Prüfungen werden für Folgendes unterstützt: 
+  Das Sudo-Binärpaket 
+  APT-Dienstprogramme von Debian 
+  Hartcodierte Geheimnisse 
+  Root-Container 
+  Schwächung der Befehlsflags zur Laufzeit 
+  Umgebungsvariablen, die die Laufzeit schwächen 

 Jede dieser Dockerfile-Prüfungen hat einen entsprechenden Schweregrad, der oben in den folgenden Themen angegeben ist. 

**Anmerkung**  
 Die in den folgenden Themen beschriebenen Empfehlungen basieren auf bewährten Verfahren der Branche. 

### Das Sudo-Binärpaket
<a name="w2aac39c13b9c11"></a>

**Anmerkung**  
 Der Schweregrad dieser Prüfung ist **Info**. 

 Wir empfehlen, das Sudo-Binärpaket nicht zu installieren oder zu verwenden, da es ein unvorhersehbares TTY- und Signalweiterleitungsverhalten aufweist. Weitere Informationen finden Sie unter [Benutzer](https://docs.docker.com/build/building/best-practices/#user) auf der Docker Docs-Website. [Wenn Ihr Anwendungsfall eine ähnliche Funktionalität wie das Sudo-Binärpaket erfordert, empfehlen wir die Verwendung von Gosu.](https://github.com/tianon/gosu) 

### DebianAPT-Dienstprogramme
<a name="w2aac39c13b9c13"></a>

**Anmerkung**  
 Der Schweregrad dieser Prüfung ist **Hoch**. 

 Im Folgenden finden Sie bewährte Methoden für die Verwendung von Debian APT-Dienstprogrammen. 

**Kombinieren von `apt-get` Befehlen in einer einzigen `Run` Anweisung, um Probleme beim Zwischenspeichern zu vermeiden**  
 Wir empfehlen, `apt-get` Befehle in einer einzigen RUN-Anweisung innerhalb Ihres Docker-Containers zu kombinieren. Die `apt-get update` alleinige Verwendung führt zu Caching-Problemen und nachfolgenden `apt-get install` Anweisungen schlagen fehl. Weitere Informationen finden Sie unter [apt-get](https://docs.docker.com/build/building/best-practices/#apt-get) auf der Docker Docs-Website. 

**Anmerkung**  
 Das beschriebene Caching-Verhalten kann auch innerhalb Ihres Docker Containers auftreten, wenn die Docker-Container-Software veraltet ist. 

**Verwenden Sie das APT-Befehlszeilenprogramm auf nicht interaktive Weise**  
 Wir empfehlen, das APT-Befehlszeilenprogramm interaktiv zu verwenden. Das APT-Befehlszeilenprogramm ist als Tool für Endbenutzer konzipiert, und sein Verhalten ändert sich zwischen den Versionen. Weitere Informationen finden Sie auf der Debian-Website unter [Verwendung von Skripten und Unterschiede zu anderen APT-Tools](https://manpages.debian.org/stretch/apt/apt.8.en.html#SCRIPT_USAGE_AND_DIFFERENCES_FROM_OTHER_APT_TOOLS). 

### Hartcodierte Geheimnisse
<a name="w2aac39c13b9c15"></a>

**Anmerkung**  
 Der Schweregrad dieser Prüfung ist **Kritisch**. 

 Vertrauliche Informationen in Ihrem Dockerfile werden als fest codiertes Geheimnis betrachtet. Die folgenden hartcodierten Geheimnisse können durch Sbomgen Docker-Dateiprüfungen identifiziert werden: 
+  AWS Zugriffsschlüssel — IDs `AKIAIOSFODNN7EXAMPLE` 
+  AWS geheime Schlüssel — `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` 
+  DockerHub persönliche Zugriffstoken — `dckr_pat_thisisa27charexample1234567` 
+  GitHub persönliche Zugriffstoken — `ghp_examplev61wY7Pj1YnotrealUoY123456789` 
+  GitLab persönliche Zugriffstoken — `glpat-12345example12345678` 

### Root-Container
<a name="w2aac39c13b9c17"></a>

**Anmerkung**  
 Der Schweregrad für diese Prüfung ist **Info**. 

 Wir empfehlen, Docker-Container ohne Root-Rechte auszuführen. Für containerisierte Workloads, die ohne Root-Rechte nicht ausgeführt werden können, empfehlen wir, Ihre Anwendungen nach einem Prinzip mit den geringsten Rechten zu erstellen. Weitere Informationen finden Sie unter [Benutzer](https://docs.docker.com/build/building/best-practices/#user) auf der Docker Docs-Website. 

### Umgebungsvariablen, die die Laufzeit schwächen
<a name="w2aac39c13b9c19"></a>

**Anmerkung**  
 Der Schweregrad dieser Prüfung ist **Hoch**. 

 Verschiedene Befehlszeilenprogramme oder Runtimes in Programmiersprachen unterstützen die Umgehung sicherer Standardeinstellungen, wodurch die Ausführung mit unsicheren Methoden ermöglicht wird. 

**NODE\$1TLS\$1REJECT\$1UNAUTHORIZED=0**  
 Wenn Node.js Prozesse mit der Einstellung auf ausgeführt werden, ist die TLS-Zertifikatsvalidierung deaktiviert. `NODE_TLS_REJECT_UNAUTHORIZED` `0` Weitere Informationen finden Sie unter [NODE\$1TLS\$1REJECT\$1UNAUTHORIZED=0 auf der Website Node.js](https://nodejs.org/api/cli.html#node_tls_reject_unauthorizedvalue). 

**GIT\$1SSL\$1NO\$1VERIFY=\$1**  
 Wenn Git-Befehlszeilenprozesse mit `GIT_SSL_NO_VERIFY` set ausgeführt werden, überspringt Git die Überprüfung von TLS-Zertifikaten. Weitere Informationen finden Sie unter [Umgebungsvariablen](https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables) auf der Git-Website. 

**PIP\$1TRUSTED\$1HOST=\$1**  
 Wenn Python Pip-Befehlszeilenprozesse mit `PIP_TRUSTED_HOST` set ausgeführt werden, überspringt Pip die Überprüfung von TLS-Zertifikaten auf der angegebenen Domain. Weitere Informationen finden Sie unter [--trusted-host](https://pip.pypa.io/en/stable/cli/pip/#cmdoption-trusted-host) auf der Pip-Website. 

**npm\$1config\$1strict\$1ssl=False**  
 Wenn Node.js npm-Befehlszeilenprozesse mit dem `NPM_CONFIG_STRICT_SSL` Wert false ausgeführt werden, stellt das Node Package Manager (npm) -Hilfsprogramm eine Verbindung zur NPM-Registrierung her, ohne die TLS-Zertifikate zu überprüfen. Weitere Informationen finden Sie unter [strict-ssl](https://docs.npmjs.com/cli/v10/using-npm/config#strict-ssl) auf der Website von npm Docs. 

### Befehlsflags werden zur Laufzeit geschwächt
<a name="w2aac39c13b9c21"></a>

**Anmerkung**  
 Der Schweregrad dieser Prüfung ist **Hoch**. 

 Ähnlich wie bei Umgebungsvariablen, die die Laufzeit schwächen, unterstützen mehrere Befehlszeilenprogramme oder Laufzeitumgebungen in Programmiersprachen die Umgehung sicherer Standardwerte, was die Ausführung mit unsicheren Methoden ermöglicht. 

**`npm ––strict-ssl=false`**  
 Wenn die npm-Befehlszeilenprozesse von Node.js mit dem `--strict-ssl=false` Flag ausgeführt werden, stellt das Node Package Manager (npm) -Hilfsprogramm eine Verbindung zur NPM-Registrierung her, ohne die TLS-Zertifikate zu überprüfen. Weitere Informationen finden Sie unter [strict-ssl](https://docs.npmjs.com/cli/v10/using-npm/config#strict-ssl) auf der npm Docs-Website. 

**`apk ––allow-untrusted`**  
 Wenn das Alpine Package Keeper Hilfsprogramm mit dem `--allow-untrusted` Flag ausgeführt wird, `apk` werden Pakete ohne oder ohne vertrauenswürdige Signaturen installiert. Weitere Informationen finden Sie im [folgenden Repository auf der](https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/f9eaeb6429325eeb5a17ed771fd477be9227fe15/doc/apk.8.scd#L114-115) Apline-Website. 

**`apt-get ––allow-unauthenticated`**  
 Wenn das `apt-get` Debian-Paket-Hilfsprogramm mit dem `--allow-unauthenticated` Flag ausgeführt wird, überprüft `apt-get` es nicht die Gültigkeit des Pakets. Weitere Informationen finden Sie unter [apt-Get (8)](https://manpages.debian.org/stretch/apt/apt-get.8.en.html) auf der Debian-Webseite. 

**`pip ––trusted-host`**  
 Wenn das Python Pip-Hilfsprogramm mit dem `--trusted-host` Flag ausgeführt wird, umgeht der angegebene Hostname die Validierung des TLS-Zertifikats. Weitere Informationen finden Sie unter [--trusted-host](https://pip.pypa.io/en/stable/cli/pip/#cmdoption-trusted-host) auf der Pip-Website. 

**`rpm ––nodigest, ––nosignature, ––noverify, ––nofiledigest`**  
 Wenn der RPM-basierte Paketmanager mit den `--nofiledigest` Flags,, und ausgeführt `rpm` wird `--nodigest` `--nosignature``--noverify`, validiert der RPM-Paketmanager bei der Installation eines Pakets keine Paket-Header, Signaturen oder Dateien. Weitere Informationen finden Sie auf der folgenden [RPM-Handbuchseite auf der RPM-Website](https://rpm-software-management.github.io/rpm/man/). 

**`yum-config-manager ––setopt=sslverify false`**  
 Wenn der RPM-basierte Paketmanager mit dem `--setopt=sslverify` Flag auf False ausgeführt `yum-config-manager` wird, validiert der YUM-Paketmanager keine TLS-Zertifikate. Weitere Informationen finden Sie auf der folgenden [YUM-Handbuchseite auf](https://man7.org/linux/man-pages/man5/yum.conf.5.html) der Man7-Website. 

**`yum ––nogpgcheck`**  
 Wenn der RPM-basierte Paketmanager mit dem `--nogpgcheck` Flag ausgeführt `yum` wird, überspringt der YUM-Paketmanager die Überprüfung der GPG-Signaturen auf Paketen. Weitere Informationen finden Sie unter [yum (8)](https://man7.org/linux/man-pages/man8/yum.8.html) auf der Man7-Website. 

**`curl ––insecure, curl –k`**  
 Wenn sie mit dem `-k` Flag `--insecure` oder ausgeführt `curl` wird, ist die TLS-Zertifikatsvalidierung deaktiviert. Standardmäßig wird jede sichere Verbindung, die `curl` hergestellt wird, als sicher verifiziert, bevor die Übertragung stattfindet. Bei dieser Option können `curl` Sie den Bestätigungsschritt überspringen und ohne Überprüfung fortfahren. Weitere Informationen finden Sie auf der folgenden [Curl-Handbuchseite auf](https://curl.se/docs/manpage.html#-k) der Curl-Website. 

**`wget ––no-check-certificate`**  
 Wenn mit dem `--no-check-certificate` Flag ausgeführt `wget` wird, ist die TLS-Zertifikatsvalidierung deaktiviert. Weitere Informationen finden Sie auf der folgenden [Wget-Handbuchseite auf](https://www.gnu.org/software/wget/manual/wget.html#index-SSL-certificate_002c-check) der GNU-Website. 

### Beim Entfernen werden Betriebssystem-Paketdatenbanken in Containern überprüft
<a name="w2aac39c13b9c23"></a>

**Anmerkung**  
 Der Schweregrad dieser Prüfung ist **Info**. 

 Das Entfernen einer Betriebssystem-Paketdatenbank reduziert die Möglichkeit, das gesamte Inventar der Software eines Container-Images zu scannen. Diese Datenbanken sollten während der Container-Build-Schritte intakt bleiben. 

 Entfernungsprüfungen für eine Betriebssystem-Paketdatenbank werden für die folgenden Paketmanager unterstützt: 

**Alpine Package Keeper (APK)**  
 Container-Images, die den APK-Paketmanager für installierte Software verwenden, müssen sicherstellen, dass APK-Systemdateien während eines Builds nicht entfernt werden. Weitere Informationen finden Sie in der Dokumentation zu den [APK-Manpages-Systemdateien](https://man.archlinux.org/man/apk.8.en#System_files) auf der Arch Linux Website. 

**Debian-Paketmanager (DPKG)**  
 Container, die den DPKG-Paketmanager verwenden, wie z. B. Debian-, Ubuntu- oder Distroless-basierte Images, müssen sicherstellen, dass die DPKG-Datenbank während eines Container-Builds nicht entfernt wird. Weitere Informationen finden Sie in der Dokumentation zu den [DPKG-Manpages-Systemdateien](https://manpages.ubuntu.com/manpages/trusty/man1/dpkg.1.html#files) auf der Website. Ubuntu 

**RPM-Paketmanager (RPM)**  
 Container, die den RPM Package Manager (yum/dnf) verwenden, wie Amazon Linux oder Red Hat Enterprise Linux, müssen sicherstellen, dass die RPM-Datenbank während eines Container-Builds nicht entfernt wird. Weitere Informationen finden Sie in der Dokumentation zu den [RPM-Manpages-Systemdateien](https://rpm-software-management.github.io/rpm/man/rpm-common.8#FILES) auf der RPM-Website. 