د ډاکر امنیت چک کولو لپاره د اسانتیاوو پلي کولو میتودونه او مثالونه

د ډاکر امنیت چک کولو لپاره د اسانتیاوو پلي کولو میتودونه او مثالونه
اې حبره!

په عصري واقعیت کې، په پرمختیایي پروسو کې د کانټینر کولو د مخ په زیاتیدونکي رول له امله، د کانټینرونو سره تړلې د مختلفو مرحلو او ادارو د امنیت ډاډمن کولو مسله لږه مهمه نه ده. د لاسي چکونو ترسره کول وخت نیسي، نو دا به ښه نظر وي چې لږترلږه د دې پروسې اتومات کولو لپاره لومړني ګامونه پورته کړئ.

پدې مقاله کې ، زه به د ډیری ډاکر امنیت اسانتیاو پلي کولو لپاره چمتو شوي سکریپټونه شریک کړم او د دې پروسې ازموینې لپاره د کوچني ډیمو سټینډ پلي کولو څرنګوالي په اړه لارښوونې. تاسو کولی شئ توکي د تجربې لپاره وکاروئ چې څنګه د Dockerfile عکسونو او لارښوونو امنیت ازموینې پروسې تنظیم کړئ. دا روښانه ده چې د هرچا پراختیا او تطبیق زیربنا توپیر لري، نو لاندې به زه څو ممکنه اختیارونه وړاندې کړم.

د امنیت چک اسانتیاوې

دلته د مختلف مرستندویه غوښتنلیکونو او سکریپټونو لوی شمیر شتون لري چې د ډاکر زیربنا مختلف اړخونو باندې چیکونه ترسره کوي. ځینې ​​یې لا دمخه په تیرو مقالو کې بیان شوي (https://habr.com/ru/company/swordfish_security/blog/518758/#docker-security)، او پدې موادو کې زه غواړم په دریو باندې تمرکز وکړم، کوم چې د پراختیا پروسې په جریان کې جوړ شوي د ډاکر عکسونو لپاره د امنیت اړتیاوې پوښي. برسېره پردې، زه به یو مثال هم وښایه چې څنګه دا درې اسانتیاوې د امنیتي چکونو ترسره کولو لپاره په یوه پایپ لاین کې وصل کیدی شي.

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

د کافي ساده کنسول افادیت چې مرسته کوي ، د لومړي اټکل په توګه ، د ډاکر فایل لارښوونو سموالي او خوندیتوب ارزونه کوي (د مثال په توګه ، یوازې د مجاز عکس ثبتونو کارول یا د سوډو کارول).

د ډاکر امنیت چک کولو لپاره د اسانتیاوو پلي کولو میتودونه او مثالونه

ډاکل
https://github.com/goodwithtech/dockle

د کنسول یوټیلیټ چې د عکس سره کار کوي (یا د عکس خوندي شوي ټار آرشیف سره) ، کوم چې د یو ځانګړي عکس درستیت او امنیت چیک کوي لکه د هغې پرتونه او تشکیلات تحلیل کوي - کوم کارونکي رامینځته شوي ، کوم لارښوونې کارول کیږي ، کوم حجمونه ایښودل شوي، د خالي پاسورډ شتون، او نور. CIS (د انټرنیټ امنیت لپاره مرکز) بنچمارک د ډاکر لپاره.
د ډاکر امنیت چک کولو لپاره د اسانتیاوو پلي کولو میتودونه او مثالونه

ټریوی
https://github.com/aquasecurity/trivy

د دې افادیت هدف د دوه ډوله زیانونو موندلو لپاره دی - د OS جوړونو سره ستونزې (د الپین ، ریډ هټ (EL) لخوا ملاتړ کیږي ، CentOS ، Debian GNU ، Ubuntu) او د انحصار ستونزې (Gemfile.lock, Pipfile.lock, composer.lock, بسته) -lock.json، yarn.lock، cargo.lock). Trivy کولی شي په ذخیره کې عکس او ځایی عکس دواړه سکین کړي ، او د ډاکر عکس سره د لیږدول شوي .tar فایل پراساس هم سکین کولی شي.

