

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Pemeriksaan Amazon Inspector Dockerfile
<a name="dockerfile-checks"></a>

 Bagian ini menjelaskan cara menggunakan Amazon Inspector SBOM Generator untuk memindai Dockerfiles dan Docker menampung gambar untuk kesalahan konfigurasi yang menyebabkan kerentanan keamanan. 

**Topics**
+ [Menggunakan pemeriksaan Sbomgen Dockerfile](#w2aac39c13b7)
+ [Pemeriksaan Dockerfile yang didukung](#w2aac39c13b9)

## Menggunakan pemeriksaan Sbomgen Dockerfile
<a name="w2aac39c13b7"></a>

 Pemeriksaan Dockerfile dilakukan secara otomatis ketika file bernama `Dockerfile` atau `*.Dockerfile` ditemukan dan ketika gambar Docker dipindai. 

 Anda dapat menonaktifkan pemeriksaan Dockerfile menggunakan argumen. `--skip-scanners dockerfile` Anda juga dapat menggabungkan pemeriksaan Dockerfile dengan pemindai yang tersedia, seperti OS atau paket pihak ketiga. 

**Contoh perintah cek Docker**  
 Contoh perintah berikut menunjukkan cara menghasilkan SBOMs gambar kontainer Dockerfiles dan Docker, serta untuk OS dan paket pihak ketiga. 

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

**Contoh komponen file**  
 Berikut ini adalah contoh temuan Dockerfile untuk komponen file. 

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

**Contoh komponen respons kerentanan**  
 Berikut ini adalah contoh temuan Dockerfile untuk komponen respons kerentanan. 

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

**catatan**  
 Jika Anda memanggil Sbomgen tanpa `--scan-sbom` tanda, Anda hanya dapat melihat temuan Dockerfile mentah. 

## Pemeriksaan Dockerfile yang didukung
<a name="w2aac39c13b9"></a>

 SbomgenPemeriksaan Dockerfile didukung untuk hal-hal berikut: 
+  Paket biner Sudo 
+  Utilitas APT Debian 
+  Rahasia hardcode 
+  Wadah akar 
+  Bendera perintah yang melemahkan runtime 
+  Variabel lingkungan yang melemah runtime 

 Masing-masing pemeriksaan Dockerfile ini memiliki peringkat keparahan yang sesuai, yang dicatat di bagian atas topik berikut. 

**catatan**  
 Rekomendasi yang dijelaskan dalam topik berikut didasarkan pada praktik terbaik industri. 

### Paket biner Sudo
<a name="w2aac39c13b9c11"></a>

**catatan**  
 Peringkat keparahan untuk pemeriksaan ini adalah **Info**. 

 Kami merekomendasikan untuk tidak menginstal atau menggunakan paket biner Sudo karena memiliki perilaku TTY dan penerusan sinyal yang tidak dapat diprediksi. Untuk informasi selengkapnya, lihat [Pengguna](https://docs.docker.com/build/building/best-practices/#user) di situs web Docker Docs. [Jika kasus penggunaan Anda memerlukan fungsionalitas yang mirip dengan paket biner Sudo, kami sarankan menggunakan Gosu.](https://github.com/tianon/gosu) 

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

**catatan**  
 Peringkat keparahan untuk pemeriksaan ini adalah **Tinggi**. 

 Berikut ini adalah praktik terbaik untuk menggunakan utilitas Debian APT. 

**Menggabungkan `apt-get` perintah dalam satu `Run` pernyataan untuk menghindari masalah caching**  
 Sebaiknya gabungkan `apt-get` perintah dalam satu pernyataan RUN di dalam wadah Docker Anda. Menggunakan `apt-get update` dengan sendirinya menghasilkan masalah caching dan `apt-get install` instruksi selanjutnya gagal. Untuk informasi selengkapnya, lihat [apt-get](https://docs.docker.com/build/building/best-practices/#apt-get) di situs web Docker Docs. 

**catatan**  
 Perilaku caching yang dijelaskan juga dapat terjadi di dalam Docker wadah Anda jika perangkat lunak kontainer Docker kedaluwarsa. 

**Menggunakan utilitas baris perintah APT dengan cara non-interaktif**  
 Sebaiknya gunakan utilitas baris perintah APT secara interaktif. Utilitas baris perintah APT dirancang sebagai alat pengguna akhir, dan perilakunya berubah antar versi. Untuk informasi selengkapnya, lihat [Penggunaan Skrip dan perbedaan dari alat APT lainnya di situs](https://manpages.debian.org/stretch/apt/apt.8.en.html#SCRIPT_USAGE_AND_DIFFERENCES_FROM_OTHER_APT_TOOLS) web Debian. 

### Rahasia kode keras
<a name="w2aac39c13b9c15"></a>

**catatan**  
 Peringkat keparahan untuk pemeriksaan ini sangat **penting**. 

 Informasi rahasia di Dockerfile Anda dianggap sebagai rahasia hard-code. Rahasia hard-code berikut dapat diidentifikasi melalui pemeriksaan file Sbomgen Docker: 
+  AWS kunci akses IDs - `AKIAIOSFODNN7EXAMPLE` 
+  AWS kunci rahasia — `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` 
+  DockerHub token akses pribadi — `dckr_pat_thisisa27charexample1234567` 
+  GitHub token akses pribadi — `ghp_examplev61wY7Pj1YnotrealUoY123456789` 
+  GitLab token akses pribadi — `glpat-12345example12345678` 

### Wadah akar
<a name="w2aac39c13b9c17"></a>

**catatan**  
 Penanda keparahan untuk pemeriksaan ini adalah **Info**. 

 Kami merekomendasikan menjalankan kontainer Docker tanpa hak akses root. Untuk beban kerja kontainer yang tidak dapat berjalan tanpa hak akses root, sebaiknya buat aplikasi Anda menggunakan prinsip dengan jumlah hak istimewa paling sedikit. Untuk informasi selengkapnya, lihat [Pengguna](https://docs.docker.com/build/building/best-practices/#user) di situs web Docker Docs. 

### Variabel lingkungan yang melemah runtime
<a name="w2aac39c13b9c19"></a>

**catatan**  
 Peringkat keparahan untuk pemeriksaan ini adalah **Tinggi**. 

 Beberapa utilitas baris perintah atau runtime bahasa pemrograman mendukung melewati default aman, yang memungkinkan eksekusi melalui metode yang tidak aman. 

**NODE\$1TLS\$1REJECT\$1UNAUTHORIZED=0**  
 Ketika Node.js proses berjalan dengan `NODE_TLS_REJECT_UNAUTHORIZED` set to`0`, validasi sertifikat TLS dinonaktifkan. Untuk informasi selengkapnya, lihat [NODE\$1TLS\$1REJECT\$1UNAUTHORIZED=0](https://nodejs.org/api/cli.html#node_tls_reject_unauthorizedvalue) di situs web Node.js. 

**GIT\$1SSL\$1NO\$1VERIFY=\$1**  
 Ketika proses baris perintah git berjalan dengan `GIT_SSL_NO_VERIFY` set, Git melewatkan verifikasi sertifikat TLS. Untuk informasi selengkapnya, lihat [Variabel lingkungan](https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables) di situs web Git. 

**PIP\$1TRUSTED\$1HOST=\$1**  
 Saat proses baris perintah Python pip berjalan dengan `PIP_TRUSTED_HOST` set, Pip melewatkan verifikasi sertifikat TLS pada domain yang ditentukan. Untuk informasi selengkapnya, lihat [--trusted-host](https://pip.pypa.io/en/stable/cli/pip/#cmdoption-trusted-host) di situs web Pip. 

**NPM\$1CONFIG\$1STRICT\$1SSL=Salah**  
 Ketika proses baris perintah Node.js npm berjalan dengan `NPM_CONFIG_STRICT_SSL` set ke false, utilitas Node Package Manager (npm) akan terhubung ke registri NPM tanpa memvalidasi sertifikat TLS. Untuk informasi selengkapnya, lihat [strict-ssl](https://docs.npmjs.com/cli/v10/using-npm/config#strict-ssl) di situs web npm Docs. 

### Bendera perintah yang melemahkan runtime
<a name="w2aac39c13b9c21"></a>

**catatan**  
 Peringkat keparahan untuk pemeriksaan ini adalah **Tinggi**. 

 Mirip dengan variabel lingkungan pelemahan runtime, beberapa utilitas baris perintah atau runtime bahasa pemrograman mendukung melewati default aman, yang memungkinkan eksekusi melalui metode yang tidak aman. 

**`npm ––strict-ssl=false`**  
 Ketika proses baris perintah Node.js npm dijalankan dengan `--strict-ssl=false` flag, utilitas Node Package Manager (npm) terhubung ke registri NPM tanpa memvalidasi sertifikat TLS. Untuk informasi selengkapnya, lihat [strict-ssl](https://docs.npmjs.com/cli/v10/using-npm/config#strict-ssl) di situs web npm Docs. 

**`apk ––allow-untrusted`**  
 Ketika Alpine Package Keeper utilitas dijalankan dengan `--allow-untrusted` bendera, `apk` akan menginstal paket tanpa atau tidak terpercaya tanda tangan. Untuk informasi selengkapnya, lihat [repositori berikut di situs](https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/f9eaeb6429325eeb5a17ed771fd477be9227fe15/doc/apk.8.scd#L114-115) web Aline. 

**`apt-get ––allow-unauthenticated`**  
 Ketika utilitas `apt-get` paket Debian dijalankan dengan `--allow-unauthenticated` flag, `apt-get` tidak memeriksa validitas paket. Untuk informasi selengkapnya, lihat [apt-get (8)](https://manpages.debian.org/stretch/apt/apt-get.8.en.html) di situs web Debian. 

**`pip ––trusted-host`**  
 Saat utilitas Python pip dijalankan dengan `--trusted-host` flag, nama host yang ditentukan akan melewati validasi sertifikat TLS. Untuk informasi selengkapnya, lihat [--trusted-host](https://pip.pypa.io/en/stable/cli/pip/#cmdoption-trusted-host) di situs web Pip. 

**`rpm ––nodigest, ––nosignature, ––noverify, ––nofiledigest`**  
 Ketika manajer paket berbasis RPM `rpm` dijalankan dengan,,, dan `--nofiledigest` flag `--nodigest` `--nosignature``--noverify`, manajer paket RPM tidak memvalidasi header paket, tanda tangan, atau file saat menginstal paket. Untuk informasi lebih lanjut, lihat [halaman manual RPM](https://rpm-software-management.github.io/rpm/man/) berikut di situs web RPM. 

**`yum-config-manager ––setopt=sslverify false`**  
 Ketika manajer paket berbasis RPM dijalankan dengan `--setopt=sslverify` flag disetel ke false, manajer `yum-config-manager` paket YUM tidak memvalidasi sertifikat TLS. Untuk informasi lebih lanjut, lihat [halaman manual YUM berikut di situs web](https://man7.org/linux/man-pages/man5/yum.conf.5.html) Man7. 

**`yum ––nogpgcheck`**  
 Ketika manajer paket berbasis RPM `yum` dijalankan dengan `--nogpgcheck` flag, manajer paket YUM melewatkan memeriksa tanda tangan GPG pada paket. Untuk informasi lebih lanjut, lihat [yum (8)](https://man7.org/linux/man-pages/man8/yum.8.html) di situs web Man7. 

**`curl ––insecure, curl –k`**  
 Ketika `curl` dijalankan dengan `-k` tanda `--insecure` atau, validasi sertifikat TLS dinonaktifkan. Secara default, setiap koneksi aman yang `curl` dibuat diverifikasi agar aman sebelum transfer dilakukan. Opsi ini membuat `curl` melewati langkah verifikasi dan melanjutkan tanpa memeriksa. Untuk informasi lebih lanjut, lihat [halaman manual Curl berikut di situs web](https://curl.se/docs/manpage.html#-k) Curl. 

**`wget ––no-check-certificate`**  
 Ketika `wget` dijalankan dengan `--no-check-certificate` bendera, validasi sertifikat TLS dinonaktifkan. Untuk informasi lebih lanjut, lihat [halaman manual Wget berikut di situs web](https://www.gnu.org/software/wget/manual/wget.html#index-SSL-certificate_002c-check) GNU. 

### Pemeriksaan penghapusan untuk database paket OS dalam kontainer
<a name="w2aac39c13b9c23"></a>

**catatan**  
 Peringkat keparahan untuk pemeriksaan ini adalah **Info**. 

 Penghapusan database paket sistem operasi mengurangi kemampuan untuk memindai inventaris lengkap perangkat lunak gambar kontainer. Database ini harus dibiarkan utuh selama langkah-langkah pembuatan kontainer. 

 Pemeriksaan penghapusan untuk database paket OS didukung untuk manajer paket berikut: 

**Alpine Package Keeper (APK)**  
 Gambar kontainer yang menggunakan pengelola paket APK untuk perangkat lunak yang diinstal harus memastikan file sistem APK tidak dihapus selama pembuatan. Untuk informasi selengkapnya, lihat dokumentasi file sistem [manpages APK](https://man.archlinux.org/man/apk.8.en#System_files) di Arch Linux situs web. 

**Debian Package Manager (DPKG)**  
 Container yang menggunakan manajer paket DPKG, seperti Debian, Ubuntu, atau gambar berbasis Distroless, harus memastikan database DPKG tidak dihapus selama pembuatan kontainer. Untuk informasi selengkapnya, lihat dokumentasi file sistem [manpages DPKG](https://manpages.ubuntu.com/manpages/trusty/man1/dpkg.1.html#files) di situs web. Ubuntu 

**Manajer Paket RPM (RPM)**  
 Container yang menggunakan RPM Package Manager (yum/dnf), seperti Amazon Linux atau Red Hat Enterprise Linux, harus memastikan database RPM tidak dihapus selama pembuatan container. Untuk informasi selengkapnya, lihat dokumentasi file sistem [manpages RPM](https://rpm-software-management.github.io/rpm/man/rpm-common.8#FILES) di situs web RPM. 