Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
trivy-action — Запускает Trivy как действие GitHub для сканирования вашего образа Docker контейнера на уязвимости | Kitploit
Инструменты/GitHubGitHub/aquasecurity/trivy-action
Сканеры уязвимостейБезопасность контейнеровАнализ КодаБезопасность облачных средDevSecOpsОбнаружение СекретовБезопасность Цепочки ПоставокНеправильная Конфигурация
GitHubaquasecurity/trivy-action

trivy-action

Запускает Trivy как действие GitHub для сканирования вашего образа Docker контейнера на уязвимости

Репозиторий
1.4k3576 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Trivy Action

GitHub Action для Trivy

[![GitHub Release][release-img]][release] [![GitHub Marketplace][marketplace-img]][marketplace] [![License][license-img]][license]

Содержание

  • Использование
    • Сканирование конвейера CI
    • Сканирование конвейера CI (с конфигурацией Trivy)
    • Кэш
    • Настройка Trivy
    • Сканирование Tarball
    • Использование Trivy с шаблонами
    • Использование Trivy со сканированием кода GitHub
    • Использование Trivy для сканирования Git-репозитория
    • Использование Trivy для сканирования корневых файловых систем
    • Использование Trivy для сканирования инфраструктуры как кода
    • Использование Trivy для создания SBOM
    • Использование Trivy для сканирования частного реестра
    • Использование Trivy, если сканирование кода не включено
  • Настройка
    • inputs
    • Переменные окружения
    • Файл конфигурации Trivy

Использование

Сканирование конвейера CI```yaml

name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 steps: - name: Checkout code uses: actions/checkout@v4 - name: Build an image from Dockerfile run: docker build -t docker.io/my-organization/my-app:${{ github.sha }} . - name: Run Trivy vulnerability scanner uses: aquasecurity/[email protected] with: image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' format: 'table' exit-code: '1' ignore-unfixed: true vuln-type: 'os,library' severity: 'CRITICAL,HIGH'

root@kitploit:~
### Сканирование CI конвейера (с Trivy Config)```yaml
name: build
on:
  push:
    branches:
    - main
  pull_request:
jobs:
  build:
    name: Build
    runs-on: ubuntu-24.04
    steps:
    - name: Checkout code
      uses: actions/checkout@v4

    - name: Run Trivy vulnerability scanner in fs mode
      uses: aquasecurity/[email protected]
      with:
        scan-type: 'fs'
        scan-ref: '.'
        trivy-config: trivy.yaml

В данном случае trivy.yaml — это YAML-конфигурация, которая включена в состав репозитория. Подробная информация доступна на сайте Trivy, но пример выглядит следующим образом:```yaml format: json exit-code: 1 severity: CRITICAL secret: config: config/trivy/secret.yaml

root@kitploit:~
Все параметры можно определить в файле `trivy.yaml`. Указание отдельных параметров через action оставлено для обратной совместимости. Определение следующих параметров обязательно, так как их нельзя задать через файл конфигурации:
- `scan-ref`: Если используется сканирование `fs, repo`.
- `image-ref`: Если используется сканирование `image`.
- `scan-type`: Для определения типа сканирования, например `image`, `fs`, `repo` и т.д.

#### Порядок приоритета параметров
Trivy использует [Viper](https://github.com/spf13/viper), который имеет определённый порядок приоритета для параметров. Порядок следующий:
- Флаг GitHub Action
- Переменная окружения
- Файл конфигурации
- По умолчанию

### Кеш
Действие имеет встроенную функциональность для кеширования и восстановления [базы данных уязвимостей](https://github.com/aquasecurity/trivy-db), [базы данных Java](https://github.com/aquasecurity/trivy-java-db) и [набора проверок](https://github.com/aquasecurity/trivy-checks), если они загружаются во время сканирования.
Кеш по умолчанию хранится в каталоге `$GITHUB_WORKSPACE/.cache/trivy`.
Кеш восстанавливается перед началом сканирования и сохраняется после его завершения.

Под капотом используется [actions/cache](https://github.com/actions/cache), но требуется меньше настроек конфигурации.
Параметр `cache` является необязательным, и кеширование включено по умолчанию.

#### Отключение кеширования
Если вы хотите отключить кеширование, установите входной параметр `cache` в `false`, но мы рекомендуем оставить его включённым, чтобы избежать проблем с ограничением частоты запросов.```yaml
    - name: Run Trivy scanner without cache
      uses: aquasecurity/[email protected]
      with:
        scan-type: 'fs'
        scan-ref: '.'
        cache: 'false'

