Trivy를 사용하여 Docker 이미지 스캔
12991 단어 devopsactionshackathon21githubdocker
내 워크플로우
Docker는 현재 DevOps 도메인의 주요 도구 중 하나입니다. 매일 여러 개의 Docker 이미지를 처리해야 할 수도 있습니다. 틀림없이.
과거에는 Docker 이미지를 내 PC에서 수동으로 생성하고 게시했지만 이제 Github Actions를 사용하면 내 업무가 매우 빠르고 쉽게 모든 것을 Github에 맡깁니다.
예를 들어 my repository (Memcached-Admin)을 보십시오. Memcached 서버를 관리하기 위한 Dockerized PHP 웹 애플리케이션입니다. 이 프로젝트를 사용하려면 다음 단계를 통과해야 합니다.
이러한 작업을 일반적으로 수행하면 시간이 낭비되며 이미지를 구축하는 데 필요한 사항을 계획한 후에도 보안 및 보안 버그가 없는지 확인해야 합니다. 여기에 최고의 도구 중 하나가 있습니다 ... Trivy 💪. CI에 적합한 컨테이너 및 기타 아티팩트를 위한 간단하고 포괄적인 취약성 스캐너입니다.
Github Action 덕분에 이제 모든 것을 하나로 모을 수 있습니다.
전체 프로세스를 처리하기 위해 간단한 워크플로우를 작성했습니다.
하타미아라쉬7 / Memcached-관리자
도커용 Memcached 관리자
Memcached 관리자
이 프로그램을 사용하면 서버 시작부터 실시간(top-like)으로 get, set, delete, increment, decrement, evictions, reclaimed, cas 명령에 대한 통계와 서버 통계(네트워크, 항목 , 서버 버전) googlecharts 및 서버 내부 구성 포함
더 나아가 각 서버 슬래브, 점유, 낭비된 메모리 및 항목(키 및 값)을 볼 수 있습니다.
다른 부분은 모든 memcached 서버에 대한 명령을 실행할 수 있습니다: get, set, delete, flush_all 뿐만 아니라 telnet으로 모든 명령(통계와 같은)을 실행할 수 있습니다.
통계
명령
View on GitHub
제출 카테고리:
메인테이너 머스트해브
Yaml 파일 또는 코드 링크
name: Docker Image CI
on:
push:
branches: [master]
pull_request:
branches: [master]
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Build the Docker image
run: docker build -t memcached-admin:${{ github.sha }} .
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
with:
image-ref: "memcached-admin:${{ github.sha }}"
exit-code: "1"
ignore-unfixed: true
vuln-type: "os,library"
severity: "CRITICAL,HIGH"
format: "template"
template: "@/contrib/sarif.tpl"
output: "trivy-results.sarif"
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: "trivy-results.sarif"
이 워크플로우에는 4개의 간단한 단계가 있습니다.
내 프로젝트의 Security tab에서 결과를 볼 수 있습니다.
이제 다른 워크플로를 사용하여 내 이미지를 Dockerhub에 푸시할 수 있습니다.
name: Publish Dockerhub
on:
schedule:
- cron: "0 2 * * *"
push:
branches: [master]
pull_request:
branches: [master]
env:
REGISTRY: docker.io
IMAGE_NAME: hatamiarash7/memcached-admin
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
Github Action의 또 다른 놀라운 기능은 작업 흐름을 실행하도록 예약할 수 있다는 것입니다. 예를 들어 매일 02:00에 이미지를 푸시합니다.
...
on:
schedule:
- cron: "0 2 * * *"
...
이제 모든 것이 자동으로 완료되며 변경 사항을 저장소에 푸시하기만 하면 됩니다 😍
추가 리소스/정보
이 작업을 사용했습니다. aquasecurity/trivy-action
Reference
이 문제에 관하여(Trivy를 사용하여 Docker 이미지 스캔), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hatamiarash7/scan-docker-images-using-trivy-2b2i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)