Docker güvenliğini kontrol etmeye yönelik yardımcı programların uygulanma yöntemleri ve örnekleri

Docker güvenliğini kontrol etmeye yönelik yardımcı programların uygulanma yöntemleri ve örnekleri
Ey Habr!

Modern gerçeklikte, konteynerleştirmenin geliştirme süreçlerindeki artan rolü nedeniyle, konteynerlerle ilişkili çeşitli aşamaların ve birimlerin güvenliğinin sağlanması konusu en az önemli konu değildir. Manuel kontrollerin gerçekleştirilmesi zaman alıcı olduğundan bu süreci otomatikleştirmeye yönelik en azından ilk adımları atmak iyi bir fikir olacaktır.

Bu yazımda çeşitli Docker güvenlik yardımcı programlarının uygulanmasına yönelik hazır scriptleri ve bu süreci test etmek için küçük bir demo standının nasıl dağıtılacağına dair talimatları paylaşacağım. Dockerfile görüntülerinin ve talimatlarının güvenliğini test etme sürecinin nasıl organize edileceğini denemek için malzemeleri kullanabilirsiniz. Herkesin geliştirme ve uygulama altyapısının farklı olduğu açıktır, bu nedenle aşağıda birkaç olası seçenek sunacağım.

Güvenlik kontrolü yardımcı programları

Docker altyapısının çeşitli yönlerini kontrol eden çok sayıda farklı yardımcı uygulama ve komut dosyası vardır. Bunlardan bazıları önceki makalede zaten açıklanmıştır (https://habr.com/ru/company/swordfish_security/blog/518758/#docker-security) ve bu materyalde, geliştirme süreci sırasında oluşturulan Docker görüntülerinin güvenlik gereksinimlerinin büyük kısmını kapsayan üç tanesine odaklanmak istiyorum. Ek olarak, güvenlik kontrollerini gerçekleştirmek için bu üç yardımcı programın tek bir boru hattına nasıl bağlanabileceğine dair bir örnek de göstereceğim.

Hadolint
https://github.com/hadolint/hadolint

İlk yaklaşım olarak Dockerfile talimatlarının doğruluğunu ve güvenliğini değerlendirmeye yardımcı olan oldukça basit bir konsol yardımcı programıdır (örneğin, yalnızca yetkili görüntü kayıtlarını kullanmak veya sudo kullanmak).

Docker güvenliğini kontrol etmeye yönelik yardımcı programların uygulanma yöntemleri ve örnekleri

Dock
https://github.com/goodwithtech/dockle

Bir görüntüyle (veya bir görüntünün kayıtlı katran arşiviyle) çalışan, belirli bir görüntünün doğruluğunu ve güvenliğini kontrol eden, katmanlarını ve yapılandırmasını (hangi kullanıcıların oluşturulduğunu, hangi talimatların kullanıldığını, hangilerinin kullanıldığını) analiz eden bir konsol yardımcı programı. birimlerin monte edilmesi, boş bir şifrenin varlığı vb. d. Şu ana kadar kontrollerin sayısı çok fazla değil ve kendi kontrollerimizden ve tavsiyelerimizden birkaçına dayanıyor CIS (İnternet Güvenliği Merkezi) Karşılaştırması Docker için.
Docker güvenliğini kontrol etmeye yönelik yardımcı programların uygulanma yöntemleri ve örnekleri

Önemsiz
https://github.com/aquasecurity/trivy

Bu yardımcı program iki tür güvenlik açığı bulmayı amaçlamaktadır: işletim sistemi derlemeleriyle ilgili sorunlar (Alpine, RedHat (EL), CentOS, Debian GNU, Ubuntu tarafından desteklenir) ve bağımlılıklarla ilgili sorunlar (Gemfile.lock, Pipfile.lock, besteci.lock, paket) -lock.json, iplik.kilit, kargo.kilit). Trivy, hem depodaki bir görüntüyü hem de yerel bir görüntüyü tarayabilir ve ayrıca Docker görüntüsüyle aktarılan .tar dosyasına göre de tarama yapabilir.