Обновление кэшей в ветке по умолчанию

Обратите внимание, что в GitHub Actions существуют ограничения на доступ к кэшу между ветками. По умолчанию рабочий процесс может получить доступ и восстановить кэш, созданный либо в текущей ветке, либо в ветке по умолчанию (обычно main или master). Если вам нужно делиться кэшами между ветками, вам может потребоваться создать кэш в ветке по умолчанию и восстановить его в текущей ветке.

Чтобы оптимизировать рабочий процесс, вы можете настроить задачу cron для регулярного обновления кэша в ветке по умолчанию. Это позволит последующим сканированиям использовать кэшированную базу данных без повторной загрузки.```yaml

Note: This workflow only updates the cache. You should create a separate workflow for your actual Trivy scans.

In your scan workflow, set TRIVY_SKIP_DB_UPDATE=true and TRIVY_SKIP_JAVA_DB_UPDATE=true.

name: Update Trivy Cache

on: schedule: - cron: '0 0 * * *' # Run daily at midnight UTC workflow_dispatch: # Allow manual triggering

jobs: update-trivy-db: runs-on: ubuntu-latest steps: - name: Setup oras uses: oras-project/setup-oras@v1

root@kitploit:~
  - name: Get current date
    id: date
    run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT

  - name: Download and extract the vulnerability DB
    run: |
      mkdir -p $GITHUB_WORKSPACE/.cache/trivy/db
      oras pull ghcr.io/aquasecurity/trivy-db:2
      tar -xzf db.tar.gz -C $GITHUB_WORKSPACE/.cache/trivy/db
      rm db.tar.gz

  - name: Download and extract the Java DB
    run: |
      mkdir -p $GITHUB_WORKSPACE/.cache/trivy/java-db
      oras pull ghcr.io/aquasecurity/trivy-java-db:1
      tar -xzf javadb.tar.gz -C $GITHUB_WORKSPACE/.cache/trivy/java-db
      rm javadb.tar.gz

  - name: Cache DBs
    uses: actions/cache/save@v4
    with:
      path: ${{ github.workspace }}/.cache/trivy
      key: cache-trivy-${{ steps.date.outputs.date }}
root@kitploit:~
При запуске сканирования установите переменные окружения `TRIVY_SKIP_DB_UPDATE` и `TRIVY_SKIP_JAVA_DB_UPDATE`, чтобы пропустить процесс загрузки.```yaml
    - name: Run Trivy scanner without downloading DBs
      uses: aquasecurity/[email protected]
      with:
        scan-type: 'image'
        scan-ref: 'myimage'
      env:
        TRIVY_SKIP_DB_UPDATE: true
        TRIVY_SKIP_JAVA_DB_UPDATE: true

Настройка Trivy

По умолчанию действие вызывает aquasecurity/setup-trivy в качестве первого шага, который устанавливает версию trivy, указанную во входном параметре version. Если вы уже установили trivy другим способом, например, вызвав aquasecurity/setup-trivy напрямую, или запускаете это действие несколько раз, вы можете использовать входной параметр skip-setup-trivy, чтобы отключить этот шаг.

Ручная настройка Trivy```yaml

name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 steps: - name: Checkout code uses: actions/checkout@v4

root@kitploit:~
- name: Manual Trivy Setup
  uses: aquasecurity/[email protected]
  with:
    cache: true
    version: v0.72.0

- name: Run Trivy vulnerability scanner in repo mode
  uses: aquasecurity/[email protected]
  with:
    scan-type: 'fs'
    ignore-unfixed: true
    format: 'sarif'
    output: 'trivy-results.sarif'
    severity: 'CRITICAL'
    skip-setup-trivy: true
root@kitploit:~
#### Пропуск установки при многократном вызове Trivy Action
Другой распространенный случай использования — когда сборка вызывает это действие несколько раз; в этом случае мы можем установить `skip-setup-trivy` в `true` при последующих вызовах, например:```yaml
name: build

