# Trivy IaC

### Overview

Trivy IaC (режим `trivy config`) используется в TRAIO для сканирования IaC-конфигураций на ошибки безопасности и misconfiguration. Обычно Trivy анализирует Terraform, Kubernetes manifests, Helm charts и другие конфигурационные файлы.

### Supported Stack

* Terraform (`*.tf`, `*.tfvars`)
* Kubernetes manifests (`*.yaml`, `*.yml`)
* Helm charts (`Chart.yaml`, `values.yaml`)
* Dockerfile

### Requirements

* В Sequences перед этим инструментом должен быть добавлен job **Code Downloader**.

### How it works

Сканер использует официальный docker-образ Trivy:

* `aquasec/trivy:latest`

Пример команды:

```sh
if [ "$TRIVY_MODE" = "image" ]; then
  trivy image --format json --output "/data/$REPORT_FILE_NAME" "$DOCKER_IMAGE" || true
elif [ "$TRIVY_MODE" = "iac" ]; then
  trivy config --format json --output "/data/$REPORT_FILE_NAME" ./ || true
else
  trivy fs --format json --output "/data/$REPORT_FILE_NAME" ./ || true
fi

echo "Trivy report saved to /data/$REPORT_FILE_NAME"
cat "/data/$REPORT_FILE_NAME"
```

### Variables

| Переменная         | Пример           | Обязательная | Описание                                             |
| ------------------ | ---------------- | ------------ | ---------------------------------------------------- |
| REPORT\_FILE\_NAME | `trivy-iac.json` | Да           | Имя файла отчёта, который TRAIO забирает из `/data`. |
| SCAN\_TYPE         | `Trivy Scan`     | Да           | Тип сканирования для парсинга в TRAIO.               |
| TRIVY\_MODE        | `iac`            | Да           | Режим запуска.                                       |

### **Offline mode:**

**Trivy DB-Included - Need to Choose Mode** — job для запуска Trivy в полностью оффлайн контуре на базе образа `registry.gitlab.com/traio-group/tools/trivy-offline:0.68.2`, где базы (Trivy DB и Java DB) уже предзагружены в образ.&#x20;

В этом job нужно выбрать режим сканирования через TRIVY\_MODE: fs (сканирование файловой системы/репозитория), iac (сканирование IaC через trivy config) или image (сканирование контейнерного образа через trivy image). Если TRIVY\_MODE не задан, стандартно используется режим fs.

### Links

* Trivy (Configuration/IaC scanning): <https://aquasecurity.github.io/trivy/latest/docs/target/config/>
* Trivy docs: <https://aquasecurity.github.io/trivy/>