Docker güvenliğini kontrol etmeye yönelik yardımcı programların uygulanma yöntemleri ve örnekleri

Yardımcı programları uygulama seçenekleri

Açıklanan uygulamaları yalıtılmış bir ortamda denemek için, tüm yardımcı programların biraz basitleştirilmiş bir süreçte kurulmasına ilişkin talimatlar vereceğim.

Ana fikir, geliştirme sırasında oluşturulan Dockerfiles ve Docker görüntülerinin otomatik içerik doğrulamasını nasıl uygulayabileceğinizi göstermektir.

Kontrolün kendisi aşağıdaki adımlardan oluşur:

  1. Linter yardımcı programını kullanarak Dockerfile talimatlarının doğruluğunu ve güvenliğini kontrol etme Hadolint
  2. Bir yardımcı program kullanarak son ve ara görüntülerin doğruluğunu ve güvenliğini kontrol etme Dock
  3. Yardımcı programı kullanarak temel görüntüde genel olarak bilinen güvenlik açıklarının (CVE) ve bir dizi bağımlılığın varlığını kontrol etme Önemsiz

Makalenin ilerleyen kısımlarında bu adımları uygulamak için üç seçenek sunacağım:
Bunlardan ilki, GitLab'ı örnek olarak kullanarak (bir test örneği oluşturma işleminin açıklamasıyla birlikte) CI/CD işlem hattını yapılandırmaktır.
İkincisi bir kabuk betiği kullanmaktır.
Üçüncüsü, Docker görüntülerini taramak için bir Docker görüntüsü oluşturmayı içerir.
Kendinize en uygun seçeneği seçip altyapınıza aktarıp ihtiyaçlarınıza göre uyarlayabilirsiniz.

Gerekli tüm dosyalar ve ek talimatlar da depoda bulunur: https://github.com/Swordfish-Security/docker_cicd

GitLab CI/CD'ye entegrasyon

İlk seçenekte örnek olarak GitLab depo sistemini kullanarak güvenlik kontrollerini nasıl uygulayabileceğinize bakacağız. Burada adımları izleyeceğiz ve GitLab ile sıfırdan bir test ortamının nasıl kurulacağını, bir tarama süreci oluşturulacağını ve test Docker dosyasını ve rastgele bir görüntüyü (JuiceShop uygulamasını) kontrol etmek için yardımcı programları nasıl başlatacağımızı bulacağız.

GitLab'ı yükleme
1. Docker'ı yükleyin:

sudo apt-get update && sudo apt-get install docker.io

2. Sudo kullanmadan docker ile çalışabilmek için mevcut kullanıcıyı docker grubuna ekleyin:

sudo addgroup <username> docker

3. IP'nizi bulun:

ip addr

4. Ana bilgisayar adındaki IP adresini kendi IP adresinizle değiştirerek kapsayıcıya GitLab'ı yükleyin ve başlatın:

docker run --detach 
--hostname 192.168.1.112 
--publish 443:443 --publish 80:80 
--name gitlab 
--restart always 
--volume /srv/gitlab/config:/etc/gitlab 
--volume /srv/gitlab/logs:/var/log/gitlab 
--volume /srv/gitlab/data:/var/opt/gitlab 
gitlab/gitlab-ce:latest

GitLab'ın gerekli tüm kurulum prosedürlerini tamamlamasını bekliyoruz (süreci günlük dosyası çıktısı aracılığıyla izleyebilirsiniz: docker logs -f gitlab).

5. Tarayıcıda yerel IP'nizi açın ve kök kullanıcının şifresini değiştirmenizi isteyen bir sayfa görün:
Docker güvenliğini kontrol etmeye yönelik yardımcı programların uygulanma yöntemleri ve örnekleri
Yeni bir şifre belirleyin ve GitLab'a gidin.