on:
  push:
    branches:
      - main
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - name: Check out Git repository
        uses: actions/checkout@v4

      # The first call to the action will invoke setup-trivy and install trivy
      - name: Generate Trivy Vulnerability Report
        uses: aquasecurity/[email protected]
        with:
          scan-type: "fs"
          output: trivy-report.json
          format: json
          scan-ref: .
          exit-code: 0

      - name: Upload Vulnerability Scan Results
        uses: actions/upload-artifact@v4
        with:
          name: trivy-report
          path: trivy-report.json
          retention-days: 30

      - name: Fail build on High/Criticial Vulnerabilities
        uses: aquasecurity/[email protected]
        with:
          scan-type: "fs"
          format: table
          scan-ref: .
          severity: HIGH,CRITICAL
          ignore-unfixed: true
          exit-code: 1
          # On a subsequent call to the action we know trivy is already installed so can skip this
          skip-setup-trivy: true

Использовать нестандартный токен для установки Trivy

GitHub Enterprise Server (GHES) использует недействительный github.token для https://github.com сервера. Поэтому вы не можете установить Trivy с помощью действия setup-trivy.

Чтобы исправить эту проблему, вам необходимо переопределить токен для setup-trivy с помощью входного параметра token-setup-trivy:```yaml - name: Run Trivy scanner without cache uses: aquasecurity/[email protected] with: scan-type: 'fs' scan-ref: '.' token-setup-trivy: ${{ secrets.GITHUB_PAT }}

root@kitploit:~
У GitHub даже есть [create-github-app-token](https://github.com/actions/create-github-app-token) для подобных случаев.

### Сканирование Tarball```yaml
name: build
on:
  push:
    branches:
    - main
  pull_request:
jobs:
  build:
    name: Build
    runs-on: ubuntu-24.04
    steps:
    - name: Checkout code
      uses: actions/checkout@v4

    - name: Generate tarball from image
      run: |
        docker pull <your-docker-image>
        docker save -o vuln-image.tar <your-docker-image>

    - name: Run Trivy vulnerability scanner in tarball mode
      uses: aquasecurity/[email protected]
      with:
        input: /github/workspace/vuln-image.tar
        severity: 'CRITICAL,HIGH'

Использование Trivy с шаблонами

Действие поддерживает [Trivy templates][trivy-templates].

Используйте входной параметр template, чтобы указать путь (не забудьте добавить префикс @ к пути) к файлу шаблона.```yaml name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 steps: - name: Checkout code uses: actions/checkout@v4

root@kitploit:~
  - name: Run Trivy vulnerability scanner
    uses: aquasecurity/[email protected]
    with:
      scan-type: "fs"
      scan-ref: .
      format: 'template'
      template: "@path/to/my_template.tpl"
root@kitploit:~
#### Шаблоны по умолчанию
Trivy имеет [шаблоны по умолчанию][trivy-default-templates].

По умолчанию `setup-trivy` устанавливает их в каталог `$HOME/.local/bin/trivy-bin/contrib`.```yaml
name: build
on:
  push:
    branches:
      - main
  pull_request:
jobs:
  build:
    name: Build
    runs-on: ubuntu-24.04
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/[email protected]
        with:
          scan-type: "fs"
          scan-ref: .
          format: 'template'
          template: "@$HOME/.local/bin/trivy-bin/contrib/html.tpl"

Использование Trivy с GitHub Code Scanning

