Docker коопсуздук текшерүү утилиталарын ишке ашыруунун ыкмалары жана мисалдары

Docker коопсуздук текшерүү утилиталарын ишке ашыруунун ыкмалары жана мисалдары
Эй Хабр!

Бүгүнкү реалдуулукта, өнүгүү процесстеринде контейнерлештирүүнүн ролунун жогорулашына байланыштуу, контейнерлер менен байланышкан ар кандай этаптардын жана субъекттердин коопсуздугун камсыз кылуу маселеси акыркы орунда эмес. Текшерүүнү кол менен жүргүзүү көп убакытты талап кылган иш, андыктан бул процессти автоматташтыруу үчүн жок дегенде алгачкы кадамдарды жасасаңыз жакшы болмок.

Бул макалада мен бир нече Docker коопсуздук утилиталарын ишке ашыруу үчүн даяр скрипттерди жана бул процессти сынап көрүү үчүн кичинекей демо стенди кантип орнотуу боюнча нускамаларды бөлүшөм. Сиз материалдарды Dockerfile сүрөттөрүнүн жана нускамаларынын коопсуздугун текшерүү процессин кантип уюштуруу керектиги боюнча эксперимент жүргүзүү үчүн колдоно аласыз. Иштеп чыгуу жана ишке ашыруу инфраструктурасы ар ким үчүн ар кандай экени түшүнүктүү, ошондуктан төмөндө мен бир нече мүмкүн болгон варианттарды берем.

Коопсуздукту текшерүү Utilities

Докер инфраструктурасынын ар кандай аспектилерин текшерүүчү көптөгөн ар кандай жардамчы тиркемелер жана скрипттер бар. Алардын айрымдары мурунку макалада баяндалган (https://habr.com/ru/company/swordfish_security/blog/518758/#docker-security) жана бул макалада мен алардын үчөөнө токтолгум келет, алар иштеп чыгуу процессинде курулган Docker сүрөттөрү үчүн коопсуздук талаптарынын негизги бөлүгүн камтыйт. Кошумчалай кетсек, мен бул үч утилитаны коопсуздук текшерүүлөрүн жүргүзүү үчүн кантип бир түтүккө бириктирсе болорун мисал кылам.

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

Dockerfile нускамаларынын тууралыгын жана коопсуздугун алгач баалоого жардам берген абдан жөнөкөй консолдук программа (мисалы, уруксат берилген сүрөт реестрлерин колдонуу же sudo колдонуу).

Docker коопсуздук текшерүү утилиталарын ишке ашыруунун ыкмалары жана мисалдары

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

Сүрөттө (же сакталган тарбаллда) иштеген консолдук программа, ал белгилүү бир сүрөттүн катмарларын жана конфигурациясын талдоо аркылуу анын тууралыгын жана коопсуздугун текшерет - кандай колдонуучулар түзүлгөн, кандай нускамалар колдонулат, кандай томдор орнотулган , бош паролдун болушу ж.б.. е. Текшерүүлөрдүн саны анча чоң эмес жана бир нече өз текшерүүлөрүнө жана сунуштарына негизделген. CIS (Интернет коопсуздугу борбору) Бенчмарк докер үчүн.
Docker коопсуздук текшерүү утилиталарын ишке ашыруунун ыкмалары жана мисалдары

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

Бул утилита аялуулардын эки түрүн табууга багытталган - OS куруу көйгөйлөрү (Alpine, RedHat (EL), CentOS, Debian GNU, Ubuntu колдоого алынат) жана көз карандылык көйгөйлөрү (Gemfile.lock, Pipfile.lock, composer.lock, package-lock) .json , ip.lock, Cargo.lock). Trivy репозиторийдеги сүрөттү да, жергиликтүү сүрөттү да сканерлей алат, ошондой эле Докер сүрөтү менен өткөрүлүп берилген .tar файлынын негизинде сканерлей алат.

Docker коопсуздук текшерүү утилиталарын ишке ашыруунун ыкмалары жана мисалдары

Утилиталарды ишке ашыруу параметрлери

Сүрөттөлгөн тиркемелерди обочолонгон шарттарда сынап көрүү үчүн, мен жөнөкөйлөштүрүлгөн процесстин бир бөлүгү катары бардык утилиталарды орнотуу боюнча көрсөтмөлөрдү берем.

