
Përshëndetje, Habr!
Në realitetin modern, për shkak të rolit në rritje të konteinerizimit në proceset e zhvillimit, çështja e sigurisë në fazat dhe entitetet e ndryshme që lidhen me kontejnerët është shumë e rëndësishme. Kryerja e kontrolleve manuale është një detyrë e lodhshme, prandaj do të ishte mirë të bëheshin të paktën hapat fillestarë drejt automatizimit të këtij procesi.
Në këtë artikull, do të ndaj skenarë të gatshëm për implementimin e disa mjeteve të sigurisë së Docker dhe një udhëzim se si të krijoni një mini-stendë demo për të testuar këtë proces. Materialet mund të shfrytëzohen për të eksperimentuar se si të organizoni procesin e testimit të sigurisë së imazheve dhe udhëzimeve Dockerfile. Sigurisht, infrastruktura e zhvillimit dhe implementimit është e ndryshme për të gjithë, prandaj më poshtë do të jap disa mundësi të mundshme.
Mjetet e kontrollit të sigurisë
Ekziston një numër i madh aplikacionesh dhe skriptesh ndihmës që realizojnë kontrolle të ndryshme mbi aspektet e infrastrukturës Docker. Një pjesë e tyre është përshkruar në artikullin e mëparshëm (), ndërsa në këtë material do të ndalem në tre prej tyre, që përfshijnë shumicën e kërkesave për sigurinë e imazheve Docker që ndërtohen gjatë procesit të zhvillimit. Për më tepër, do të tregoj një shembuj se si mund të lidhim këto tri utilitarë në një pipeline për realizimin e kontrolleve të sigurisë.
Hadolint
Një utilitar mjaft i thjeshtë për konsolën, i cili ndihmon në një vlerësim fillestar të saktësisë dhe sigurisë së instrukcioneve të Dockerfile (p.sh., përdorimi i vetëm regjistrave të lejuar të imazheve ose përdorimi i sudo).

Dockle
NjĂ« utilitar konsolĂ« qĂ« punon me imazhin (ose me njĂ« arkiv tar tĂ« ruajtur tĂ« imazhit), i cili kontrollon korrektĂ«sinĂ« dhe sigurinĂ« e njĂ« imazhi tĂ« caktuar, duke analizuar shtresat dhe konfigurimin e tij â cilĂ«t pĂ«rdorues janĂ« krijuar, cilat udhĂ«zime pĂ«rdoren, cilat volume janĂ« tĂ« lidhura, prania e fjalĂ«kalimit bosh etj. Deri tani, numri i kontrolleve nuk Ă«shtĂ« shumĂ« i madh dhe bazohet nĂ« disa kontrolle dhe rekomandime tĂ« brendshme. pĂ«r Docker.

Trivy
Ky utilitar ka si objektiv identifikimin e dobĂ«sive tĂ« dy tipeve â problemet e ndĂ«rtimit tĂ« OS-sĂ« (pĂ«rkrah Alpine, RedHat (EL), CentOS, Debian GNU, Ubuntu) dhe probleme nĂ« varĂ«si (Gemfile.lock, Pipfile.lock, composer.lock, package-lock.json, yarn.lock, Cargo.lock). Trivy mund tĂ« skanojĂ« si njĂ« imazh nĂ« depo, ashtu edhe njĂ« imazh lokal, si dhe tĂ« kryejĂ« skanim mbi njĂ« skedar .tar tĂ« dorĂ«zuar me imazhin Docker.