Если у вас доступно сканирование кода GitHub, вы можете использовать Trivy в качестве инструмента сканирования следующим образом:```yaml name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 permissions: contents: read # Required to checkout and read repo files security-events: write # Required to upload SARIF files to Security tab steps: - name: Checkout code uses: actions/checkout@v4

root@kitploit:~
  - name: Build an image from Dockerfile
    run: |
      docker build -t docker.io/my-organization/my-app:${{ github.sha }} .

  - name: Run Trivy vulnerability scanner
    uses: aquasecurity/[email protected]
    with:
      image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}'
      format: 'sarif'
      output: 'trivy-results.sarif'

  - name: Upload Trivy scan results to GitHub Security tab
    uses: github/codeql-action/upload-sarif@v4
    with:
      sarif_file: 'trivy-results.sarif'
root@kitploit:~
Вы можете найти более подробный пример здесь: https://github.com/aquasecurity/trivy-sarif-demo/blob/master/.github/workflows/scan.yml

Если вы хотите загрузить результаты SARIF в GitHub Code scanning даже при ненулевом коде выхода из Trivy Scan, вы можете добавить следующее в ваш шаг загрузки:```yaml
name: build
on:
  push:
    branches:
      - main
  pull_request:
jobs:
  build:
    name: Build
    runs-on: ubuntu-24.04
    permissions:
      contents: read          # Required to checkout and read repo files
      security-events: write  # Required to upload SARIF files to Security tab
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Build an image from Dockerfile
        run: |
          docker build -t docker.io/my-organization/my-app:${{ github.sha }} .

      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/[email protected]
        with:
          image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}'
          format: 'sarif'
          output: 'trivy-results.sarif'

      - name: Upload Trivy scan results to GitHub Security tab
        uses: github/codeql-action/upload-sarif@v4
        if: always()
        with:
          sarif_file: 'trivy-results.sarif'

Подробнее см. здесь: https://docs.github.com/en/actions/learn-github-actions/expressions#always

Использование Trivy для сканирования вашего Git-репозитория

Также можно сканировать ваши git-репозитории с помощью встроенного сканирования репозиториев Trivy. Это может быть полезно, если вы хотите запускать Trivy в качестве проверки во время сборки для каждого PR, открываемого в вашем репозитории. Это помогает выявить потенциальные уязвимости, которые могут быть внесены с каждым PR.

Если у вас доступно сканирование кода GitHub, вы можете использовать Trivy как инструмент сканирования следующим образом:```yaml name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 permissions: contents: read # Required to checkout and read repo files security-events: write # Required to upload SARIF files to Security tab steps: - name: Checkout code uses: actions/checkout@v4

root@kitploit:~
  - name: Run Trivy vulnerability scanner in repo mode
    uses: aquasecurity/[email protected]
    with:
      scan-type: 'fs'
      ignore-unfixed: true
      format: 'sarif'
      output: 'trivy-results.sarif'
      severity: 'CRITICAL'

  - name: Upload Trivy scan results to GitHub Security tab
    uses: github/codeql-action/upload-sarif@v4
    with:
      sarif_file: 'trivy-results.sarif'
root@kitploit:~
### Использование Trivy для сканирования каталогов rootfs
Также можно сканировать каталоги rootfs с помощью встроенного в Trivy сканера rootfs. Это может быть удобно, если вы хотите запускать Trivy как проверку во время сборки для каждого PR, открываемого в вашем репозитории. Это помогает выявить потенциальные уязвимости, которые могут быть внесены с каждым PR.

Если у вас есть [сканирование кода GitHub](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning), вы можете использовать Trivy как инструмент сканирования следующим образом:```yaml
name: build
on:
  push:
    branches:
      - main
  pull_request:
jobs:
  build:
    name: Build
    runs-on: ubuntu-24.04
    permissions:
      contents: read          # Required to checkout and read repo files
      security-events: write  # Required to upload SARIF files to Security tab
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Run Trivy vulnerability scanner with rootfs command
        uses: aquasecurity/[email protected]
        with:
          scan-type: 'rootfs'
          scan-ref: 'rootfs-example-binary'
          ignore-unfixed: true
          format: 'sarif'
          output: 'trivy-results.sarif'
          severity: 'CRITICAL'

      - name: Upload Trivy scan results to GitHub Security tab
        uses: github/codeql-action/upload-sarif@v4
        with:
          sarif_file: 'trivy-results.sarif'

