[Day 29] Trivy - 介绍、操作与导入CI/CD

Aqua Trivy

Vulnerability and Misconfiguration Scanning

Trivy 可以扫描漏洞与有问题的设定档

在这个容器的时代,如何让你的Image保持一定的安全性?最好尽量挑选官方原厂出来且经过认证的Image,另外加上使用Image Scanner会越来越显的重要。

官方github : https://github.com/aquasecurity/trivy

选择Trivy的原因:

  • golang 专案 (自己的偏好XD)
  • github 星星数够多
  • 方便容器化操作使用
Github Repo Star Language
Trivy 8.7k golang
Clair 8.2k golang
Anchore 1.3k python

以上数据统计到 台湾时间 2021-10-07

操作快速导览

image 漏洞扫描

trivy image ${YOUR_IMAGE}

ex: 用alpine image测试扫描功能

trivy image alpine:3.14.2

以下为扫描结果

https://ithelp.ithome.com.tw/upload/images/20211006/2011528913LTQ51zVF.png

输出 json

trivy image ${YOUR_IMAGE} -f json

跳过更新

因为trivy会限制你的每天更新次数,所以需要更新时再下指令更新到本机

trivy image --skip-update ${YOUR_IMAGE}

将trivy 导入CI/CD

首先有个基本的image - trivy-build.dockerfile

选定一个trivy版本,要RUN --download-db-only 是因为之後就不用每次使用此image都要更新漏洞资料库罗,若要更新再重新build一个image即可。

FROM aquasec/trivy:0.19.2

RUN trivy image --download-db-only 

with CI/CD (以Drone为例)

以下提供我的Drone Pipeline设定档案给各位参考

Drone - image scan

使用 --skip-update 避免被锁住更新,因为trivy官方有限制每天更新次数。

kind: pipeline
type: docker
name: image-scan

steps:
- name: scan-using-images
  image: rain123473/trivy:latest
  commands:
    - trivy image --skip-update

Drone - trivy database update by tag event

我这里是设计在你的git repo内build个tag就可以触发更新trivy的漏洞资料库了,至於更新的频率可以自行调整,我的话是每天更新一次就好罗。

kind: pipeline
type: docker
name: image-scan

steps:
- name: update-trivy-database
  when:
    ref: refs/tags/*
  image: alpine:3.14.2
  commands:
    - docker build --no-cache --pull --force-rm -t "rain123473/trivy:${DRONE_TAG}" -f trivy-build.dockerfile .
    - docker push "rain123473/trivy:${DRONE_TAG}"
    - docker tag "rain123473/trivy:${DRONE_TAG}" "rain123473/trivy:latest"
    - docker push "rain123473/trivy:latest"
    - docker rmi "rain123473/trivy:${DRONE_TAG}"
  privileged: true
  volumes:
  - name: docker
    path: /var/run/docker.sock

volumes:
- name: docker
  host:
    path: /var/run/docker.sock

以上这样子就将trivy导入CI/CD流程内罗,各位在玩玩看吧~/images/emoticon/emoticon07.gif


<<:  Whistle proxy

>>:  Day.29 其他树的介绍

[Day22] 第二十二章 - 使用token验证使用者并且透过ajax来建立技能

前言 昨天我们完成了登入 今天我们一样登入roni来建立roni的技能吧!! 目标 ajax应用 验...

[Day 36] 自我介绍後台及前台(五) - 前台的自我介绍页

接下来要写自我介绍页, 自我介绍页使用 routes/web.php 里面的 Route::grou...

CMoney软件工程师战斗营_jQuery_Week 14

分领域後 除了每周二的课程 每周四也会有老师指定的演示 本周我是负责jQuery 以下是我的不专业整...

React和DOM的那些事-节点删除算法

点击进入React源码调试仓库。 本篇是详细解读React DOM操作的第壹篇文章,文章所讲的内容发...

Day30 用python写UI-Canvas(二)

最後一天~~~ 压轴当然是要最好玩的东西啦,讲完今天的内容,大家就可以在介面上自由的创作了! ♠♣今...