แฐแแ แฐแแแ !
แแฆแแแแแแแ แ แแแแแแแจแ, แแแแแแแแ แแแแก แแ แแชแแกแแแจแ แแแแขแแแแแ แแแแชแแแก แ แแแแก แแแแ แแแก แแแแ, แแแแขแแแแแ แแแแแ แแแแแแจแแ แแแฃแแ แกแฎแแแแแกแฎแแ แแขแแแแกแ แแ แกแฃแแแแฅแขแแแแก แฃแกแแคแ แแฎแแแแแก แฃแแ แฃแแแแแงแแคแแก แกแแแแแฎแ แแแแ แแแแแแแ แแ แแแแก. แจแแแแฌแแแแแแแก แฎแแแแ แจแแกแ แฃแแแแ แจแ แแแแขแแแแแ แแแแชแแแแ, แแแแขแแ แแแ แแ แแฅแแแแ แแ แแ แแชแแกแแก แแแขแแแแขแแแแชแแแกแแแ แแแแแแฃแ แกแแฌแงแแกแ แแแแแฏแแแแก แแแแแแแแ.
แแ แกแขแแขแแแจแ แแ แแแแแแแแ แแแ แแแ แกแแ แแแขแแแก Docker แฃแกแแคแ แแฎแแแแแก แ แแแแแแแแ แแ แแแ แแแแก แแแแกแแฎแแ แชแแแแแแแแ แแ แแแกแขแ แฃแฅแชแแแแก, แแฃ แ แแแแ แฃแแแ แแแแงแแแแ แแแขแแ แ แแแแ แกแขแแแแ แแ แแ แแชแแกแแก แจแแกแแแแฌแแแแแแ. แแฅแแแ แจแแแแซแแแแ แแแแแแงแแแแ แแแกแแแแแ แแฅแกแแแ แแแแแขแแแแกแแแแก, แแฃ แ แแแแ แฃแแแ แแแแฌแงแแ Dockerfile แกแฃแ แแแแแแกแ แแ แแแกแขแ แฃแฅแชแแแแแก แฃแกแแคแ แแฎแแแแแก แขแแกแขแแ แแแแก แแ แแชแแกแ. แแแกแแแแแแ, แ แแ แแแแแแแแ แแแแกแ แแ แแแแฎแแ แชแแแแแแแก แแแคแ แแกแขแ แฃแฅแขแฃแ แ แงแแแแแกแแแแก แแแแกแฎแแแแแแฃแแแ, แแแแขแแ แฅแแแแแ แ แแแแแแแแ แจแแกแแซแแ แแแ แแแแขแก แแแแชแแแ.
แฃแกแแคแ แแฎแแแแแก แจแแแแฌแแแแแก แกแแจแฃแแแแแแแ
แแ แกแแแแแก แแแแ แ แแแแแแแแแ แกแฎแแแแแกแฎแแ แแแแฎแแแ แ แแแแแแแชแแแแ แแ แกแแ แแแขแแแ, แ แแแแแแแช แแแแฌแแแแแ Docker แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แกแฎแแแแแกแฎแแ แแกแแแฅแขแก. แแแแแแ แแ แแแแแแแ แฃแแแ แแฆแฌแแ แแแแ แฌแแแ แกแขแแขแแแจแ (
แฐแแแแแแแ
แกแแแแแแ แแแ แขแแแ แแแแกแแแแก แแ แแแ แแแ, แ แแแแแแช แแฎแแแ แแแ, แ แแแแ แช แแแ แแแแ แแแแฎแแแแแแ, แจแแแคแแกแแก Dockerfile แแแกแขแ แฃแฅแชแแแแแก แกแแกแฌแแ แ แแ แฃแกแแคแ แแฎแแแแ (แแแแแแแแแ, แแฎแแแแ แแแขแแ แแแแแฃแแ แแแแแกแแฎแฃแแแแแก แ แแแกแขแ แแก แแแแแงแแแแแแ แแ แกแฃแแแก แแแแแงแแแแแแ).
แแแฅแแ
แแแแกแแแแก แแ แแแ แแแ, แ แแแแแแช แแฃแจแแแแก แกแฃแ แแแแ (แแ แจแแแแฎแฃแ แแแแแกแแฎแฃแแแแแก แขแแ แแแแแ), แ แแแแแแช แแแแฌแแแแก แแแแแ แแขแฃแแ แกแฃแ แแแแก แกแแกแฌแแ แแก แแ แฃแกแแคแ แแฎแแแแแก, แ แแแแ แช แแกแแแ, แแแกแ แคแแแแแแก แแ แแแแคแแแฃแ แแชแแแก แแแแแแแแ - แ แ แแแแฎแแแ แแแแแแ แแ แแแ แจแแฅแแแแแ, แ แ แแแกแขแ แฃแฅแชแแแแ แแแแแแงแแแแแ, แ แ แขแแแ แแ แแก แแแแแแขแแแแแฃแแ. , แชแแ แแแแ แแแ แแแแก แแ แกแแแแแ แแ แ.แจ. แ. แฏแแ แฏแแ แแแแ แจแแแแฌแแแแแแแก แ แแแแแแแแ แแ แช แแฃ แแกแ แแแแแ แแ แแคแฃแซแแแแ แ แแแแแแแแ แฉแแแแก แกแแแฃแแแ แจแแแแฌแแแแแก แแ แ แแแแแแแแแชแแแก
แฌแแ แแแแแแ
แแก แแ แแแ แแแ แแแแแแ แแกแแฎแแแก แแ แ แขแแแแก แแแฃแชแแแแแแแก แแแแแแก - OS-แแก แแแแแแก แแ แแแแแแแแ (Alpine, RedHat (EL), CentOS, Debian GNU, Ubuntu แแ แแก แแฎแแ แแแญแแ แแแ) แแ แแแแแแแแแแฃแแแแแก แแ แแแแแแแแ (Gemfile.lock, Pipfile.lock, composer.lock, แแแแแขแแก แแแแแแแแ). .json , แแแ แแ.แกแแแแขแ, Cargo.lock). Trivy-แก แจแแฃแซแแแ แกแแแแแ แแแ แแแแฎแแแแแก แ แแแแ แช แกแแชแแแจแ, แแกแแแ แแแแแแฃแ แกแฃแ แแแแ, แแกแแแ แกแแแแแ แแแ แแแแแชแแแฃแแ .tar แคแแแแแก แกแแคแฃแซแแแแแ Docker-แแก แแแแแกแแฎแฃแแแแแแ.
Utilities แแแแฎแแ แชแแแแแแแก แแแ แแแแขแ แแแ
แแแแกแแแแแก, แ แแ แกแชแแแแ แแฆแฌแแ แแแ แแแแแแแชแแแแ แแแแแแ แแแฃแ แแแ แแแแจแ, แแ แแแแชแแ แแแกแขแ แฃแฅแชแแแแก แงแแแแ แแแแฃแแแแฃแ แ แแ แแแ แแแแก แแแงแแแแแแก แจแแกแแฎแแ แแแ แแแแฃแแฌแแแแ แแแแแ แขแแแแแฃแ แแ แแชแแกแจแ.
แแแแแแ แ แแแแ แแ แแก แแแแก แแแแแแกแขแ แแ แแแ, แแฃ แ แแแแ แจแแแแซแแแแ แแแแแฎแแ แชแแแแแ Dockerfiles แแ Docker แกแฃแ แแแแแแก แแแขแแแแขแฃแ แ แจแแแแแ แกแแก แแแแแแแฌแแแแ, แ แแแแแแแช แจแแฅแแแแแแ แแแแแแแแ แแแแก แแ แแก.
แแแแแ แจแแแแฌแแแแ แจแแแแแแ แจแแแแแแ แแแแแฏแแแแกแแแ:
- Dockerfile-แแก แแแกแขแ แฃแฅแชแแแแแก แกแแกแฌแแ แแกแ แแ แฃแกแแคแ แแฎแแแแแก แจแแแแฌแแแแ แแแแขแแ แแก แกแแจแฃแแแแแแ แฐแแแแแแแ
- แกแแแแแแ แแ แจแฃแแแแแฃแ แ แกแฃแ แแแแแแก แกแแกแฌแแ แแกแ แแ แฃแกแแคแ แแฎแแแแแก แจแแแแฌแแแแ แฃแขแแแแขแแก แแแแแงแแแแแแ แแแฅแแ
- แกแแแแแแกแ แกแฃแ แแแจแ แกแแฏแแ แแ แชแแแแแแ แแแฃแชแแแแแแแก (CVE) แแ แกแแแแแแก แจแแแแฌแแแแ แแ แ แแแ แแแแแแแแแแฃแแแแแก แแ แกแแแแแ - แฃแขแแแแขแแก แแแแแงแแแแแแ แฌแแ แแแแแแ
แแแแแแแแแแแ แกแขแแขแแแจแ แแ แแแแชแแ แกแแ แแแ แแแแขแก แแ แแแแแฏแแแแก แแแแกแแฎแแ แชแแแแแแแแ:
แแแ แแแแ แแ แแก CI/CD แแแแกแแแแแแก แแแแคแแแฃแ แแชแแ GitLab-แแก แแแแแแแแแก แแแแแงแแแแแแ (แกแแขแแกแขแ แแแกแขแแแชแแแก แแแแฆแแแแแก แแ แแชแแกแแก แแฆแฌแแ แแ).
แแแแ แ แแ แแก shell แกแแ แแแขแแก แแแแแงแแแแแ.
แแแกแแแ แแ แแก Docker แแแแแกแแฎแฃแแแแแก แแแแแ Docker แกแฃแ แแแแแแก แกแแแแแ แแแแกแแแแก.
แแฅแแแ แจแแแแซแแแแ แแแ แฉแแแ แแฅแแแแแแแก แงแแแแแแ แจแแกแแคแแ แแกแ แแแ แแแแขแ, แแแแแแขแแแแ แแแ แแฅแแแแก แแแคแ แแกแขแ แฃแฅแขแฃแ แแจแ แแ แแแแ แแแ แแฅแแแแก แกแแญแแ แแแแแแก.
แงแแแแ แกแแญแแ แ แคแแแแ แแ แแแแแขแแแแแ แแแกแขแ แฃแฅแชแแแแ แแกแแแ แแแแแแแกแแแฃแแแ แกแแชแแแจแ:
แแแขแแแ แแชแแ GitLab CI/CD-แจแ
แแแ แแแ แแแ แแแแขแจแ แฉแแแ แจแแแฎแแแแแ, แแฃ แ แแแแ แจแแแแซแแแแ แแแแแฎแแ แชแแแแแ แฃแกแแคแ แแฎแแแแแก แจแแแแฌแแแแแแ GitLab แกแแชแแแแก แกแแกแขแแแแก, แ แแแแ แช แแแแแแแแแก แแแแแงแแแแแแ. แแฅ แฉแแแ แแแแแแแแ แแแแแฏแแแก แแ แแแแแ แแแแแ, แแฃ แ แแแแ แฃแแแ แแแแแแกแขแแแแ แแ แกแแขแแกแขแ แแแ แแแ GitLab-แแ แแฃแแแแแ, แจแแแฅแแแแ แกแแแแแ แแแแก แแ แแชแแกแ แแ แแแแฃแจแแแ แฃแขแแแแขแแแ แขแแกแขแแก Dockerfile-แแกแ แแ แจแแแแฎแแแแแแ แกแฃแ แแแแก แจแแกแแแแฌแแแแแแ - JuiceShop แแแแแแแชแแ.
GitLab-แแก แแแกแขแแแแชแแ
1. แแแแแแกแขแแแแ แแ Docker:
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-แก แแแแกแ แฃแแแแก แแแกแขแแแแชแแแก แงแแแแ แกแแญแแ แ แแ แแชแแแฃแ แแก (แจแแแแซแแแแ แแแแแ แแแแแแแ แแ แแชแแกแก log แคแแแแแก แแแแแกแแแแแแ: docker logs -f gitlab).
5. แแแฎแกแแแแ แแฅแแแแ แแแแแแแแ แแแ IP แแ แแฃแแแ แจแ แแ แแแฎแแ แแแแ แแ, แ แแแแแแช แแแแแแแแแ แแแ แแแแก แจแแชแแแแก root แแแแฎแแแ แแแแแกแแแแก:
แแแแงแแแแ แแฎแแแ แแแ แแแ แแ แแแแแแแ GitLab-แจแ.
6. แจแแฅแแแแแ แแฎแแแ แแ แแแฅแขแ, แแแแแแแแแ, cicd-test แแ แแแแแแกแขแแแแ แแ แแแกแ แกแแฌแงแแกแ แคแแแแ README.md:
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. แแแแแแขแแ OS แแแแฎแแแ แแแแแ Runner-แแกแแแแก แแ แแแแฌแงแแ แกแแ แแแกแ:
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 แแแแแแแแแแ.
แแแแกแแแแแก แแแฎแกแแแแ Settings-CI/CD แแแแ แแ (http://OUR_ IP_ADDRESS/root/cicd-test/-/settings/ci_cd) แแ Runners แฉแแแแ แแแ แแแแแแ URL แแ แ แแแแกแขแ แแชแแแก แแแจแแแ:
11. แแแแ แแแแกแขแ แแ แแ Runner URL-แแกแ แแ แ แแแแกแขแ แแชแแแก แแแจแแแก แฉแแแแชแแแแแแ:
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-แก, แ แแแแแจแแช แฃแแแ แแแแแแแขแแ แแแกแขแ แฃแฅแชแแแแ แฉแแแแ แฃแขแแแแขแแแแก แแแกแแฌแงแแแแ. แแ แแแแ แแแ แกแแแจแ แฉแแแ แแ แแแแฅแแก แแแแแฏแแแ แแแแแแแชแแแก แจแแกแแฅแแแแแแ แแ แแแแขแแแแแ แแแแชแแแกแแแแก, แแแแ แแ แ แแแแฃแ แแแ แแแแจแ แแก แฌแแ แฃแกแฌแ แแแก แกแแแแแ แแแแก แแแแแฏแแแก แแ แฌแแ แแแฅแแแแก แกแฃแ แแแแแก แแ Dockerfile-แก แแแแแแแแกแแแแก.
แแแแกแแแแแแก แแแแคแแแฃแ แแชแแ
1. แแแแแแขแแ แคแแแแแแ แกแแชแแแจแ mydockerfile.df (แแก แแ แแก แกแแขแแกแขแ Dockerfile, แ แแแแแกแแช แฉแแแ แจแแแแแแฌแแแแ) แแ GitLab CI/CD แแ แแชแแกแแก แแแแคแแแฃแ แแชแแแก แคแแแแ .gitlab-cicd.yml, แ แแแแแจแแช แฉแแแแแแแแแแ แแแกแขแ แฃแฅแชแแแแ แกแแแแแ แแแแกแแแแก (แแฆแแแจแแแ แฌแแ แขแแแ แคแแแแแก แกแแฎแแแจแ).
.yaml แแแแคแแแฃแ แแชแแแก แคแแแแ แจแแแชแแแก แแแกแขแ แฃแฅแชแแแแก แกแแแ แแแแฃแแแแฃแ แ แแ แแแ แแแแก (Hadolint, Dockle แแ Trivy) แแแจแแแแแกแแแแก, แ แแแแแแแช แแแแแแแแแแแ แแ แฉแแฃแ Dockerfile-แก แแ DOCKERFILE แชแแแแแจแ แแแแแแแแฃแ แกแฃแ แแแก. แงแแแแ แกแแญแแ แ แคแแแแแก แแฆแแแ แจแแกแแซแแแแแแแ แกแแชแแแแแแ:
แแแแแแ แแแ 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-แแก แจแแแแแ แกแ
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 โ Pipelines แฉแแแแ แแแ แจแแแแซแแแแ แแฎแแแแ แแแกแขแ แฃแฅแชแแแแแก แแ แแแ แแกแ.
แจแแแแแแ, แฉแแแ แแแแฅแแก แแแฎแ แแแแแแแแ. แกแแแ แแแแแแแ แฃแจแฃแแแแ แแฎแแแ แกแแแแแ แแแแก, แฎแแแ แแแแ (แแแฎแกแแแแแ) แแแ แแแแแก แแแ แขแแ แแแแแ แแจแก แแแคแแแขแฃแแ แคแแแแแแแแแ แกแแแแแ แแแแก แจแแแแแแแแ.
แแแแฃแแแกแฎแแแแแ, Trivy แแฉแแ แแแก แแแก แจแแกแ แฃแแแแแก, แแฃ แแแแแกแแฎแฃแแแแแจแ แแ แแแแแแแแแแฃแแแแแแจแ แแฆแแแฉแแแแแแ แแ แแขแแแฃแแ แแแฃแชแแแแแแ. แแแแแแ แแฃแแแ, Hadolint แงแแแแแแแแก แแแ แฃแแแแก Success-แก แจแแกแ แฃแแแแแก แแแแจแ, แ แแแแแ แแแก แจแแกแ แฃแแแแแก แงแแแแแแแแก แแฅแแก แจแแแแจแแแแแ, แ แแช แแฌแแแแก build-แแก แจแแฉแแ แแแแก.
แแฅแแแแ แกแแแชแแคแแแฃแ แ แแแแฎแแแแแแแแแ แแแแแแแแแแ แ, แจแแแแซแแแแ แแแแแแแคแแแฃแ แแ แแ แแแกแแกแแแแแ แแแแ แแกแ, แ แแ แแ แแแแฃแแแแฃแ แแ แแแแกแแฎแฃแ แแแแแแ แแกแแแ แจแแแฉแแ แแ แแจแแแแแแแแแก แแ แแชแแกแ แแแ แแแแฃแแ แแ แแขแแแฃแแแแแก แแ แแแแแแแแแก แแแแแแแแแแกแแก. แฉแแแแก แจแแแแฎแแแแแจแ, build แจแแฉแแ แแแแ แแฎแแแแ แแ แจแแแแฎแแแแแจแ, แแฃ Trivy แแฆแแแแฉแแแก แแแฃแชแแแแแแแก แแ แกแแแซแแแแ, แ แแแแแแช แแแแแแแแฃแแแ SHOWSTOPPER แชแแแแแจแ. .gitlab-ci.yml.
แแแแแแฃแแ แแ แแแ แแแแก แแฃแจแแแแแก แจแแแแแ แจแแแซแแแแ แแฎแแแแ แแแแแแฃแแ แกแแแแแ แแแแก แแแแชแแแแก แแฃแ แแแแจแ, แฃแจแฃแแแแ json แคแแแแแแจแ แแ แขแแคแแฅแขแแแแก แแแแงแแคแแแแแแจแ, แแ แแแ แขแแ HTML แแแแแ แแจแจแ (แแแฌแแ แแแแแแ แแแแก แจแแกแแฎแแ แฅแแแแแ):
3. แฃแขแแแแขแแก แแแแแ แแจแแแแก แแแแแ แฃแคแ แ แแแแแแแ แฌแแกแแแแแฎแแ แฌแแ แแแแแแแแกแแแแก, แแแขแแ แ Python แกแแ แแแขแ แแแแแแงแแแแแ แกแแแ JSON แคแแแแแก แแแแแกแแงแแแแแ แแ แ HTML แคแแแแแ แแแคแแฅแขแแแแก แชแฎแ แแแแ.
แแก แกแแ แแแขแ แแแจแแแแฃแแแ แชแแแแ แแแแแ แแจแแก แแแแชแแแแแแ แแ แแแกแ แกแแแแแแ แแ แขแแคแแฅแขแ แแ แแก HTML แคแแแแ แแแฎแกแแแแแแ. แกแแ แแแขแแก แฌแงแแ แ แแกแแแ แแ แแก แกแแชแแแจแ แแ แจแแแซแแแแ แแแแ แแแก แแฅแแแแก แกแแญแแ แแแแแแก, แคแแ แแแก แแ แ.แจ.
Shell แกแแ แแแขแ
แแแแ แ แแแ แแแแขแ แจแแกแแคแแ แแกแแ แแ แจแแแแฎแแแแแแแกแแแแก, แ แแแแกแแช แกแแญแแ แแ Docker-แแก แกแฃแ แแแแแแก แจแแแแฌแแแแ CI/CD แกแแกแขแแแแก แแแ แแ, แแ แฃแแแ แแฅแแแแแ แงแแแแ แแแกแขแ แฃแฅแชแแ แแ แคแแ แแแ, แ แแแแแแช แจแแแซแแแแ แจแแกแ แฃแแแแก แแแ แแแแแ แฐแแกแขแแ. แแก แแแ แแแแขแ แแแคแแ แฃแแแ แแแ shell แกแแ แแแขแแ, แ แแแแแแช แจแแแซแแแแ แแแจแแแแฃแแ แแงแแก แกแฃแคแแ แแแ แขแฃแแแฃแ (แแ แแฃแแแแช แ แแแแฃแ ) แแแแฅแแแแแ. แกแแ แแแขแ แแกแ แฃแแแแก แแแแแ แแแกแขแ แฃแฅแชแแแแก, แ แแแแ แช แแแแแ แแฆแฌแแ แแแ gitlab-runner.
แแแแกแแแแแก, แ แแ แกแแ แแแขแแ แฌแแ แแแขแแแแ แแแฃแจแแแก, Docker แฃแแแ แแงแแก แแแแแกแขแแแแ แแแฃแแ แกแแกแขแแแแจแ แแ แแแแแแแแ แ แแแแฎแแแ แแแแแ แฃแแแ แแงแแก แแแแแ แฏแแฃแคแจแ.
แแแแแ แกแแ แแแขแ แจแแแแซแแแแ แแฎแแแแ แแฅ:
แคแแแแแก แแแกแแฌแงแแกแจแ, แชแแแแแแแ แแแแกแแแฆแแ แแแแ, แ แแแแแ แกแฃแ แแแแก แแแกแแแแแ แแแแ แกแแญแแ แ แแ แ แแแแแ แแ แแขแแแฃแแ แแแคแแฅแขแแแ แแแแแแฌแแแแก 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 แคแแแแ แแ แกแแ แแแขแแแ แกแแชแแแแแแ
2. แแแฃแจแแแ แจแแแ แแแแกแแแแก:
docker build -t dscan:image -f docker_security.df .
3. แจแแแ แแแแก แแแกแ แฃแแแแแก แจแแแแแ แฉแแแ แแฅแแแแ แแแแขแแแแแ แก แแแแแกแแฎแฃแแแแแกแแแ. แแแแแแ แแฃแแแ, แฉแแแ แแแแแแชแแแ DOCKERIMAGE แแแ แแแแก แชแแแแแก แแ แกแฃแ แแแแก แกแแฎแแแแแ, แ แแแแแแช แฉแแแ แแแแแแขแแ แแกแแแก แแ แแแแแแขแแแแแ 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 artifact-แแก แกแแแแแ แแแแก แกแแจแฃแแแแแแแแก แแฎแแแแ แแ แแ แซแแ แแแแแ แแแแ แแแ, แ แแแแแแช, แแคแแฅแ แแ, แกแแแแแแ แแคแแฅแขแฃแ แแ แคแแ แแแก แแแแแกแแฎแฃแแแแแก แฃแกแแคแ แแฎแแแแแก แแแแฎแแแแแแแก แแแ แ แแแฌแแแก. แแ แกแแแแแก แแ แแแแแ แกแฎแแ แคแแกแแแแ แแ แฃแคแแกแ แฎแแแกแแฌแงแแแแ, แ แแแแแแกแแช แจแแฃแซแแแแ แจแแแกแ แฃแแแ แแแแแ แจแแแแฌแแแแ, แจแแฅแแแแ แแแแแแ แแแแแ แแจแแแ แแ แแแฃแจแแแ แแฎแแแแ แแแแกแแแแก แ แแแแแจแ, แแแคแแ แแ แแแแขแแแแแ แแก แแแ แแแแก แกแแกแขแแแแแ แแ แ.แจ.
แกแขแแขแแแจแ แแฆแฌแแ แแแ แฎแแแกแแฌแงแแแแแก แแแแ แแแแก แแแแแแแแ แแฎแแ แ แแ แแก แแก, แ แแ แแกแแแ แงแแแแ แแแแแฃแแแ แฆแแ แฌแงแแ แแแ แแ แจแแแแซแแแแ แแฅแกแแแ แแแแแขแ แแแแแแแแ แแแแแแ แแ แกแฎแแ แแกแแแแกแ แแแกแขแ แฃแแแแขแแแแ, แ แแแ แแแแแแ แแฃแกแขแแ แ แ แจแแแกแแแแแแแ แแฅแแแแก แแแแฎแแแแแแก แแ แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแแฎแแกแแแแแแแแแก. แ แ แแฅแแ แฃแแแ, แงแแแแ แแแฃแชแแแแแแ, แ แแแแแแช แแฆแแแฉแแแแแแ, แฃแแแ แแฅแแแก แจแแกแฌแแแแแแ แแแแแ แแขแฃแ แแแ แแแแแจแ แแแแแกแแงแแแแแแแ, แแแแ แแ แแก แแ แแก แแแแแแแแ แแแแ แกแขแแขแแแก แแแแ.
แแแแแ แแแฅแแก, แ แแ แแก แแแกแขแ แฃแฅแชแแแแ, แกแแ แแแขแแแ แแ แฃแขแแแแขแแแ แแแแแฎแแแ แแแแ แแ แแแฎแแแแ แกแแฌแงแแกแ แฌแแ แขแแแ แแแแขแแแแแ แแแแชแแแก แกแคแแ แแจแ แฃแคแ แ แฃแกแแคแ แแฎแ แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แจแแกแแฅแแแแแแ.
แฌแงแแ แ: www.habr.com