Негизги идея - иштеп чыгуу учурунда түзүлгөн Dockerfiles жана Docker сүрөттөрү үчүн мазмунду автоматтык түрдө текшерүүнү кантип ишке ашырууну көрсөтүү.

Текшерүүнүн өзү төмөнкү кадамдардан турат:

  1. Linter утилитасы менен Dockerfile нускамаларынын тууралыгын жана коопсуздугун текшерүү Hadolint
  2. акыркы жана аралык сүрөттөрдүн тууралыгын жана коопсуздугун текшерүү - пайдалуу Dockle
  3. Негизги сүрөттөлүштө жалпыга белгилүү болгон аялууларды (CVE) жана бир катар көз карандылыктарды текшерүү - утилита тарабынан Trivy

Кийинчерээк макалада мен бул кадамдарды ишке ашыруу үчүн үч варианттарды берем:
Биринчиси, GitLab мисалын колдонуу менен CI / CD түтүгүн конфигурациялоо (сыноо инстанциясын көтөрүү процессинин сүрөттөлүшү менен).
Экинчиси - кабык сценарийин колдонуу.
Үчүнчүсү, Docker сүрөттөрүн сканерлөө үчүн Docker сүрөтүн түзүү.
Сиз өзүңүзгө эң ылайыктуу вариантты тандап, аны инфраструктураңызга өткөрүп, муктаждыктарыңызга ылайыкташтыра аласыз.

Бардык керектүү файлдар жана кошумча нускамалар репозиторийде: https://github.com/Swordfish-Security/docker_cicd

GitLab CI/CD интеграциясы

Биринчи вариантта биз мисал катары GitLab репозиторий тутумун колдонуу менен коопсуздук текшерүүлөрүн кантип ишке ашырса болорун карап чыгабыз. Бул жерде биз кадамдарды карап чыгабыз жана GitLab менен тестирлөө чөйрөсүн нөлдөн баштап кантип орнотууну, сканерлөө процессин түзүүнү жана Dockerfile тестин жана туш келди сүрөттү - JuiceShop тиркемесин сыноо үчүн утилиталарды иштетүүнү көрөбүз.

GitLab орнотулууда
1. Docker орнотуу:

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

2. Sudo колдонбостон докер менен иштөө үчүн учурдагы колдонуучуну докер тобуна кошуңуз:

sudo addgroup <username> docker

3. IP дарегиңизди табыңыз:

ip addr

4. GitLab'ти контейнерге орнотуп, иштетиңиз, хост атындагы IP даректи өзүңүздүн дарекке алмаштырыңыз:

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 бардык керектүү орнотуу процедураларын аяктоосун күтүп жатабыз (сиз процессти журнал файлынын чыгышы аркылуу байкасаңыз болот: docker logs -f gitlab).

5. Серепчиден жергиликтүү IP дарегиңизди ачып, түпкү колдонуучу үчүн сырсөздү өзгөртүүнү сунуштаган баракты көрүңүз:
Docker коопсуздук текшерүү утилиталарын ишке ашыруунун ыкмалары жана мисалдары
Жаңы сырсөздү коюп, GitLab'ка өтүңүз.

6. Жаңы долбоор түзүңүз, мисалы cicd-test жана аны баштоо файлы менен инициализациялаңыз README.md:
Docker коопсуздук текшерүү утилиталарын ишке ашыруунун ыкмалары жана мисалдары
7. Эми биз GitLab Runner орнотушубуз керек: өтүнүч боюнча бардык керектүү операцияларды аткара турган агент.
Акыркы версиясын жүктөп алыңыз (бул учурда, Linux 64-биттин астында):

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

8. Аны аткарыла турган кыл:

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

9. Runner үчүн OS колдонуучуну кошуп, кызматты баштаңыз:

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