Использование Trivy для сканирования Infrastructure as Code

Также вы можете сканировать свои IaC-репозитории с помощью встроенного сканирования репозиториев Trivy. Это может быть полезно, если вы хотите запускать Trivy в качестве проверки времени сборки для каждого PR, открываемого в вашем репозитории. Это помогает выявлять потенциальные уязвимости, которые могут быть внесены с каждым PR.

Если у вас доступно GitHub code scanning, вы можете использовать Trivy в качестве инструмента сканирования следующим образом:```yaml name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 permissions: contents: read # Required to checkout and read repo files security-events: write # Required to upload SARIF files to Security tab steps: - name: Checkout code uses: actions/checkout@v4

root@kitploit:~
  - name: Run Trivy vulnerability scanner in IaC mode
    uses: aquasecurity/[email protected]
    with:
      scan-type: 'config'
      hide-progress: true
      format: 'sarif'
      output: 'trivy-results.sarif'
      exit-code: '1'
      severity: 'CRITICAL,HIGH'

  - name: Upload Trivy scan results to GitHub Security tab
    if: always()
    uses: github/codeql-action/upload-sarif@v4
    with:
      sarif_file: 'trivy-results.sarif'
root@kitploit:~
**Примечание**: Если ваша конфигурация Terraform содержит частные модули, настройте Git для аутентификации с репозиторием, в котором они размещены. 
Это можно сделать, добавив шаг в ваш CI-процесс, который настраивает доступ, например, используя Personal Access Token (PAT) или SSH-ключи:```yaml
- name: Configure Git for private modules
  run: |
    git config --global url."https://$GITHUB_USER:[email protected]/".insteadOf "https://github.com/"
  env:
    GITHUB_USER: ${{ github.actor }}
    PRIVATE_REPO_TOKEN: ${{ secrets.PRIVATE_REPO_TOKEN }}

Это гарантирует, что Trivy может загружать закрытые модули.

Использование Trivy для генерации SBOM

Trivy может создать SBOM ваших зависимостей и отправить их потребителю, такому как GitHub Dependency Graph.

Функция отправки SBOM в GitHub доступна только в том случае, если у вас в репозитории включён GitHub Dependency Graph.

Чтобы отправить результаты в GitHub Dependency Graph, вам потребуется создать GitHub PAT или использовать токен установки GitHub (также известный как GITHUB_TOKEN):```yaml

name: Generate SBOM on: push: branches: - main

GITHUB_TOKEN authentication, add only if you're not going to use a PAT

permissions: contents: write

jobs: generate-sbom: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4

root@kitploit:~
  - name: Run Trivy in GitHub SBOM mode and submit results to Dependency Graph
    uses: aquasecurity/[email protected]
    with:
      scan-type: 'fs'
      format: 'github'
      output: 'dependency-results.sbom.json'
      scan-ref: '.'
      github-pat: ${{ secrets.GITHUB_TOKEN }} # or ${{ secrets.github_pat_name }} if you're using a PAT
root@kitploit:~
При сканировании образов вам может понадобиться разобрать фактический выходной JSON, так как Github Dependency не показывает все детали, например, путь к файлу каждой зависимости.

Вы можете загрузить отчёт как артефакт и скачать его, например, с помощью [действия upload-artifact](https://github.com/actions/upload-artifact):```yaml
---
name: Generate SBOM
on:
  push:
    branches:
    - main

## GITHUB_TOKEN authentication, add only if you're not going to use a PAT
permissions:
  contents: write