Opsionet e integrimit të utilitareve
Për të provuar aplikacionet e përshkruara në kushte të izoluar, do të ofroj udhëzime për instalimin e të gjitha utilitareve brenda një procesi të thjeshtuar.
Ideja kryesore është të demonstrohet si mund të implementohet kontrolli automatizuar i përmbatjes së Dockerfile dhe imazheve Docker, të cilat krijohen gjatë procesit të zhvillimit.
Kontrolli vetë përbëhet nga hapat e mëposhtëm:
- Kontrolli i saktĂ«sisĂ« dhe sigurisĂ« sĂ« komandave nĂ« Dockerfile â me njĂ« utilitar linters Hadolint
- Kontrolli i saktĂ«sisĂ« dhe sigurisĂ« sĂ« imazheve pĂ«rfundimtare dhe ndĂ«rmjetĂ«se â me njĂ« utilitar Dockle
- Kontrolli pĂ«r prani tĂ« dobĂ«sive tĂ« njohura (CVE) nĂ« imazhin bazĂ« dhe njĂ« sĂ«rĂ« varĂ«sish â me njĂ« utilitar Trivy
Në vazhdim do të përmend tre mënyra për të implementuar këto hapa:
E para â pĂ«rmes konfigurimit tĂ« pipeline-it CI/CD me shembullin e GitLab (me pĂ«rshkrimin e procesit tĂ« ngritjes sĂ« njĂ« instancĂ« testi).
E dyta â duke pĂ«rdorur njĂ« skript shell.
E treta â me ndĂ«rtimin e njĂ« imazhi Docker pĂ«r skanimin e imazheve Docker.
Mund të zgjidhni opsionin që ju përshtatet më shumë, ta transferoni atë në infrastrukturën tuaj dhe ta adaptoni sipas nevojave tuaja.
Të gjithë skedarët e nevojshëm dhe udhëzimet shtesë ndodhen gjithashtu në repositorin:
Integrimi në GitLab CI/CD
NĂ« kĂ«tĂ« variant, do tĂ« shqyrtojmĂ« se si mund tĂ« aplikojmĂ« kontrollin e sigurisĂ« duke marrĂ« si shembull sistemin e reposave GitLab. KĂ«tu do tĂ« ndjekim hapat dhe do tĂ« shqyrtojmĂ« si tĂ« vendosim nga zero njĂ« mjedis testimi me GitLab, tĂ« pĂ«rpilojmĂ« procesin e skanimit dhe tĂ« aktivizojmĂ« mjete pĂ«r tĂ« verifikuar Dockerfile-nĂ« e testit dhe imazhin rastĂ«sor â aplikacionin JuiceShop.
Instalimi i GitLab
1. Vendosim Docker:
sudo apt-get update && sudo apt-get install docker.io2. Shtojmë përdoruesin aktual në grupin docker, që të mund të punojmë me docker pa përdorur sudo:
sudo addgroup docker3. Gjejmë IP-në tonë:
ip addr4. Instalojmë dhe aktivizojmë GitLab në konteiner, duke zëvendësuar adresën IP në hostname me tonë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:latestShkruajmë, derisa GitLab të realizojë procedurat e nevojshme për instalimin (mund të ndjekim procesin përmes daljes së skedarit të regjistrimit: docker logs -f gitlab).
5. Hapim në shfletues IP-në tonë lokale dhe shohim faqen që ofron për të ndryshuar fjalëkalimin për përdoruesin root:

Vendosim një fjalëkalim të ri dhe hyjmë në GitLab.
6. Krijojmë një projekt të ri, për shembull cicd-test dhe e inicializojmë atë me një skedar fillestar. README.md:

7. Tani kemi nevojë të instalojmë GitLab Runner: agjenti që do të nisë të gjitha operacionet e nevojshme në kërkesë.
Shkarko versionin mĂ« tĂ« fundit (nĂ« kĂ«tĂ« rast â pĂ«r Linux 64-bit):
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd648. Bëj atë ekzekutues:
sudo chmod +x /usr/local/bin/gitlab-runner9. Shto një përdorues të OS-së për Runner-in dhe nis shërbimin:
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 startDuhet të dalë afërsisht kështu:
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. Tani regjistrojmë Runner-in që ai të mund të ndërveprojë me instancën tonë GitLab.
Për këtë, hapim faqen Settings-CI/CD (http://OUR_IP_ADDRESS/root/cicd-test/-/settings/ci_cd) dhe në skedën Runners gjejmë URL dhe Registration token:

11. Regjistrojmë Runner-in, duke zëvendësuar URL-në dhe Registration token:
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"Si përfundim, ne kemi një GitLab në punë, në të cilin duhet të shtojmë udhëzime për fillimin e utilitareve tona. Në këtë rast demonstrues, ne nuk kemi hapa për ndërtimin e aplikacionit dhe kontejnerizimit të tij, por në një ambient real, ata do të ishin para hapave të skanimit dhe do të formonin imazhe dhe Dockerfile për analizë.
Konfigurimi i pipeline
1. Shtojmë në depo skedarët mydockerfile.df (ky është një Dockerfile testues, që do ta verifikojmë) dhe skedarin e konfigurimit të procesit GitLab CI/CD .gitlab-cicd.yml, i cili përmend udhëzimet për skanuesit (vini re pikën në emrin e skedarit).
Skedari YAML i konfigurimit përmban udhëzime për aktivizimin e tre utilitareve (Hadolint, Dockle dhe Trivy), të cilat do të analizojnë Dockerfile të përzgjedhur dhe imazhin e caktuar në variablën DOCKERFILE. Të gjithë skedarët e nevojshëm mund të merren nga depoja:
Nxjerrje nga mydockerfile.df (ky është një skedar abstrakt me një grup udhëzimesh të rastësishme vetëm për të demonstruar funksionimin e utilitarit). Lidhja e drejtpërdrejtë për skedarin:
Përmbajtja e 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 "
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 rootKonfigurimi YAML duket kështu (skedari vetë mund të merret me lidhje të drejtpërdrejtë këtu: ):
Përmbajtja e .gitlab-ci.yml
variablat:
DOCKER_HOST: "tcp://docker:2375/"
DOCKERFILE: "mydockerfile.df" # emri i Dockerfile për t'u analizuar
DOCKERIMAGE: "bkimminich/juice-shop" # emri i Docker image për t'u analizuar
# DOCKERIMAGE: "knqyf263/cve-2018-11235" # imazh Docker testues me disa CVE ZHVILLIMI
SHOWSTOPPER_PRIORITY: "CRITICAL" # cilësia e rëndësisë që do të dështojë punën e Trivy
TRIVYCACHE: "$CI_PROJECT_DIR/.cache" # ku të ruhet databaza e Trivy për vulnerabilitete për rikthim më të shpejtë
ARTIFACT_FOLDER: "$CI_PROJECT_DIR"
shërbimet:
- docker:dind # për të qenë në gjendje të ndërtojë imazhe docker brenda Runner-it
fazat:
- skano
- raport
- publikim
HadoLint:
# Analiza e bazik e urdhërimeve në Dockerfile
faza: skano
imazhi: docker:git
pas_script:
- cat $ARTIFACT_FOLDER/hadolint_results.json
skenari:
- eksporto 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 do të dalë gjithmonë me kodin e daljes 0
- ./hadolint-Linux-x86_64 -f json $DOCKERFILE > $ARTIFACT_FOLDER/hadolint_results.json || exit 0
artefakte:
kur: gjithmonë # kthe artefaktet edhe pas dështimit të punës
rrugët:
- $ARTIFACT_FOLDER/hadolint_results.json
Dockle:
# Analiza e praktikave më të mira mbi imazhin docker (lejet e përdoruesve, urdhërimet e ndjekura kur ishte ndërtuar imazhi, etj.)
faza: skano
imazhi: docker:git
pas_script:
- cat $ARTIFACT_FOLDER/dockle_results.json
skenari:
- eksporto 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
artefakte:
kur: gjithmonë # kthe artefaktet edhe pas dështimit të punës
rrugët:
- $ARTIFACT_FOLDER/dockle_results.json
Trivy:
# Analizimi i imazhit docker dhe varësive të paketave kundër disa bazave CVE
faza: skano
imazhi: docker:git
skenari:
# marrja e Trivy më të fundit
- apk add rpm
- eksporto 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
# duke shfaqur të gjitha vulnerabilitetet pa dështuar ndërtimin
- ./trivy -d --cache-dir $TRIVYCACHE -f json -o $ARTIFACT_FOLDER/trivy_results.json --exit-code 0 $DOCKERIMAGE
# shkruani informacionin për vulnerabilitetet në stdout në format lehtësisht të lexueshëm (leximi i json-it të pastër nuk është argëtues, apo?). Mund ta hiqni këtë nëse nuk keni nevojë për këtë.
- ./trivy -d --cache-dir $TRIVYCACHE --exit-code 0 $DOCKERIMAGE
# dështoni ndërtimin nëse prioriteti SHOWSTOPPER gjendet
- ./trivy -d --cache-dir $TRIVYCACHE --exit-code 1 --severity $SHOWSTOPPER_PRIORITY --quiet $DOCKERIMAGE
artefakte:
kur: gjithmonë # kthe artefaktet edhe pas dështimit të punës
rrugët:
- $ARTIFACT_FOLDER/trivy_results.json
cache:
rrugët:
- .cache
Raporti:
# kombinimi i rezultateve të mjeteve në një HTML
faza: raport
kur: gjithmonë
imazhi: python:3.5
skenari:
- 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
artefakte:
rrugët:
- results.htmlNëse është e nevojshme, mund të skanoni edhe imazhet e ruajtura si arkiv .tar (megjithatë, do të nevojitet të ndryshoni parametrat hyrës në skedarin YAML për mjetet).
NB: Trivy kërkon që të jetë instaluar për ta nisur. rpm dhe gitNë të kundërt, ai do të japë gabime gjatë skanimit të imazheve RedHat dhe në marrjen e përditësimeve të bazës së dobësive.
2. Pas shtimit tĂ« skedarĂ«ve nĂ« repositor, sipas udhĂ«zimeve nĂ« skedarin tonĂ« tĂ« konfigurimit, GitLab automatikisht do tĂ« fillojĂ« procesin e ndĂ«rtimit dhe skanimit. NĂ« skedĂ«n CI/CD â Pipelines mund tĂ« shihni zhvillimin e udhĂ«zimeve.
Si rezultat, kemi katër detyra. Tre nga ato merren drejtpërdrejt me skanimin dhe e fundit (Raporti) mbledh një raport të thjeshtë nga skedarët e ndarë me rezultatet e skanimit.

Me defolt, Trivy ndalon ekzekutimin e tij nëse zbulohen dobësi CRITICAL në imazhin ose varësitë. Në të njëjtën kohë, Hadolint gjithmonë kthen një kod sukses, pasi rezultatet e tij gjithmonë kanë vërejtje, që çon në ndalimin e ndërtimit.
Në varësi të kërkesave konkrete, mund të konfigurohet kodi i daljes që këto utilitete, kur të zbulojnë probleme të caktuara me kriticitet, të ndalojnë gjithashtu procesin e ndërtimit. Në rastin tonë, ndërtimi do të ndalet vetëm nëse Trivy zb discovers një dobësi me kriticitetin që kemi specifikuar në ndryshoren SHOWSTOPPER në .gitlab-ci.yml.

Rezultati i punës së çdo utiliteti mund të shihet në logun e çdo detyre skanuese, drejtpërdrejt në skedarët json në seksionin artifacts ose në një raport HTML të thjeshtë (për të cilin do të flasim më poshtë):

Për të paraqitur raportet e utiliteteve në një format pak më të lexueshëm për njerëzit, përdoret një skenar i vogël në Python për të konvertuar tre skedarë json në një skedar HTML me një tabelë defektesh.
Ky skenar ekzekutohet si një detyrë e veçantë Raport, dhe artefakti i tij përfundimtar është një skedar HTML me raportin. Burimi i skenarit gjithashtu ndodhet në repositorium dhe mund të adaptohet sipas nevojave tuaja, ngjyrave etj.

Shell-skenar
Versioni i dytë përshtatet për rastet kur është e nevojshme të kontrolloni imazhet Docker jashtë sistemit CI/CD ose është e nevojshme të keni të gjitha udhëzimet në një format të ekzekutueshëm direkt në host. Ky variant mbulohet nga një skript shell të gatshëm, i cili mund të aktivizohet në një makinë virtuale (ose madje edhe reale) të pastër. Skripti ekzekuton të njëjtat udhëzime si ato të përshkruara më sipër për gitlab-runner.
Për funksionimin e suksesshëm të skriptit, në sistem duhet të jetë instaluar Docker dhe përdoruesi aktual duhet të jetë në grupin docker.
Skripti vetë mund të merret këtu:
Në fillim të skedarit, variablat përcaktojnë se cili imazh duhet të skanohet dhe defektet e cilësisë së caktuar do të shkaktojnë daljen nga utiliteti Trivy me kodin e caktuar të gabimit.
GjatĂ« ekzekutimit tĂ« skriptit, tĂ« gjitha utilitetet do tĂ« shkarkohen nĂ« direktorinĂ« docker_tools, rezultatet e punĂ«s sĂ« tyre â nĂ« direktorinĂ« docker_tools/json, ndĂ«rsa HTML me raportin do tĂ« jetĂ« nĂ« skedarin results.html.
Shembuj të daljes së skriptit
~/docker_cicd$ ./docker_sec_check.sh
[+] Po vendosjen e variablave të ambientit
[+] Instalimi i pakove të nevojshme
[+] Përgatitja e drejtorive të nevojshme
[+] Shkarkimi i Dockerfile-it shembull
2020-10-20 10:40:00 (45.3 MB/s) - âDockerfileâ ruajtur [8071/8071]
[+] Tërheqja e imazhit për skanim
latest: Tërheqja nga bkimminich/juice-shop
[+] Ekzekutimi i Hadolint
...
Dockerfile:205 DL3015 Shmangni paketat shtesë duke specifikuar `--no-install-recommends`
Dockerfile:248 DL3002 USER-i i fundit nuk duhet të jetë root
...
[+] Ekzekutimi i Dockle
...
WARN - DKL-DI-0006: Shmangni etiketën e fundit
* Shmangni etiketën 'latest'
INFO - CIS-DI-0005: Aktivizoni besueshmërinë për përmbajtjen në Docker
* eksportoni DOCKER_CONTENT_TRUST=1 para docker pull/build
...
[+] Ekzekutimi i Trivy
juice-shop/frontend/package-lock.json
=====================================
Totali: 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 | Pingu i prototipit në |
| | | | | object-path |
+---------------------+------------------+ +---------+-------------------------+
| tree-kill | CVE-2019-15599 | | 1.2.2 | Injektime Kode |
+---------------------+------------------+----------+---------+-------------------------+
| webpack-subresource | CVE-2020-15262 | LOW | 1.4.1 | Niveli i mbrojtur dinamik |
| | | | | ngarkesat |
+---------------------+------------------+----------+---------+-------------------------+
juice-shop/package-lock.json
============================
Totali: 20 (UNKNOWN: 0, LOW: 1, MEDIUM: 6, HIGH: 8, CRITICAL: 5)
...
juice-shop/package-lock.json
============================
Totali: 5 (CRITICAL: 5)
...
[+] Heqja e mbetjeve
[+] Duke bërë rezultatin të duket i bukur
[+] Konvertimi i rezultateve JSON
[+] Shkrimi i rezultateve në HTML
[+] Dalje e pastër ============================================================
[+] Ădo gjĂ« Ă«shtĂ« bĂ«rĂ«. Gjeni raportin HTML tĂ« rezultatit nĂ« results.htmlImazhi Docker me tĂ« gjitha utilitetet
Si një alternativë të tretë, unë përgatita dy Dockerfile të thjeshtë për krijimin e një imazhi me utilitetet e sigurisë. Një Dockerfile do të ndihmojë në grumbullimin e një seti për skanimin e imazhit nga depoja, ndërsa tjetri (Dockerfile_tar) do të grumbullojë një set për skanimin e skedarit tar me imazhin.
1. Merrni dosjen përkatëse Docker dhe skriptet nga depoja .
2. E filloni ndërtimin e tij:
docker build -t dscan:image -f docker_security.df .
3. Pas përfundimit të ndërtimit, krijoni një kontejner nga imazhi. Gjatë kësaj, kaloni variablin e ambientit DOCKERIMAGE me emrin e imazhit që na intereson dhe montoni Dockerfile që dëshirojmë të analizojmë nga makina jonë në skedarin /Dockerfile (vini re, se kërkohet rruga absolute deri në këtë skedar):
docker run --rm -v $(pwd)/results:/results -v $(pwd)/docker_security.df:/Dockerfile -e DOCKERIMAGE="bkimminich/juice-shop" dscan:image
[+] Vendosja e variablave të ambientit
[+] Duke ekzekutuar Hadolint
/Dockerfile:3 DL3006 Gjithmonë etiketo versionin e një imazhi në mënyrë të qartë
[+] Duke ekzekutuar Dockle
WARN - DKL-DI-0006: Shmangni etiketimin e fundit
* Shmangni etiketën 'latest'
INFO - CIS-DI-0005: Aktivizoni besueshmërinë e përmbajtjes për Docker
* eksportoni DOCKER_CONTENT_TRUST=1 para docker pull/build
INFO - CIS-DI-0006: Shtoni udhëzimin HEALTHCHECK në imazhin e kontejnerit
* nuk u gjet deklarata HEALTHCHECK
INFO - DKL-LI-0003: Vendosni vetëm skedarët e nevojshëm
* skedar i panevojshëm : juice-shop/node_modules/sqlite3/Dockerfile
* skedar i panevojshëm : juice-shop/node_modules/sqlite3/tools/docker/architecture/linux-arm64/Dockerfile
* skedar i panevojshëm : juice-shop/node_modules/sqlite3/tools/docker/architecture/linux-arm/Dockerfile
[+] Duke ekzekutuar Trivy
...
juice-shop/package-lock.json
============================
Total: 20 (UNKNOWN: 0, LOW: 1, MEDIUM: 6, HIGH: 8, CRITICAL: 5)
...
[+] Duke i dhënë pamje të bukur rezultatit
[+] Duke filluar modulin kryesor ============================================================
[+] Duke konvertuar rezultatet JSON
[+] Duke shkruar rezultatet HTML
[+] Dalje e pastruar ============================================================
[+] Ădo gjĂ« Ă«shtĂ« bĂ«rĂ«. Gjeni raportin HTML pĂ«rfundimtar nĂ« results.htmlRezultatet
Ne kemi shqyrtuar vetëm një grup të thjeshtë mjetesh për skanimin e artefakteve Docker, i cili, sipas mendimit tim, mbulon mjaft mirë një pjesë të konsiderueshme të kërkesave për sigurinë e imazheve. Ekzistojnë ende një numër i madh mjetesh të pagesës dhe falas që mund të realizojnë të njëjtat verifikime, të hartojnë raporte të bukura ose të funksionojnë në mënyrë të pastër në modalitetin e konsolës, të mbulojnë sistemet e menaxhimit të konteinerëve, etj. Një përmbledhje e këtyre mjeteve dhe mënyrave të integrimit të tyre do të shfaqet ndoshta pak më vonë.
Një nga anët pozitive të setit të mjeteve të përshkruara në artikull është se të gjitha ato janë ndërtuar mbi kodin burimor të hapur dhe ju mund të eksperimentoni me to dhe mjetet e ngjashme për të gjetur se çfarë përshtatet më mirë me kërkesat tuaja dhe karakteristikat e infrastrukturës. Sigurisht, të gjitha vulnerabilitetet që do të gjenden duhet të studiohen për aplikueshmërinë në kushte specifike, por kjo është një temë për një artikull të madh në të ardhmen.
Shpresoj se ky udhëzim, skriptet dhe mjetet do t'ju ndihmojnë dhe do të shërbejnë si një pikënisje për të krijuar një infrastrukturë më të sigurt në fushën e konteinerizimit.
Burimi: habr.com