6. Cicd-test gibi yeni bir proje oluşturun ve bunu başlangıç ​​dosyasıyla başlatın README.md:
Docker güvenliğini kontrol etmeye yönelik yardımcı programların uygulanma yöntemleri ve örnekleri
7. Şimdi istek üzerine gerekli tüm işlemleri yürütecek bir aracı olan GitLab Runner'ı kurmamız gerekiyor.
En son sürümü indirin (bu durumda Linux 64 bit için):

sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

8. Çalıştırılabilir hale getirin:

sudo chmod +x /usr/local/bin/gitlab-runner

9. Runner için bir işletim sistemi kullanıcısı ekleyin ve hizmeti başlatın:

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

Bunun gibi bir şeye benzemeli:

local@osboxes:~$ sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
Runtime platform arch=amd64 os=linux pid=8438 revision=0e5417a3 version=12.0.1
local@osboxes:~$ sudo gitlab-runner start
Runtime platform arch=amd64 os=linux pid=8518 revision=0e5417a3 version=12.0.1

10. Şimdi Runner'ı GitLab örneğimizle etkileşim kurabilmesi için kaydediyoruz.
Bunu yapmak için Ayarlar-CI/CD sayfasını açın (http://OUR_IP_ADDRESS/root/cicd-test/-/settings/ci_cd) ve Koşucular sekmesinde URL'yi ve Kayıt jetonunu bulun:
Docker güvenliğini kontrol etmeye yönelik yardımcı programların uygulanma yöntemleri ve örnekleri
11. URL'yi ve Kayıt jetonunu değiştirerek Runner'ı kaydedin:

sudo gitlab-runner register 
--non-interactive 
--url "http://<URL>/" 
--registration-token "<Registration Token>" 
--executor "docker" 
--docker-privileged 
--docker-image alpine:latest 
--description "docker-runner" 
--tag-list "docker,privileged" 
--run-untagged="true" 
--locked="false" 
--access-level="not_protected"

Sonuç olarak, yardımcı programlarımızı başlatmak için talimatlar eklememiz gereken, hazır çalışan bir GitLab elde ediyoruz. Bu demoda, uygulamayı oluşturma ve kapsayıcıya alma adımlarına sahip değiliz, ancak gerçek bir ortamda bunlar tarama adımlarından önce gelir ve analiz için görüntüler ve bir Docker dosyası oluşturur.

boru hattı konfigürasyonu

1. Depoya dosya ekleyin mydockerfile.df (bu, kontrol edeceğimiz bir test Docker dosyasıdır) ve GitLab CI/CD işlem yapılandırma dosyası .gitlab-cicd.ymltarayıcılara yönelik talimatları listeleyen (dosya adındaki noktaya dikkat edin).

YAML yapılandırma dosyası, seçilen Docker dosyasını ve DOCKERFILE değişkeninde belirtilen görüntüyü analiz edecek üç yardımcı programı (Hadolint, Dockle ve Trivy) çalıştırma talimatlarını içerir. Gerekli tüm dosyalar depodan alınabilir: https://github.com/Swordfish-Security/docker_cicd/

'Den alıntı mydockerfile.df (bu, yalnızca yardımcı programın çalışmasını göstermeye yönelik bir dizi keyfi talimat içeren soyut bir dosyadır). Dosyaya doğrudan bağlantı: mydockerfile.df

mydockerfile.df'nin içeriği

FROM amd64/node:10.16.0-alpine@sha256:f59303fb3248e5d992586c76cc83e1d3700f641cbcd7c0067bc7ad5bb2e5b489 AS tsbuild
COPY package.json .
COPY yarn.lock .
RUN yarn install
COPY lib lib
COPY tsconfig.json tsconfig.json
COPY tsconfig.app.json tsconfig.app.json
RUN yarn build
FROM amd64/ubuntu:18.04@sha256:eb70667a801686f914408558660da753cde27192cd036148e58258819b927395
LABEL maintainer="Rhys Arkins <[email protected]>"
LABEL name="renovate"
...
COPY php.ini /usr/local/etc/php/php.ini
RUN cp -a /tmp/piik/* /var/www/html/
RUN rm -rf /tmp/piwik
RUN chown -R www-data /var/www/html
ADD piwik-cli-setup /piwik-cli-setup
ADD reset.php /var/www/html/
## ENTRYPOINT ##
ADD entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
USER root

YAML yapılandırması şuna benzer (dosyanın kendisi buradaki doğrudan bağlantı aracılığıyla bulunabilir: .gitlab-ci.yml):

.gitlab-ci.yml'nin içeriği

variables:
    DOCKER_HOST: "tcp://docker:2375/"
    DOCKERFILE: "mydockerfile.df" # name of the Dockerfile to analyse   
    DOCKERIMAGE: "bkimminich/juice-shop" # name of the Docker image to analyse
    # DOCKERIMAGE: "knqyf263/cve-2018-11235" # test Docker image with several CRITICAL CVE
    SHOWSTOPPER_PRIORITY: "CRITICAL" # what level of criticality will fail Trivy job
    TRIVYCACHE: "$CI_PROJECT_DIR/.cache" # where to cache Trivy database of vulnerabilities for faster reuse
    ARTIFACT_FOLDER: "$CI_PROJECT_DIR"
 
services:
    - docker:dind # to be able to build docker images inside the Runner
 
stages:
    - scan
    - report
    - publish
 
HadoLint:
    # Basic lint analysis of Dockerfile instructions
    stage: scan
    image: docker:git
 
    after_script:
    - cat $ARTIFACT_FOLDER/hadolint_results.json
 
    script:
    - export VERSION=$(wget -q -O - https://api.github.com/repos/hadolint/hadolint/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/1/')
    - wget https://github.com/hadolint/hadolint/releases/download/v${VERSION}/hadolint-Linux-x86_64 && chmod +x hadolint-Linux-x86_64
     
    # NB: hadolint will always exit with 0 exit code
    - ./hadolint-Linux-x86_64 -f json $DOCKERFILE > $ARTIFACT_FOLDER/hadolint_results.json || exit 0
 
    artifacts:
        when: always # return artifacts even after job failure       
        paths:
        - $ARTIFACT_FOLDER/hadolint_results.json
 
Dockle:
    # Analysing best practices about docker image (users permissions, instructions followed when image was built, etc.)
    stage: scan   
    image: docker:git
 
    after_script:
    - cat $ARTIFACT_FOLDER/dockle_results.json
 
    script:
    - export VERSION=$(wget -q -O - https://api.github.com/repos/goodwithtech/dockle/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/1/')
    - wget https://github.com/goodwithtech/dockle/releases/download/v${VERSION}/dockle_${VERSION}_Linux-64bit.tar.gz && tar zxf dockle_${VERSION}_Linux-64bit.tar.gz
    - ./dockle --exit-code 1 -f json --output $ARTIFACT_FOLDER/dockle_results.json $DOCKERIMAGE   
     
    artifacts:
        when: always # return artifacts even after job failure       
        paths:
        - $ARTIFACT_FOLDER/dockle_results.json
 
Trivy:
    # Analysing docker image and package dependencies against several CVE bases
    stage: scan   
    image: docker:git
 
    script:
    # getting the latest Trivy
    - apk add rpm
    - export VERSION=$(wget -q -O - https://api.github.com/repos/knqyf263/trivy/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/1/')
    - wget https://github.com/knqyf263/trivy/releases/download/v${VERSION}/trivy_${VERSION}_Linux-64bit.tar.gz && tar zxf trivy_${VERSION}_Linux-64bit.tar.gz
     
    # displaying all vulnerabilities w/o failing the build
    - ./trivy -d --cache-dir $TRIVYCACHE -f json -o $ARTIFACT_FOLDER/trivy_results.json --exit-code 0 $DOCKERIMAGE    
    
    # write vulnerabilities info to stdout in human readable format (reading pure json is not fun, eh?). You can remove this if you don't need this.
    - ./trivy -d --cache-dir $TRIVYCACHE --exit-code 0 $DOCKERIMAGE    
 
    # failing the build if the SHOWSTOPPER priority is found
    - ./trivy -d --cache-dir $TRIVYCACHE --exit-code 1 --severity $SHOWSTOPPER_PRIORITY --quiet $DOCKERIMAGE
         
    artifacts:
        when: always # return artifacts even after job failure
        paths:
        - $ARTIFACT_FOLDER/trivy_results.json
 
    cache:
        paths:
        - .cache
 
Report:
    # combining tools outputs into one HTML
    stage: report
    when: always
    image: python:3.5
     
    script:
    - mkdir json
    - cp $ARTIFACT_FOLDER/*.json ./json/
    - pip install json2html
    - wget https://raw.githubusercontent.com/shad0wrunner/docker_cicd/master/convert_json_results.py
    - python ./convert_json_results.py
     
    artifacts:
        paths:
        - results.html

Gerekirse kayıtlı görüntüleri .tar arşivi biçiminde de tarayabilirsiniz (ancak YAML dosyasındaki yardımcı programların giriş parametrelerini değiştirmeniz gerekecektir)

Not: Trivy'nin kurulu olması gerekir rpm и git. Aksi takdirde RedHat tabanlı görselleri tararken ve güvenlik açığı veritabanına güncellemeler alırken hatalar üretecektir.

2. Dosyaları depoya ekledikten sonra konfigürasyon dosyamızdaki talimatlara göre GitLab otomatik olarak derleme ve tarama işlemine başlayacaktır. CI/CD → İşlem Hatları sekmesinde talimatların ilerleyişini görebilirsiniz.

Sonuç olarak dört görevimiz var. Bunlardan üçü doğrudan taramayla ilgilidir ve sonuncusu (Rapor), dağınık dosyalardan tarama sonuçlarını içeren basit bir rapor toplar.
Docker güvenliğini kontrol etmeye yönelik yardımcı programların uygulanma yöntemleri ve örnekleri
Varsayılan olarak, görüntüde veya bağımlılıklarda KRİTİK güvenlik açıkları tespit edilirse Trivy çalışmayı durdurur. Aynı zamanda Hadolint her zaman bir Başarı kodu döndürür çünkü bu her zaman yorumlarla sonuçlanır ve bu da yapının durmasına neden olur.

Özel gereksinimlerinize bağlı olarak, bu yardımcı programların belirli bir kritikliğe sahip sorunları tespit etmesi durumunda derleme sürecini de durduracak şekilde bir çıkış kodu yapılandırabilirsiniz. Bizim durumumuzda derleme yalnızca Trivy, SHOWSTOPPER değişkeninde belirttiğimiz kritikliğe sahip bir güvenlik açığı tespit ederse duracaktır. .gitlab-ci.yml.
Docker güvenliğini kontrol etmeye yönelik yardımcı programların uygulanma yöntemleri ve örnekleri

Her yardımcı programın sonucu, her tarama görevinin günlüğünde, yapılar bölümündeki json dosyalarında doğrudan veya basit bir HTML raporunda (bununla ilgili daha fazla bilgi aşağıda) görüntülenebilir:
Docker güvenliğini kontrol etmeye yönelik yardımcı programların uygulanma yöntemleri ve örnekleri

3. Yardımcı program raporlarını insan tarafından biraz daha okunabilir bir biçimde sunmak için, üç JSON dosyasını kusur tablosu içeren tek bir HTML dosyasına dönüştürmek için küçük bir Python betiği kullanılır.
Bu komut dosyası ayrı bir Rapor görevi tarafından başlatılır ve son yapısı, rapor içeren bir HTML dosyasıdır. Komut dosyası kaynağı da depodadır ve ihtiyaçlarınıza, renklerinize vb. uyacak şekilde uyarlanabilir.
Docker güvenliğini kontrol etmeye yönelik yardımcı programların uygulanma yöntemleri ve örnekleri

Kabuk betiği

İkinci seçenek, Docker görüntülerini CI/CD sistemi dışında kontrol etmeniz gerektiği veya tüm talimatları doğrudan ana bilgisayar üzerinde yürütülebilecek bir formda bulundurmanız gerektiği durumlar için uygundur. Bu seçenek, temiz bir sanal (hatta gerçek) makinede çalıştırılabilen hazır bir kabuk betiği kapsamındadır. Betik, yukarıda açıklanan gitlab-runner ile aynı talimatları yürütür.

Betiğin başarılı bir şekilde çalışabilmesi için sistemde Docker'ın kurulu olması ve mevcut kullanıcının docker grubunda olması gerekir.

Komut dosyasının kendisi burada bulunabilir: docker_sec_check.sh

Dosyanın başında değişkenler, hangi görüntünün taranması gerektiğini ve hangi kritiklik kusurlarının Trivy yardımcı programının belirtilen hata koduyla çıkmasına neden olacağını belirtir.

Komut dosyasının yürütülmesi sırasında tüm yardımcı programlar dizine indirilecektir docker_tools, çalışmalarının sonuçları dizinde docker_tools/jsonve raporu içeren HTML dosyada olacaktır sonuçlar.html.

Örnek komut dosyası çıktısı

~/docker_cicd$ ./docker_sec_check.sh

[+] Setting environment variables
[+] Installing required packages
[+] Preparing necessary directories
[+] Fetching sample Dockerfile
2020-10-20 10:40:00 (45.3 MB/s) - ‘Dockerfile’ saved [8071/8071]
[+] Pulling image to scan
latest: Pulling from bkimminich/juice-shop
[+] Running Hadolint
...
Dockerfile:205 DL3015 Avoid additional packages by specifying `--no-install-recommends`
Dockerfile:248 DL3002 Last USER should not be root
...
[+] Running Dockle
...
WARN    - DKL-DI-0006: Avoid latest tag
        * Avoid 'latest' tag
INFO    - CIS-DI-0005: Enable Content trust for Docker
        * export DOCKER_CONTENT_TRUST=1 before docker pull/build
...
[+] Running Trivy
juice-shop/frontend/package-lock.json
=====================================
Total: 3 (UNKNOWN: 0, LOW: 1, MEDIUM: 0, HIGH: 2, CRITICAL: 0)

+---------------------+------------------+----------+---------+-------------------------+
|       LIBRARY       | VULNERABILITY ID | SEVERITY | VERSION |             TITLE       |
+---------------------+------------------+----------+---------+-------------------------+
| object-path         | CVE-2020-15256   | HIGH     | 0.11.4  | Prototype pollution in  |
|                     |                  |          |         | object-path             |
+---------------------+------------------+          +---------+-------------------------+
| tree-kill           | CVE-2019-15599   |          | 1.2.2   | Code Injection          |
+---------------------+------------------+----------+---------+-------------------------+
| webpack-subresource | CVE-2020-15262   | LOW      | 1.4.1   | Unprotected dynamically |
|                     |                  |          |         | loaded chunks           |
+---------------------+------------------+----------+---------+-------------------------+

juice-shop/package-lock.json
============================
Total: 20 (UNKNOWN: 0, LOW: 1, MEDIUM: 6, HIGH: 8, CRITICAL: 5)

...

juice-shop/package-lock.json
============================
Total: 5 (CRITICAL: 5)

...
[+] Removing left-overs
[+] Making the output look pretty
[+] Converting JSON results
[+] Writing results HTML
[+] Clean exit ============================================================
[+] Everything is done. Find the resulting HTML report in results.html

Tüm yardımcı programları içeren Docker görüntüsü

Üçüncü bir alternatif olarak, güvenlik araçlarına sahip bir imaj oluşturmak için iki basit Docker dosyasını derledim. Bir Dockerfile, bir depodan bir görüntüyü taramak için bir set oluşturmaya yardımcı olacak, ikincisi (Dockerfile_tar), bir görüntüyle bir tar dosyasını taramak için bir set oluşturmaya yardımcı olacaktır.

1. İlgili Docker dosyasını ve komut dosyalarını depodan alın https://github.com/Swordfish-Security/docker_cicd/tree/master/Dockerfile.
2. Montaj için başlatıyoruz:

docker build -t dscan:image -f docker_security.df .

3. Montaj tamamlandıktan sonra görselden bir konteyner oluşturuyoruz. Aynı zamanda ilgilendiğimiz imajın ismiyle birlikte DOCKERIMAGE ortam değişkenini geçiyoruz ve makinemizden analiz etmek istediğimiz Dockerfile’ı dosyaya mount ediyoruz. /Docker dosyası (bu dosyanın mutlak yolunun gerekli olduğunu unutmayın):

docker run --rm -v $(pwd)/results:/results -v $(pwd)/docker_security.df:/Dockerfile -e DOCKERIMAGE="bkimminich/juice-shop" dscan:image


[+] Setting environment variables
[+] Running Hadolint
/Dockerfile:3 DL3006 Always tag the version of an image explicitly
[+] Running Dockle
WARN    - DKL-DI-0006: Avoid latest tag
        * Avoid 'latest' tag
INFO    - CIS-DI-0005: Enable Content trust for Docker
        * export DOCKER_CONTENT_TRUST=1 before docker pull/build
INFO    - CIS-DI-0006: Add HEALTHCHECK instruction to the container image
        * not found HEALTHCHECK statement
INFO    - DKL-LI-0003: Only put necessary files
        * unnecessary file : juice-shop/node_modules/sqlite3/Dockerfile
        * unnecessary file : juice-shop/node_modules/sqlite3/tools/docker/architecture/linux-arm64/Dockerfile
        * unnecessary file : juice-shop/node_modules/sqlite3/tools/docker/architecture/linux-arm/Dockerfile
[+] Running Trivy
...
juice-shop/package-lock.json
============================
Total: 20 (UNKNOWN: 0, LOW: 1, MEDIUM: 6, HIGH: 8, CRITICAL: 5)
...
[+] Making the output look pretty
[+] Starting the main module ============================================================
[+] Converting JSON results
[+] Writing results HTML
[+] Clean exit ============================================================
[+] Everything is done. Find the resulting HTML report in results.html

Bulgular

Docker yapıtlarını taramak için yalnızca bir temel yardımcı program setine baktık ve bence bu, görüntü güvenliği gereksinimlerinin önemli bir bölümünü çok etkili bir şekilde karşılıyor. Aynı kontrolleri gerçekleştirebilen, güzel raporlar oluşturabilen veya yalnızca konsol modunda çalışabilen, konteyner yönetim sistemlerini kapsayan vb. çok sayıda ücretli ve ücretsiz araç da vardır. Bu araçlara ve bunların nasıl entegre edileceğine genel bir bakış biraz sonra görünebilir. .

Bu makalede açıklanan araç setinin iyi yanı, hepsinin açık kaynak olması ve ihtiyaçlarınıza ve altyapınıza uygun olanı bulmak için bunları ve diğer benzer araçları deneyebilmenizdir. Elbette bulunan tüm güvenlik açıklarının belirli koşullarda uygulanabilirliği açısından incelenmesi gerekir, ancak bu gelecekteki büyük bir makalenin konusudur.

Bu kılavuzun, komut dosyalarının ve yardımcı programların size yardımcı olacağını ve konteynerleştirme alanında daha güvenli bir altyapı oluşturmak için bir başlangıç ​​noktası olacağını umuyorum.

Kaynak: habr.com

Yorum ekle