د ډاکر امنیت چک کولو لپاره د اسانتیاوو پلي کولو میتودونه او مثالونه

د اسانتیاوو د پلي کولو لپاره اختیارونه

په جلا چاپیریال کې د بیان شوي غوښتنلیکونو هڅه کولو لپاره ، زه به په یو څه ساده پروسې کې د ټولو اسانتیاو نصبولو لارښوونې چمتو کړم.

اصلي نظر دا دی چې وښیې چې تاسو څنګه کولی شئ د Dockerfiles او Docker عکسونو اتوماتیک مینځپانګې تصدیق پلي کړئ چې د پراختیا پرمهال رامینځته شوي.

چک پخپله لاندې مرحلې لري:

  1. د لینټر افادیت په کارولو سره د ډاکرفایل لارښوونو سموالي او خوندیتوب چیک کول Hadolint
  2. د یوټیلیټ په کارولو سره د وروستي او منځنیو عکسونو درستیت او خوندیتوب چیک کول ډاکل
  3. په بیس عکس کې د عامه پیژندل شوي زیان منونکو (CVE) شتون او یو شمیر انحصارونو چیک کول - د کارونې په کارولو سره ټریوی

وروسته په مقاله کې زه به د دې ګامونو پلي کولو لپاره درې اختیارونه ورکړم:
لومړی د مثال په توګه د GitLab په کارولو سره د CI/CD پایپ لاین تنظیم کول دي (د ازموینې مثال رامینځته کولو پروسې توضیح سره).
دوهم د شیل سکریپټ کارول دي.
دریم د ډاکر عکسونو سکین کولو لپاره د ډاکر عکس رامینځته کول شامل دي.
تاسو کولی شئ هغه انتخاب غوره کړئ چې ستاسو لپاره مناسب وي، خپل زیربنا ته یې انتقال کړئ او ستاسو اړتیاو سره یې تطبیق کړئ.

ټول اړین فایلونه او اضافي لارښوونې هم په ذخیره کې موقعیت لري: https://github.com/Swordfish-Security/docker_cicd

په GitLab CI/CD کې ادغام

په لومړي اختیار کې، موږ به وګورو چې تاسو څنګه د مثال په توګه د GitLab ذخیره کولو سیسټم په کارولو سره امنیتي چکونه پلي کولی شئ. دلته به موږ ګامونو ته ورسیږو او معلومه کړو چې څنګه له سکریچ څخه د GitLab سره د ازموینې چاپیریال نصب کړو ، د سکین کولو پروسه رامینځته کړئ او د ټیسټ ډاکر فایل او تصادفي عکس چیک کولو لپاره اسانتیاوې پیل کړئ - د جوس شاپ غوښتنلیک.

د GitLab نصب کول
1. ډاکر نصب کړئ:

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

2. اوسنی کارن د ډاکر ګروپ ته اضافه کړئ ترڅو تاسو د سوډو کارولو پرته د ډاکر سره کار کولی شئ:

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 په براوزر کې پرانیزئ او یوه پاڼه وګورئ چې تاسو یې د روټ کارونکي لپاره پټنوم بدلولو غوښتنه کوي:
د ډاکر امنیت چک کولو لپاره د اسانتیاوو پلي کولو میتودونه او مثالونه
نوی رمز تنظیم کړئ او GitLab ته لاړ شئ.