Ал төмөнкүдөй көрүнүшү керек:

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. Эми биз Runnerди каттайбыз, ал биздин GitLab инстанциясы менен иштеше алат.
Бул үчүн, Орнотуулар-CI/CD барагын ачыңыз (http://OUR_ IP_ADDRESS/root/cicd-test/-/settings/ci_cd) жана Жүгүрүүчүлөр өтмөгүнөн URL жана Каттоо белгисин табыңыз:
Docker коопсуздук текшерүү утилиталарын ишке ашыруунун ыкмалары жана мисалдары
11. URL жана Каттоо белгисин алмаштыруу менен Runnerди каттаңыз:

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"

Натыйжада, биз даяр иштеген GitLab алабыз, анда биз коммуналдык кызматтарды баштоо үчүн нускамаларды кошуубуз керек. Бул демонстрацияда бизде тиркемени түзүү жана контейнерлөө кадамдары жок, бирок реалдуу чөйрөдө алар сканерлөө кадамдарынан мурун болуп, анализ үчүн сүрөттөрдү жана Докер файлын жаратышат.

түтүк конфигурациясы

1. Репозиторийге файлдарды кошуңуз mydockerfile.df (бул биз сынай турган сыноо Dockerfile) жана GitLab CI/CD процессинин конфигурация файлы .gitlab-cicd.yml, сканерлер үчүн нускамаларды тизмелейт (файлдын аталышындагы чекитке көңүл буруңуз).

.yaml конфигурация файлы тандалган Dockerfile жана DOCKERFILE өзгөрмөсүндө көрсөтүлгөн сүрөттү талдоочу үч утилитаны (Hadolint, Dockle жана Trivy) иштетүү боюнча нускамаларды камтыйт. Бардык керектүү файлдарды репозиторийден алса болот: https://github.com/Swordfish-Security/docker_cicd/

дан үзүндү mydockerfile.df (бул утилита кантип иштээрин көрсөтүү үчүн жөн гана ыктыярдуу нускамалардын топтому бар абстракттуу файл). Файлга түз шилтеме: mydockerfile.df

mydockerfile.df мазмуну

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 конфигурациясы ушундай көрүнөт (файлдын өзү бул жерден түз шилтемеден алынышы мүмкүн: .gitlab-ci.yml):

.gitlab-ci.yml мазмуну

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

Зарыл болсо, сакталган сүрөттөрдү .tar архиви катары сканерлесеңиз да болот (бирок YAML файлындагы утилиталардын киргизүү параметрлерин өзгөртүү керек болот)

Эскертүү: Trivy орнотууну талап кылат об и Мурунку. Болбосо, ал RedHat негизиндеги сүрөттөрдү сканерлөөдө жана аялуу маалыматтар базасына жаңыртууларды алууда каталарды жаратат.

2. Файлдарды репозиторийге кошкондон кийин, конфигурация файлыбыздагы нускамаларга ылайык, GitLab автоматтык түрдө куруу жана сканерлөө процессин баштайт. CI / CD → Түтүктөр өтмөгүндө нускамалардын жүрүшүн көрө аласыз.

Натыйжада алдыбызда төрт милдет турат. Алардын үчөө түздөн-түз сканерлөө менен алектенет, ал эми акыркысы (Баяндама) сканерлөө натыйжалары менен чачыранды файлдардан жөнөкөй отчетту чогултат.
Docker коопсуздук текшерүү утилиталарын ишке ашыруунун ыкмалары жана мисалдары
Демейки боюнча, сүрөттө же көз карандылыкта КРИТИКАЛЫК кемчиликтер табылса, Trivy анын аткарылышын токтотот. Ошол эле учурда, Hadolint ар дайым аткаруу кодунда Ийгиликти кайтарат, анткени анын аткарылышы дайыма эскертүүлөргө ээ, бул курууну токтотууга алып келет.

Белгилүү талаптарга жараша, сиз чыгуу кодун конфигурациялай аласыз, ошентип бул утилиталар белгилүү бир критикалык көйгөйлөр аныкталганда куруу процессин токтотот. Биздин учурда, Trivy биз SHOWSTOPPER өзгөрмөсүндө көрсөткөн катаалдыкты аныктаса гана куруу токтойт. .gitlab-ci.yml.
Docker коопсуздук текшерүү утилиталарын ишке ашыруунун ыкмалары жана мисалдары

Ар бир утилитанын ишинин натыйжасын ар бир скандоочу тапшырманын журналында, түздөн-түз артефакттар бөлүмүндөгү json файлдарында же жөнөкөй HTML отчетунда көрүүгө болот (төмөндө көбүрөөк):
Docker коопсуздук текшерүү утилиталарын ишке ашыруунун ыкмалары жана мисалдары

3. Утилиталардын отчетторун бир аз окуй турган формада берүү үчүн үч json файлын кемчиликтер таблицасы менен бир HTML файлына айландыруу үчүн кичинекей Python скрипти колдонулат.
Бул скрипт өзүнчө Отчет тапшырмасы менен ишке киргизилет жана анын акыркы артефакты отчету бар HTML файлы болуп саналат. Скрипт булагы да репозиторийде жана сиздин муктаждыктарыңызга, түстөрүңүзгө ж.б. ылайыкташтырылышы мүмкүн.
Docker коопсуздук текшерүү утилиталарын ишке ашыруунун ыкмалары жана мисалдары

Shell скрипти

Экинчи параметр Docker сүрөттөрүн CI / CD тутумунда эмес текшерүү керек болгон учурларда ылайыктуу, же сизде түздөн-түз хостто аткарыла турган формада бардык көрсөтмөлөр болушу керек. Бул параметр таза виртуалдык (ал тургай реалдуу) машинада иштей турган даяр кабык скрипти менен камтылган. Скрипт жогорудагы gitlab-runner сыяктуу көрсөтмөлөрдү аткарат.

Скрипт ийгиликтүү иштеши үчүн системада Docker орнотулуп, учурдагы колдонуучу докер тобунда болушу керек.

Скрипттин өзүн бул жерден тапса болот: docker_sec_check.sh

Файлдын башында өзгөрмөлөр кайсы сүрөттү сканерлөө керектигин жана каталардын кандай катаалдыгы Trivy утилитасынын көрсөтүлгөн ката коду менен чыгуусуна алып келерин белгилейт.

Скрипттин аткарылышы учурунда бардык утилиталар каталогго жүктөлөт docker_tools, алардын ишинин натыйжалары - справочникте docker_tools/json, жана отчет менен HTML файлда болот results.html.

Мисал скрипт чыгаруу

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

Бардык утилиталары бар докер сүрөтү

Үчүнчү альтернатива катары, мен коопсуздук кызматтары менен сүрөт түзүү үчүн эки жөнөкөй Dockerfiles түздүм. Бир Dockerfile репозиторийден сүрөттү сканерлөө үчүн топтомун түзүүгө жардам берет, экинчиси (Dockerfile_tar) сүрөт менен tar файлын сканерлөө үчүн топтомду түзөт.

1. Биз репозиторийден тиешелүү Docker файлын жана сценарийлерин алабыз https://github.com/Swordfish-Security/docker_cicd/tree/master/Dockerfile.
2. Аны чогултуу үчүн иштетиңиз:

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

3. Куруу аяктагандан кийин, сүрөттөн контейнерди түзүңүз. Ошол эле учурда, биз DOCKERIMAGE чөйрө өзгөрмөсүн бизди кызыктырган сүрөттүн аталышы менен өткөрүп беребиз жана талдоо жүргүзүүнү каалаган Dockerfile файлын машинабыздан файлга орнотобуз. /dockerfile (бул файлга абсолюттук жол керек экенин эске алыңыз):

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

натыйжалары

Биз Docker артефакты сканерлөөчү утилиттердин бир эле негизги топтомун камттык, менимче, алар сүрөт коопсуздук талаптарынын жакшы бөлүгүн абдан натыйжалуу камтыйт. Ошол эле текшерүүлөрдү жүргүзө турган, кооз отчетторду түзө турган же жалаң гана консолдук режимде иштей турган, контейнерди башкаруу тутумдарын жабуу ж.б. көптөгөн башка акы төлөнүүчү жана акысыз куралдар бар. Бул куралдарга жана аларды кантип интеграциялоого сереп салуу бир аз кийинчерээк пайда болушу мүмкүн.

Макалада сүрөттөлгөн инструменттер топтомунун оң жагы - алардын бардыгы ачык булакка курулган жана сиз аларды жана башка ушул сыяктуу куралдарды колдонуп, сиздин талаптарга жана инфраструктура өзгөчөлүктөрүнө дал келген нерсени таба аласыз. Албетте, табылган бардык алсыздыктар белгилүү бир шарттарда колдонулушу үчүн изилдениши керек, бирок бул келечектеги чоң макаланын темасы.

Бул нускамалар, скрипттер жана утилиталар сизге жардам берет жана контейнерлештирүү тармагында коопсуз инфраструктураны түзүү үчүн баштапкы чекит болуп калат деп ишенем.

Source: www.habr.com

Комментарий кошуу