Docker təhlükəsizlik yoxlaması utilitlərinin tətbiqi üsulları və nümunələri

Docker təhlükəsizlik yoxlaması utilitlərinin tətbiqi üsulları və nümunələri
Hey Habr!

Bugünkü reallıqda konteynerləşmənin inkişaf proseslərində artan rolu ilə əlaqədar olaraq, konteynerlərlə bağlı müxtəlif mərhələlərin və subyektlərin təhlükəsizliyinin təmin edilməsi məsələsi heç də sonuncu yerdə deyil. Yoxlamaların əl ilə aparılması zəhmətli bir işdir, ona görə də bu prosesi avtomatlaşdırmaq üçün heç olmasa ilkin addımları atmaq yaxşı olardı.

Bu yazıda mən bir neçə Docker təhlükəsizlik utilitlərinin tətbiqi üçün hazır skriptləri və bu prosesi sınamaq üçün kiçik demo stendinin necə qurulacağına dair təlimatları paylaşacağam. Dockerfile şəkillərinin və təlimatlarının təhlükəsizliyinin yoxlanılması prosesini necə təşkil edəcəyinizi sınaqdan keçirmək üçün materiallardan istifadə edə bilərsiniz. Aydındır ki, inkişaf və icra infrastrukturu hər kəs üçün fərqlidir, ona görə də aşağıda bir neçə mümkün variant verəcəyəm.

Təhlükəsizlik Yoxlama Utilities

Docker infrastrukturunun müxtəlif aspektlərini yoxlayan çoxlu sayda müxtəlif köməkçi proqramlar və skriptlər var. Onlardan bəziləri artıq əvvəlki məqalədə təsvir edilmişdir (https://habr.com/ru/company/swordfish_security/blog/518758/#docker-security) və bu məqalədə inkişaf prosesi zamanı qurulan Docker şəkilləri üçün təhlükəsizlik tələblərinin böyük hissəsini əhatə edən onlardan üçünə diqqət yetirmək istərdim. Bundan əlavə, mən bu üç kommunal xidmətin təhlükəsizlik yoxlamalarını həyata keçirmək üçün bir boru kəmərində necə birləşdirilə biləcəyinə dair bir nümunə göstərəcəyəm.

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

Əvvəlcə Dockerfile təlimatlarının düzgünlüyünü və təhlükəsizliyini qiymətləndirməyə kömək edən kifayət qədər sadə konsol yardım proqramı (məsələn, yalnız icazə verilən təsvir registrlərindən istifadə etmək və ya sudo istifadə etmək).

Docker təhlükəsizlik yoxlaması utilitlərinin tətbiqi üsulları və nümunələri

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

Şəkildə (və ya saxlanmış tarballda) işləyən konsol yardım proqramı, müəyyən bir təsvirin təbəqələrini və konfiqurasiyasını təhlil edərək onun düzgünlüyünü və təhlükəsizliyini yoxlayır - hansı istifadəçilər yaradılır, hansı təlimatlar istifadə olunur, hansı həcmlər quraşdırılır. , boş parolun olması və s. MDB (İnternet Təhlükəsizliyi Mərkəzi) Benchmark doker üçün.
Docker təhlükəsizlik yoxlaması utilitlərinin tətbiqi üsulları və nümunələri

Trivy
https://github.com/aquasecurity/trivy

Bu yardım proqramı iki növ zəifliyi tapmağa yönəlib - ƏS qurma problemləri (Alpine, RedHat (EL), CentOS, Debian GNU, Ubuntu dəstəklənir) və asılılıq problemləri (Gemfile.lock, Pipfile.lock, composer.lock, package-lock). .json , yarn.lock, Cargo.lock). Trivy həm depodakı şəkli, həm də yerli təsviri skan edə, həmçinin Docker təsviri ilə ötürülən .tar faylı əsasında skan edə bilər.

Docker təhlükəsizlik yoxlaması utilitlərinin tətbiqi üsulları və nümunələri

Kommunal Tətbiq Seçimləri

Təsvir edilən tətbiqləri təcrid olunmuş şəraitdə sınamaq üçün sadələşdirilmiş prosesin bir hissəsi kimi bütün yardım proqramlarını quraşdırmaq üçün təlimat verəcəyəm.