6. یوه نوې پروژه جوړه کړئ، د بیلګې په توګه د cicd-test او د پیل فایل سره یې پیل کړئ README.md:
د ډاکر امنیت چک کولو لپاره د اسانتیاوو پلي کولو میتودونه او مثالونه
7. اوس موږ د GitLab Runner نصبولو ته اړتیا لرو: یو اجنټ چې د غوښتنې سره سم به ټول اړین عملیات پرمخ وړي.
وروستی نسخه ډاونلوډ کړئ (په دې حالت کې، د لینکس 64-bit لپاره):

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. د رنر لپاره د 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. اوس موږ رنر راجستر کوو ترڅو دا زموږ د GitLab مثال سره اړیکه ونیسي.
د دې کولو لپاره، د Settings-CI/CD پاڼه پرانیزئ (http://OUR_IP_ADDRESS/root/cicd-test/-/settings/ci_cd) او په رنر ټب کې د URL او راجستریشن نښه ومومئ:
د ډاکر امنیت چک کولو لپاره د اسانتیاوو پلي کولو میتودونه او مثالونه
11. د یو آر ایل او د راجستریشن نښه په ځای کولو سره رنر راجستر کړئ:

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 (دا د ازموینې ډاکر فایل دی چې موږ به یې وګورو) او د GitLab CI/CD پروسې ترتیب کولو فایل .gitlab-cicd.yml، کوم چې د سکینرونو لپاره لارښوونې لیست کوي (د فایل په نوم کې ټکی یاد کړئ).

د YAML ترتیب کولو فایل د دریو اسانتیاوو (هادولینټ، ډاکل، او ټریوی) چلولو لپاره لارښوونې لري چې ټاکل شوي ډاکر فایل او د DOCKERFILE متغیر کې مشخص شوي انځور تحلیل کړي. ټول اړین فایلونه د ذخیره کولو څخه اخیستل کیدی شي: 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 نصب ته اړتیا لري rpm и لاړ شه. که نه نو، دا به غلطۍ رامینځته کړي کله چې د RedHat پر بنسټ عکسونو سکین کول او د زیان مننې ډیټابیس ته تازه معلومات ترلاسه کول.

2. ذخیره کې د فایلونو اضافه کولو وروسته، زموږ د ترتیب کولو فایل کې د لارښوونو سره سم، GitLab به په اوتومات ډول د جوړولو او سکین پروسه پیل کړي. د CI/CD → پایپ لاین ټب کې تاسو کولی شئ د لارښوونو پرمختګ وګورئ.

په پایله کې، موږ څلور دندې لرو. له دوی څخه درې په مستقیم ډول د سکین کولو سره معامله کوي، او وروستی (راپور) د سکینګ پایلو سره د ویشل شوي فایلونو څخه یو ساده راپور راټولوي.
د ډاکر امنیت چک کولو لپاره د اسانتیاوو پلي کولو میتودونه او مثالونه
په ډیفالټ ډول ، ټروی چلول ودروي که چیرې په عکس یا انحصار کې جدي زیانونه وموندل شي. په ورته وخت کې، Hadolint تل د بریالیتوب کوډ بیرته راګرځوي ځکه چې دا تل د تبصرو پایله لري، کوم چې د جوړیدو مخه نیسي.

ستاسو د ځانګړو اړتیاو پورې اړه لري، تاسو کولی شئ د وتلو کوډ تنظیم کړئ نو کله چې دا اسانتیاوې د یو ځانګړي نازکیت ستونزې کشف کړي، دوی د جوړولو پروسه هم ودروي. زموږ په قضیه کې ، جوړونه به یوازې هغه وخت ودریږي کله چې ټروی د انتقاد سره زیان منونکي کشف کړي چې موږ یې د شاسټاپپر متغیر کې مشخص کړی. .gitlab-ci.yml.
د ډاکر امنیت چک کولو لپاره د اسانتیاوو پلي کولو میتودونه او مثالونه

د هرې کارونې پایله د هر سکین کولو دندې په لاګ کې لیدل کیدی شي ، په مستقیم ډول د هنري برخې کې د json فایلونو کې ، یا په ساده HTML راپور کې (لاندې نور په دې اړه):
د ډاکر امنیت چک کولو لپاره د اسانتیاوو پلي کولو میتودونه او مثالونه

3. د یوټیلټي راپورونو وړاندې کولو لپاره یو څه ډیر د انسان لخوا لوستلو وړ شکل کې، یو کوچنی Python سکریپټ کارول کیږي ترڅو درې JSON فایلونه په یو HTML فایل کې د نیمګړتیاوو جدول سره بدل کړي.
دا سکریپټ د جلا راپور دندې لخوا پیل شوی، او د هغې وروستی هنر د راپور سره یو HTML فایل دی. د سکریپټ سرچینه هم په ذخیره کې ده او ستاسو د اړتیاو، رنګونو، او نورو سره سم تطبیق کیدی شي.
د ډاکر امنیت چک کولو لپاره د اسانتیاوو پلي کولو میتودونه او مثالونه

شیل سکریپټ

دوهم اختیار د قضیو لپاره مناسب دی کله چې تاسو اړتیا لرئ د CI / CD سیسټم څخه بهر د ډاکر عکسونه چیک کړئ یا تاسو اړتیا لرئ ټولې لارښوونې په یوه فارم کې ولرئ چې مستقیم په کوربه کې اجرا کیدی شي. دا اختیار د چمتو شوي شیل سکریپټ لخوا پوښل شوی چې په پاک مجازی (یا حتی ریښتیني) ماشین کې پرمخ وړل کیدی شي. سکریپټ ورته لارښوونې اجرا کوي لکه څنګه چې پورته بیان شوي gitlab-runner.

د سکریپټ په بریالیتوب سره د چلولو لپاره، ډاکر باید په سیسټم کې نصب شي او اوسنی کاروونکي باید د ډاکر ګروپ کې وي.

سکریپټ پخپله دلته موندل کیدی شي: docker_sec_check.sh

د فایل په پیل کې، متغیرات مشخص کوي چې کوم عکس سکین کولو ته اړتیا لري او کوم انتقادي نیمګړتیاوې به د ټریوی یوټیلیټ د ټاکل شوي غلطی کوډ سره د وتلو لامل شي.

د سکریپټ اجرا کولو پرمهال، ټولې اسانتیاوې به ډایرکټر ته ډاونلوډ شي 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

د ټولو اسانتیاو سره د ډاکر عکس

د دریم بدیل په توګه ، ما دوه ساده ډاکر فایلونه تالیف کړل ترڅو د امنیت اسانتیاو سره عکس رامینځته کړي. یو Dockerfile به د ذخیره کولو څخه د عکس سکین کولو لپاره د سیټ په جوړولو کې مرسته وکړي، دوهم (Dockerfile_tar) به د عکس سره د ټار فایل سکین کولو لپاره د سیټ په جوړولو کې مرسته وکړي.

1. اړونده ډاکر فایل او سکریپټ له ذخیره څخه واخلئ https://github.com/Swordfish-Security/docker_cicd/tree/master/Dockerfile.
2. موږ یې د مجلس لپاره پیل کوو:

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

3. وروسته له دې چې مجلس بشپړ شي، موږ د عکس څخه یو کانټینر جوړوو. په ورته وخت کې ، موږ د DOCKERIMAGE چاپیریال متغیر د هغه عکس نوم سره تیر کوو چې موږ یې لیوالتیا لرو او د ډاکر فایل نصب کوو چې موږ غواړو زموږ له ماشین څخه فایل ته تحلیل کړو. / ډاکر فایل (په یاد ولرئ چې دې فایل ته مطلق لاره اړینه ده):

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

پایلې

موږ د ډاکر هنري اثارو سکین کولو لپاره د اسانتیاو یوازې یو بنسټیز سیټ ته وکتل ، کوم چې زما په نظر ، په خورا مؤثره توګه د عکس امنیت اړتیاو یوه ښه برخه پوښي. دلته یو لوی شمیر تادیه شوي او وړیا وسیلې هم شتون لري چې کولی شي ورته چکونه ترسره کړي ، ښکلي راپورونه رسم کړي یا په کنسول حالت کې په خالص ډول کار وکړي ، د کانټینر مدیریت سیسټمونو پوښښ او داسې نور. .

پدې مقاله کې د بیان شوي وسیلو سیټ په اړه ښه شی دا دی چې دا ټول خلاصې سرچینې دي او تاسو کولی شئ د دوی او نورو ورته وسیلو سره تجربه وکړئ ترڅو ومومئ چې ستاسو اړتیاو او زیربنا سره سم څه دي. البته، ټول هغه زیانونه چې موندل کیږي باید په ځانګړو شرایطو کې د تطبیق لپاره مطالعه شي، مګر دا د راتلونکي لوی مقالې لپاره موضوع ده.

زه امید لرم چې دا لارښود، سکریپټونه او اسانتیاوې به تاسو سره مرسته وکړي او د کانټینر کولو په ساحه کې د لا خوندي زیربنا جوړولو لپاره د پیل ټکی شي.

سرچینه: www.habr.com

Add a comment