jobs:
  generate-sbom:
    runs-on: ubuntu-latest
    steps:
      - name: Scan image in a private registry
        uses: aquasecurity/[email protected]
        with:
          image-ref: "private_image_registry/image_name:image_tag"
          scan-type: image
          format: 'github'
          output: 'dependency-results.sbom.json'
          github-pat: ${{ secrets.GITHUB_TOKEN }} # or ${{ secrets.github_pat_name }} if you're using a PAT
          severity: "MEDIUM,HIGH,CRITICAL"
          scanners: "vuln"
        env:
          TRIVY_USERNAME: "image_registry_admin_username"
          TRIVY_PASSWORD: "image_registry_admin_password"

      - name: Upload trivy report as a Github artifact
        uses: actions/upload-artifact@v4
        with:
          name: trivy-sbom-report
          path: '${{ github.workspace }}/dependency-results.sbom.json'
          retention-days: 20 # 90 is the default

Использование Trivy для сканирования вашего приватного реестра

Также можно сканировать ваш приватный реестр с помощью встроенного сканирования образов Trivy. Всё, что нужно сделать, — установить переменные окружения.

Реестр Docker Hub

Для Docker Hub требуются TRIVY_USERNAME и TRIVY_PASSWORD. При загрузке из публичного репозитория устанавливать переменные окружения не нужно.```yaml name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 permissions: contents: read # Required to checkout and read repo files security-events: write # Required to upload SARIF results to the GitHub Security tab steps: - name: Checkout code uses: actions/checkout@v4

root@kitploit:~
  - name: Run Trivy vulnerability scanner
    uses: aquasecurity/[email protected]
    with:
      image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}'
      format: 'sarif'
      output: 'trivy-results.sarif'
    env:
      TRIVY_USERNAME: Username
      TRIVY_PASSWORD: Password

  - name: Upload Trivy scan results to GitHub Security tab
    uses: github/codeql-action/upload-sarif@v4
    with:
      sarif_file: 'trivy-results.sarif'
root@kitploit:~
#### AWS ECR (Elastic Container Registry)
Trivy использует AWS SDK. Вам не нужно устанавливать `aws` CLI.
Вы можете использовать [переменные окружения AWS CLI][env-var].

[env-var]: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html%60%60%60yaml
name: build
on:
  push:
    branches:
      - main
  pull_request:
jobs:
  build:
    name: Build
    runs-on: ubuntu-24.04
    permissions:
      contents: read          # Required to checkout and read repo files
      security-events: write  # Required to upload SARIF files to Security tab
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/[email protected]
        with:
          image-ref: 'aws_account_id.dkr.ecr.region.amazonaws.com/imageName:${{ github.sha }}'
          format: 'sarif'
          output: 'trivy-results.sarif'
        env:
          AWS_ACCESS_KEY_ID: key_id
          AWS_SECRET_ACCESS_KEY: access_key
          AWS_DEFAULT_REGION: us-west-2

      - name: Upload Trivy scan results to GitHub Security tab
        uses: github/codeql-action/upload-sarif@v4
        with:
          sarif_file: 'trivy-results.sarif'

GCR (Google Container Registry)

Trivy использует Google Cloud SDK. Вам не нужно устанавливать команду gcloud.

Если вы хотите использовать репозиторий целевого проекта, вы можете настроить его через GOOGLE_APPLICATION_CREDENTIALS.```yaml name: build on: push: branches: - main pull_request: jobs: build: name: Build runs-on: ubuntu-24.04 permissions: contents: read # Required to checkout and read repo files security-events: write # Required to upload SARIF files to Security tab steps: - name: Checkout code uses: actions/checkout@v4

root@kitploit:~
  - name: Run Trivy vulnerability scanner
    uses: aquasecurity/[email protected]
    with:
      image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}'
      format: 'sarif'
      output: 'trivy-results.sarif'
    env:
      GOOGLE_APPLICATION_CREDENTIALS: /path/to/credential.json

  - name: Upload Trivy scan results to GitHub Security tab
    uses: github/codeql-action/upload-sarif@v4
    with:
      sarif_file: 'trivy-results.sarif'