Əsas ideya, inkişaf zamanı yaradılan Dockerfiles və Docker şəkilləri üçün avtomatik məzmun yoxlamasını necə həyata keçirə biləcəyinizi nümayiş etdirməkdir.

Doğrulamanın özü aşağıdakı addımlardan ibarətdir:

  1. Linter yardım proqramı ilə Dockerfile təlimatlarının düzgünlüyünü və təhlükəsizliyini yoxlamaq Hadolint
  2. Son və ara şəkillərin düzgünlüyünün və təhlükəsizliyinin yoxlanılması - bir yardım proqramı Dockle
  3. Əsas təsvirdə Ümumi Məlum Zəifliklərin (CVE) və bir sıra asılılıqların yoxlanılması - yardım proqramı tərəfindən Trivy

Daha sonra məqalədə bu addımları həyata keçirmək üçün üç variant verəcəyəm:
Birincisi, GitLab nümunəsindən istifadə edərək CI / CD boru kəmərini konfiqurasiya etməkdir (sınaq nümunəsinin artırılması prosesinin təsviri ilə).
İkincisi shell skriptindən istifadə edir.
Üçüncüsü, Docker şəkillərini skan etmək üçün Docker təsvirinin qurulmasıdır.
Siz özünüzə uyğun olan variantı seçə, onu infrastrukturunuza köçürə və ehtiyaclarınıza uyğunlaşdıra bilərsiniz.

Bütün lazımi fayllar və əlavə təlimatlar da depodadır: https://github.com/Swordfish-Security/docker_cicd

GitLab CI/CD inteqrasiyası

Birinci seçimdə, nümunə olaraq GitLab repozitor sistemindən istifadə edərək təhlükəsizlik yoxlamalarının necə həyata keçirilə biləcəyinə baxacağıq. Burada addımları keçəcəyik və sıfırdan GitLab ilə test mühitinin necə qurulacağına, skan prosesinin yaradılmasına və test Dockerfile və təsadüfi təsvirin - JuiceShop tətbiqinin sınaqdan keçirilməsi üçün utilitləri işə salacağıq.

GitLab quraşdırılması
1. Docker quraşdırın:

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

2. Sudo istifadə etmədən docker ilə işləyə bilmək üçün cari istifadəçini docker qrupuna əlavə edin:

sudo addgroup <username> docker

3. IP-nizi tapın:

ip addr

4. GitLab-ı konteynerə quraşdırın və işə salın, host adındakı IP ünvanını öz ünvanınızla əvəz edin:

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 bütün lazımi quraşdırma prosedurlarını tamamlamasını gözləyirik (log faylının çıxışı vasitəsilə prosesi izləyə bilərsiniz: docker logs -f gitlab).

5. Brauzerdə yerli IP-ni açın və kök istifadəçi üçün parolun dəyişdirilməsini təklif edən səhifəyə baxın:
Docker təhlükəsizlik yoxlaması utilitlərinin tətbiqi üsulları və nümunələri
Yeni parol təyin edin və GitLab-a keçin.

6. Yeni layihə yaradın, məsələn, cicd-test və onu başlanğıc faylı ilə işə salın README.md:
Docker təhlükəsizlik yoxlaması utilitlərinin tətbiqi üsulları və nümunələri
7. İndi biz GitLab Runner-ı quraşdırmalıyıq: sorğu əsasında bütün lazımi əməliyyatları yerinə yetirəcək agent.
Ən son versiyanı yükləyin (bu halda, Linux 64-bit altında):

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

8. Onu icra edilə bilən hala gətirin:

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

9. Runner üçün ƏS istifadəçisi əlavə edin və xidməti işə salı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

