适用于CI容器漏洞扫描神器

Trivy 简介

Trivy 是一个用于容器简单而全面的漏洞扫描程序。软件漏洞是软件或操作系统中存在的故障,缺陷或弱点。 Trivy 检测OS软件包(Alpine,RHEL,CentOS等)的漏洞和应用程序依赖项(捆绑程序,Composer,npm,yarn等)。Trivy易于使用。只需安装二进制文件即可开始扫描。扫描所需要做的就是指定容器 Image 名称。

也可以用于CI,在推送到容器仓库之前,可以轻松扫描本地容器镜像。

Trivy 特性

  • 全面检测漏洞

    • 支持操作系统 (Alpine, Red Hat Universal Base Image, Red Hat Enterprise Linux, CentOS, Oracle Linux, Debian, Ubuntu, Amazon Linux, openSUSE Leap, SUSE Enterprise Linux and Distroless)

    • 应用依赖 (Bundler, Composer, Pipenv, npm, yarn and Cargo)

  • 简单

    • 只要指定 image 名称

    • 详情请看 Quick Start 和 Examples

  • 易于安装

    • apt-get install,yum install,brew install(请参阅安装)

    • 没有依赖包

  • 准确度高

    • 特别是 Alpine Linux 和 RHEL/CentOS

    • 其他操作系统也很高

  • 开发安全

    • 适用于CI,例如 Travis CI,CircleCI,Jenkins等。

    • 请参阅 CI示例

结果输出

安装

  • RHEL/CentOS

    $ sudo vim /etc/yum.repos.d/trivy.repo
    
    
    [trivy]
    name=Trivy repository
    baseurl=https://aquasecurity.github.io/trivy-repo/rpm/releases/$releasever/$basearch/
    gpgcheck=0
    enabled=1
    
    
    $ sudo yum -y update
    $ sudo yum -y install trivy
    

    或者

    $ rpm -ivh https://github.com/aquasecurity/trivy/releases/download/v0.1.6/trivy_0.1.6_Linux-64bit.rpm
    
  • Debian/Ubuntu

    $ sudo apt-get install wget apt-transport-https gnupg lsb-release
    $ wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
    $ echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list
    $ sudo apt-get update
    $ sudo apt-get install trivy
    

    或者

    $ sudo apt-get install rpm
    $ wget https://github.com/aquasecurity/trivy/releases/download/v0.1.6/trivy_0.1.6_Linux-64bit.deb
    $ sudo dpkg -i trivy_0.1.6_Linux-64bit.deb
    
  • macOS

    $ brew install aquasecurity/trivy/trivy
    

例子

  • 扫描镜像

    $ trivy python:3.6.4
    

    结果输出:

  • 扫描镜像文件

    $ docker save ruby:2.3.0-alpine3.9 -o ruby-2.3.0.tar
    $ trivy --input ruby-2.3.0.tar
    
  • 将结果另存为JSON

    $ trivy -f json -o results.json python:3.6.4
    

    结果输出:

  • 按严重程度过滤漏洞

    $ trivy --severity HIGH,CRITICAL ruby:2.3.0
    
  • 按类型过滤漏洞

    $ trivy --vuln-type os ruby:2.3.0
    

持续集成(CI)

  • GitLab CI 例子

    $ cat .gitlab-ci.yml
    
    
    stages:
      - test
    
    
    trivy:
      stage: test
      image: docker:19.03.1
      services:
        - name: docker:dind
          entrypoint: ["env", "-u", "DOCKER_HOST"]
          command: ["dockerd-entrypoint.sh"]
      variables:
        DOCKER_HOST: tcp://docker:2375/
        DOCKER_DRIVER: overlay2
        # See https://github.com/docker-library/docker/pull/166
        DOCKER_TLS_CERTDIR: ""
      before_script:
        - apk add --no-cache curl
        - export VERSION=$(curl --silent "https://api.github.com/repos/aquasecurity/trivy/releases/ latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
        - echo $VERSION
        - wget https://github.com/aquasecurity/trivy/releases/download/v${VERSION}/trivy_${VERSION} _Linux-64bit.tar.gz
        - tar zxvf trivy_${VERSION}_Linux-64bit.tar.gz
      allow_failure: true
      script:
        - docker build -t trivy-ci-test:$CI_COMMIT_SHA .
        - ./trivy --exit-code 0 --cache-dir $CI_PROJECT_DIR/.trivycache/ --no-progress --severity HIGH  trivy-ci-test:$CI_COMMIT_SHA
        - ./trivy --exit-code 1 --severity CRITICAL  --no-progress trivy-ci-test:$CI_COMMIT_SHA
      cache:
        paths:
          - $CI_PROJECT_DIR/.trivycache/
    

总结

Trivy 非常适合用于持续集成,这是把握容器安全第一道关卡。

参考链接

https://github.com/aquasecurity/trivy

往期精彩文章

您的关注是小站的动力

欢迎大家关注交流,定期分享自动化运维、DevOps、Kubernetes、Service Mesh和Cloud Native

扫码『加群』交流技术

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值