root@kitploit:~
#### Самостоятельный хостинг
Серверу BasicAuth требуются `TRIVY_USERNAME` и `TRIVY_PASSWORD`.
если вы хотите использовать порт 80, используйте NonSSL `TRIVY_NON_SSL=true````yaml
name: build
on:
  push:
    branches:
      - main
  pull_request:
jobs:
  build:
    name: Build
    runs-on: ubuntu-24.04
    permissions:
      contents: read          # Required to checkout and read repo files
      security-events: write  # Required to upload SARIF files to Security tab
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/[email protected]
        with:
          image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}'
          format: 'sarif'
          output: 'trivy-results.sarif'
        env:
          TRIVY_USERNAME: Username
          TRIVY_PASSWORD: Password

      - name: Upload Trivy scan results to GitHub Security tab
        uses: github/codeql-action/upload-sarif@v4
        with:
          sarif_file: 'trivy-results.sarif'

Использование Trivy, если у вас не включено сканирование кода

Также можно просмотреть результат сканирования в сводке рабочего процесса.

Этот шаг особенно полезен для частных репозиториев без лицензии GitHub Advanced Security.```yaml

  • name: Run Trivy scanner uses: aquasecurity/[email protected] with: scan-type: config hide-progress: true output: trivy.txt

  • name: Publish Trivy Output to Summary run: | if [[ -s trivy.txt ]]; then { echo "### Security Output" echo "

    Click to expand" echo "" echo 'terraform' cat trivy.txt echo '' echo "
    " } >> $GITHUB_STEP_SUMMARY fi

root@kitploit:~
## Настройка

Приоритет конфигурации:
- [Входные параметры](#inputs)
- [Переменные окружения](#environment-variables)
- [Файл конфигурации Trivy](#trivy-config-file)
- Значения по умолчанию


### Входные параметры

Следующие входные параметры могут использоваться как ключи `step.with`:

| Имя                          | Тип     | По умолчанию                       | Описание                                                                                                                                                         |
|------------------------------|---------|------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `scan-type`                  | String  | `image`                            | Тип сканирования, например `image` или `fs`                                                                                                                      |
| `input`                      | String  |                                    | Ссылка на tar-архив, например `alpine-latest.tar`                                                                                                                |
| `image-ref`                  | String  |                                    | Ссылка на образ, например `alpine:3.10.2`                                                                                                                        |
| `scan-ref`                   | String  | `/github/workspace/`               | Ссылка для сканирования, например `/github/workspace/` или `.`                                                                                                   |
| `format`                     | String  | `table`                            | Формат вывода (`table`, `json`, `template`, `sarif`, `cyclonedx`, `spdx`, `spdx-json`, `github`, `cosign-vuln`)                                                  |
| `template`                   | String  |                                    | Шаблон вывода (`@$HOME/.local/bin/trivy-bin/contrib/gitlab.tpl`, `@$HOME/.local/bin/trivy-bin/contrib/junit.tpl`)                                                |
| `tf-vars`                    | String  |                                    | Путь к файлу переменных Terraform                                                                                                                                |
| `output`                     | String  |                                    | Сохранить результаты в файл                                                                                                                                      |
| `exit-code`                  | String  | `0`                                | Код возврата при обнаружении указанных уязвимостей                                                                                                               |
| `ignore-unfixed`             | Boolean | false                              | Игнорировать незакрытые/неисправленные уязвимости                                                                                                                |
| `vuln-type`                  | String  | `os,library`                       | Типы уязвимостей (os,library)                                                                                                                                    |
| `severity`                   | String  | `UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL` | Уровни серьезности уязвимостей для поиска и отображения                                                                                                          |
| `skip-dirs`                  | String  |                                    | Список каталогов, в которых пропускается обход, разделенный запятыми                                                                                             |
| `skip-files`                 | String  |                                    | Список файлов, в которых пропускается обход, разделенный запятыми                                                                                                |
| `cache-dir`                  | String  | `$GITHUB_WORKSPACE/.cache/trivy`   | Каталог кэша. ПРИМЕЧАНИЕ: это значение нельзя настроить через `trivy.yaml`.                                                                                      |
| `timeout`                    | String  | `5m0s`                             | Тайм-аут сканирования                                                                                                                                            |
| `ignore-policy`              | String  |                                    | Фильтрация уязвимостей с помощью языка OPA Rego                                                                                                                  |
| `hide-progress`              | String  | `false`                            | Отключить индикатор выполнения и вывод журнала                                                                                                                   |
| `list-all-pkgs`              | String  |                                    | Вывести все пакеты независимо от уязвимости                                                                                                                      |
| `scanners`                   | String  | `vuln,secret`                      | Список типов проверок безопасности через запятую (`vuln`,`secret`,`misconfig`,`license`)                                                                        |
| `trivyignores`               | String  |                                    | Список относительных путей внутри репозитория к одному или нескольким файлам `.trivyignore`, разделенных запятыми, или один файл `.trivyignore.yaml`.            |
| `trivy-config`               | String  |                                    | Путь к конфигурационному файлу trivy.yaml                                                                                                                        |
| `github-pat`                 | String  |                                    | Токен аутентификации для отправки результатов сканирования SBOM в граф зависимостей GitHub. Может быть либо личным токеном доступа GitHub (PAT), либо GITHUB_TOKEN |
| `limit-severities-for-sarif` | Boolean | false                              | По умолчанию формат *SARIF* выводит все уязвимости независимо от настроенных уровней серьезности. Чтобы переопределить это поведение, установите параметр **true** |
| `docker-host`                | String  |                                    | По умолчанию установлено `unix://var/run/docker.sock`, но может быть изменено для помощи с контейнеризированной инфраструктурой (требуется `unix:/` или другой префикс) |
| `version`                    | String  | `v0.72.0`                          | Версия Trivy для использования, например `latest` или `v0.72.0`                                                                                                  |
| `skip-setup-trivy`           | Boolean | false                              | Пропустить вызов действия `setup-trivy` для установки `trivy`                                                                                                    |
| `token-setup-trivy`          | Boolean |                                    | Переопределить `github.token`, используемый `setup-trivy` для клонирования репозитория `trivy`                                                                   |

### Переменные окружения
Вы можете использовать [переменные окружения Trivy][trivy-env] для установки необходимых параметров (включая флаги, которые не поддерживаются [Входными параметрами](#inputs), такие как `--secret-config`).

**Примечание:** В некоторых старых версиях Action была ошибка, из-за которой входные параметры из одного вызова Action просачивались 
в последующие вызовы Action. Это могло приводить к тому, что рабочие процессы, вызывающие Action несколько раз, например для 
выполнения нескольких сканирований или для тех же сканирований с разными форматами вывода, не давали желаемого результата. Вы можете проверить,
является ли это вашим случаем, посмотрев информацию о шаге GitHub Actions: если в разделе `env`, показанном в выводе вашего Actions,
содержатся переменные окружения `TRIVY_*`, которые вы явно не задавали, возможно, вы подвержены этой ошибке и должны 
обновиться до последней версии Action.

### Файл конфигурации Trivy
При использовании `trivy-config` [Входного параметра](#inputs) вы можете задавать параметры через [файл конфигурации Trivy][trivy-config] (включая флаги, которые не поддерживаются [Входными параметрами](#inputs), такие как `--secret-config`).

[release]: https://github.com/aquasecurity/trivy-action/releases/latest
[release-img]: https://img.shields.io/github/release/aquasecurity/trivy-action.svg?logo=github
[marketplace]: https://github.com/marketplace/actions/aqua-security-trivy
[marketplace-img]: https://img.shields.io/badge/marketplace-trivy--action-blue?logo=github
[license]: https://raw.githubusercontent.com/aquasecurity/trivy-action/master/LICENSE
[license-img]: https://img.shields.io/github/license/aquasecurity/trivy-action
[trivy-env]: https://aquasecurity.github.io/trivy/latest/docs/configuration/#environment-variables
[trivy-config]: https://aquasecurity.github.io/trivy/latest/docs/references/configuration/config-file/
[trivy-templates]: https://aquasecurity.github.io/trivy/latest/docs/configuration/reporting/#template
[trivy-default-templates]: https://aquasecurity.github.io/trivy/latest/docs/configuration/reporting/#template
Скачать инструмент