Bu kimi bir şey görünməlidir:

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. İndi biz Runner-ı qeydiyyatdan keçiririk ki, o, bizim GitLab instansiyamızla qarşılıqlı əlaqədə ola bilsin.
Bunu etmək üçün Parametrlər-CI/CD səhifəsini açın (http://OUR_ IP_ADDRESS/root/cicd-test/-/settings/ci_cd) və Qaçışçılar sekmesinde URL və Qeydiyyat nişanını tapın:
Docker təhlükəsizlik yoxlaması utilitlərinin tətbiqi üsulları və nümunələri
11. URL və Qeydiyyat nişanını əvəz etməklə Runneri qeydiyyatdan keçirin:

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"

Nəticədə, biz hazır işləyən GitLab alırıq, ona kommunal proqramlarımızı işə salmaq üçün təlimatlar əlavə etməliyik. Bu demoda bizdə proqramların qurulması və konteynerləşdirmə mərhələləri yoxdur, lakin real mühitdə onlar skan addımlarından əvvəl olacaq və təhlil üçün şəkillər və Dockerfile yaradacaqlar.

boru kəmərinin konfiqurasiyası

1. Faylları depoya əlavə edin mydockerfile.df (bu, sınaqdan keçirəcəyimiz Dockerfile testidir) və GitLab CI/CD proses konfiqurasiya faylı .gitlab-cicd.yml, skanerlər üçün təlimatları sadalayır (fayl adındakı nöqtəni qeyd edin).

.yaml konfiqurasiya faylı seçilmiş Dockerfile və DOCKERFILE dəyişənində göstərilən təsviri təhlil edəcək üç utiliti (Hadolint, Dockle və Trivy) işə salmaq üçün təlimatları ehtiva edir. Bütün lazımi fayllar depodan götürülə bilər: https://github.com/Swordfish-Security/docker_cicd/

-dən çıxarış mydockerfile.df (bu, yardım proqramının necə işlədiyini nümayiş etdirmək üçün bir sıra ixtiyari təlimatları olan mücərrəd fayldır). Fayla birbaşa keçid: mydockerfile.df

mydockerfile.df məzmunu

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 konfiqurasiyası belə görünür (faylın özü burada birbaşa keçiddən götürülə bilər: .gitlab-ci.yml):

.gitlab-ci.yml məzmunu

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

Lazım gələrsə, siz həmçinin .tar arxivi kimi yadda saxlanılan şəkilləri skan edə bilərsiniz (lakin YAML faylındakı utilitlər üçün daxiletmə parametrlərini dəyişməli olacaqsınız)

Qeyd: Trivy quraşdırma tələb edir rpm и git. Əks halda, o, RedHat əsaslı şəkilləri skan edərkən və zəiflik verilənlər bazasında yeniləmələr əldə edərkən xətalar yaradacaq.

2. Faylları depoya əlavə etdikdən sonra konfiqurasiya faylımızdakı təlimatlara uyğun olaraq GitLab avtomatik olaraq qurma və skan etmə prosesinə başlayacaq. CI / CD → Boru kəmərləri sekmesinde təlimatların gedişatını görə bilərsiniz.

Nəticədə dörd vəzifəmiz var. Onlardan üçü birbaşa skanlamada iştirak edir, sonuncusu (Hesabat) skan nəticələri ilə səpələnmiş fayllardan sadə hesabat toplayır.
Docker təhlükəsizlik yoxlaması utilitlərinin tətbiqi üsulları və nümunələri
Şəkildə və ya asılılıqlarda KRİTİK boşluqlar aşkar edilərsə, standart olaraq Trivy icrasını dayandırır. Eyni zamanda, Hadolint həmişə Uğur kodu qaytarır, çünki onun icrasında həmişə qeydlər var və bu, tikinti dayandırılmasına səbəb olur.

Xüsusi tələblərinizdən asılı olaraq, çıxış kodunu konfiqurasiya edə bilərsiniz ki, müəyyən kritiklik problemləri aşkar edildikdə bu yardım proqramları da quraşdırma prosesini dayandırsın. Bizim vəziyyətimizdə quraşdırma yalnız Trivy-də SHOWSTOPPER dəyişənində göstərdiyimiz ciddilikdə zəifliyi aşkar etdikdə dayanacaq. .gitlab-ci.yml.
Docker təhlükəsizlik yoxlaması utilitlərinin tətbiqi üsulları və nümunələri

Hər bir yardım proqramının işinin nəticəsini hər bir tarama tapşırığının jurnalında, artefaktlar bölməsindəki json fayllarında və ya sadə HTML hesabatında görmək olar (aşağıda daha ətraflı):
Docker təhlükəsizlik yoxlaması utilitlərinin tətbiqi üsulları və nümunələri

3. Utilit hesabatlarını bir az daha insan oxuya bilən formada təqdim etmək üçün üç json faylını qüsurlar cədvəli ilə bir HTML faylına çevirmək üçün kiçik Python skripti istifadə olunur.
Bu skript ayrıca Hesabat tapşırığı ilə işə salınır və onun son artefaktı hesabatı olan HTML faylıdır. Skript mənbəyi də depodadır və ehtiyaclarınıza, rənglərinizə və s. uyğunlaşdırıla bilər.
Docker təhlükəsizlik yoxlaması utilitlərinin tətbiqi üsulları və nümunələri

Shell skripti

İkinci seçim, CI / CD sistemində olmayan Docker şəkillərini yoxlamalı olduğunuz və ya bütün təlimatların birbaşa hostda yerinə yetirilə bilən formada olması lazım olduğu hallar üçün uyğundur. Bu seçim təmiz virtual (və ya hətta real) maşında işlədilə bilən hazır qabıq skripti ilə əhatə olunur. Skript yuxarıdakı gitlab-runner ilə eyni təlimatları izləyir.

Skriptin uğurla işləməsi üçün Docker sistemdə quraşdırılmalı və cari istifadəçi docker qrupunda olmalıdır.

Skriptin özünü burada tapa bilərsiniz: docker_sec_check.sh

Faylın əvvəlində dəyişənlər hansı təsvirin skan edilməli olduğunu və hansı qüsurların Trivy yardım proqramının göstərilən səhv kodu ilə çıxmasına səbəb olacağını müəyyənləşdirir.

Skriptin icrası zamanı bütün yardım proqramları qovluğa endiriləcək docker_tools, işlərinin nəticələri - kataloqda docker_tools/json, və hesabatı olan HTML faylda olacaq nəticələr.html.

Nümunə skript çıxışı

~/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

Bütün yardım proqramları ilə Docker təsviri

Üçüncü alternativ olaraq, təhlükəsizlik proqramları ilə bir görüntü yaratmaq üçün iki sadə Dockerfile tərtib etdim. Bir Dockerfile repozitoriyadan təsviri skan etmək üçün dəst yaratmağa kömək edəcək, ikincisi (Dockerfile_tar) tar faylını şəkillə skan etmək üçün dəst quracaq.

1. Biz müvafiq Docker faylını və skriptləri depodan götürürük https://github.com/Swordfish-Security/docker_cicd/tree/master/Dockerfile.
2. Quraşdırma üçün işə salın:

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

3. Quraşdırma tamamlandıqdan sonra şəkildən konteyner yaradın. Eyni zamanda bizi maraqlandıran şəklin adı ilə DOCKERIMAGE mühit dəyişənini ötürürük və analiz etmək istədiyimiz Dockerfile-ni maşınımızdan fayla quraşdırırıq. /dockerfile (qeyd edək ki, bu fayl üçün mütləq yol tələb olunur):

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

Tapıntılar

Biz Docker artefakt skan etmə alətlərinin yalnız bir əsas dəstini əhatə etdik, məncə, bu, kifayət qədər effektiv şəkildə görüntü təhlükəsizliyi tələblərini əhatə edir. Eyni yoxlamaları həyata keçirə, gözəl hesabatlar çəkə və ya sırf konsol rejimində işləyə, konteyner idarəetmə sistemlərini əhatə edə bilən bir çox başqa ödənişli və pulsuz alətlər var. Bu alətlərin icmalı və onların inteqrasiyası bir az sonra görünə bilər.

Məqalədə təsvir olunan alətlər dəstinin müsbət tərəfi odur ki, onların hamısı açıq mənbə üzərində qurulub və siz tələblərinizə və infrastruktur xüsusiyyətlərinizə tam uyğun gələni tapmaq üçün onlarla və digər oxşar vasitələrlə sınaqdan keçirə bilərsiniz. Əlbəttə ki, aşkar edilən bütün zəifliklər xüsusi şərtlərdə tətbiq oluna bilmək üçün öyrənilməlidir, lakin bu, gələcək böyük məqalə üçün mövzudur.

Ümid edirəm ki, bu təlimatlar, skriptlər və yardım proqramları sizə kömək edəcək və konteynerləşdirmə sahəsində daha təhlükəsiz infrastruktur yaratmaq üçün başlanğıc nöqtəsi olacaq.

Mənbə: www.habr.com

Добавить комментарий