Проверяем безопасность Docker-образов с помощью Trivy

В этой статье расскажем об инструменте для проверки безопасности контейнеров Docker Trivy: о его особенностях, установке и использовании.

Что такое Trivy

Один из самых лёгких и многофункциональных сканеров уязвимостей Docker-образов. Он сканирует как образ в репозитории, так и локальный образ. Нацелен на нахождение уязвимостей двух типов:

— Проблемы сборок ОС (Alpine, RedHat (EL), CentOS, Debian GNU, Ubuntu). — Проблемы в зависимостях (Gemfile.lock, Pipfile.lock, composer.lock, package-lock.json, yarn.lock, Cargo.lock).

Trivy работает на разных платформах Linux, включая RHEL, CentOs, Ubuntu, Debian, Arch Linux, MacOS, Nix и других.

Как установить Trivy

Есть разные способы установки Trivy на разные платформы. Вот команды для 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

Как использовать Trivy

Для запуска используем команду:

$ trivy image <образ>

Обнаружение неправильных настроек безопасности

Можно запускать проверку неправильных настроек безопасности как в файловой системе, так и в репозиториях git. Попробуем запустить сканирование файловой системы. Для этого нужно клонировать этот репозиторий.

Репозиторий git содержит файл Dockerfile и файл манифеста deployment.yaml k8s.

Dockerfile выглядит следующим образом:

FROM nginx
USER root

Файл deployment.yaml выглядит следующим образом:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
        securityContext:
          privileged: true

Важно: здесь мы целенаправленно установили для привилегированного атрибута в securityContext значение true. Этого делать нельзя.

Теперь запускаем сканирование: так Trivy сможет найти эту настройку конфигурации:

$ trivy config <директория_конфига>

Last updated