Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
trivy-action — Ejecuta Trivy como acción de GitHub para escanear tu imagen de contenedor Docker en busca de vulnerabilidades | Kitploit
Herramientas/GitHubGitHub/aquasecurity/trivy-action
Escáneres de VulnerabilidadesSeguridad de ContenedoresAnálisis de CódigoSeguridad en la NubeDevSecOpsDetección de SecretosSeguridad de Cadena de SuministroMala Configuración
GitHubaquasecurity/trivy-action

trivy-action

Ejecuta Trivy como acción de GitHub para escanear tu imagen de contenedor Docker en busca de vulnerabilidades

Ver Repositorio
1.4k35711hace 26 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Trivy Action

GitHub Action para Trivy

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

Tabla de contenido

  • Uso
    • Escanear Pipeline de CI
    • Escanear Pipeline de CI (con Configuración de Trivy)
    • Caché
    • Configuración de Trivy
    • Escanear un Tarball
    • Usar Trivy con plantillas
    • Usar Trivy con GitHub Code Scanning
    • Usar Trivy para escanear tu repositorio Git
    • Usar Trivy para escanear tus directorios rootfs
    • Usar Trivy para escanear Infrastructure as Code
    • Usar Trivy para generar SBOM
    • Usar Trivy para escanear tu registro privado
    • Usar Trivy si no tienes code scanning habilitado
  • Personalización
    • inputs
  • Variables de entorno
  • Archivo de configuración de Trivy
  • Uso

    Escanear Pipeline de 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:~
    ### Pipeline de CI de Escaneo (con Configuración de 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
    
        - name: Run Trivy vulnerability scanner in fs mode
          uses: aquasecurity/[email protected]
          with:
            scan-type: 'fs'
            scan-ref: '.'
            trivy-config: trivy.yaml
    

    En este caso, trivy.yaml es una configuración YAML que se incluye como parte del repositorio. Hay información detallada disponible en el sitio web de Trivy, pero un ejemplo es el siguiente:```yaml format: json exit-code: 1 severity: CRITICAL secret: config: config/trivy/secret.yaml

    root@kitploit:~
    Es posible definir todas las opciones en el archivo `trivy.yaml`. Especificar opciones individuales a través de la acción se conserva por motivos de compatibilidad hacia atrás. Es necesario definir lo siguiente, ya que no se puede definir con el archivo de configuración:
    - `scan-ref`: Si se utilizan escaneos `fs, repo`.
    - `image-ref`: Si se utiliza el escaneo `image`.
    - `scan-type`: Para definir el tipo de escaneo, p. ej. `image`, `fs`, `repo`, etc.
    
    #### Orden de preferencia para las opciones
    Trivy utiliza [Viper](https://github.com/spf13/viper), que tiene un orden de precedencia definido para las opciones. El orden es el siguiente:
    - Flag de GitHub Action
    - Variable de entorno
    - Archivo de configuración
    - Predeterminado
    
    ### Caché
    La acción tiene una funcionalidad integrada para almacenar en caché y restaurar [la base de datos de vulnerabilidades](https://github.com/aquasecurity/trivy-db), [la base de datos de Java](https://github.com/aquasecurity/trivy-java-db) y [el paquete de comprobaciones](https://github.com/aquasecurity/trivy-checks) si se descargan durante el escaneo.
    La caché se almacena en el directorio `$GITHUB_WORKSPACE/.cache/trivy` de forma predeterminada.
    La caché se restaura antes de que comience el escaneo y se guarda después de que finalice.
    
    Utiliza [actions/cache](https://github.com/actions/cache) internamente, pero requiere menos ajustes de configuración.
    La entrada `cache` es opcional y el almacenamiento en caché está activado de forma predeterminada.
    
    #### Desactivar el almacenamiento en caché
    Si desea desactivar el almacenamiento en caché, establezca la entrada `cache` en `false`, pero recomendamos mantenerlo habilitado para evitar problemas de limitación de velocidad.```yaml
        - name: Run Trivy scanner without cache
          uses: aquasecurity/[email protected]
          with:
            scan-type: 'fs'
            scan-ref: '.'
            cache: 'false'
    

    Actualizar las cachés en la rama predeterminada

    Ten en cuenta que existen restricciones de acceso a la caché entre ramas en GitHub Actions. Por defecto, un flujo de trabajo puede acceder y restaurar una caché creada en la rama actual o en la rama predeterminada (normalmente main o master). Si necesitas compartir cachés entre ramas, es posible que tengas que crear una caché en la rama predeterminada y restaurarla en la rama actual.

    Para optimizar tu flujo de trabajo, puedes configurar un trabajo cron para actualizar periódicamente la caché en la rama predeterminada. Esto permite que los escaneos posteriores utilicen la base de datos en caché sin tener que descargarla de nuevo.```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:~
    Al ejecutar un escaneo, establece las variables de entorno `TRIVY_SKIP_DB_UPDATE` y `TRIVY_SKIP_JAVA_DB_UPDATE` para omitir el proceso de descarga.```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
    

    Configuración de Trivy

    Por defecto, la acción llama a aquasecurity/setup-trivy como primer paso que instala la versión de trivy especificada por la entrada version. Si ya has instalado trivy por otros medios, por ejemplo llamando a aquasecurity/setup-trivy directamente, o si invocas esta acción varias veces, puedes usar la entrada skip-setup-trivy para desactivar este paso.

    Configurar Trivy manualmente```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:~
    #### Omitir la configuración al llamar a Trivy Action varias veces
    Otro caso de uso común es cuando una compilación llama a esta acción varias veces; en este caso, podemos establecer `skip-setup-trivy` en 
    `true` en invocaciones posteriores, p. ej.```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
    

    Usar un token no predeterminado para instalar Trivy

    GitHub Enterprise Server (GHES) utiliza un github.token no válido para el servidor https://github.com. Por lo tanto, no puedes instalar Trivy usando la acción setup-trivy.

    Para solucionar este problema, debes sobrescribir el token para setup-trivy mediante la entrada 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 incluso tiene [create-github-app-token](https://github.com/actions/create-github-app-token) para casos similares.
    
    ### Escaneando un 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'
    

    Using Trivy with templates

    The action supports [Trivy templates][trivy-templates].

    Use template input to specify path (remember to prefix the path with @) to template file.```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:~
    #### Plantillas por defecto
    Trivy tiene [plantillas por defecto][trivy-default-templates].
    
    Por defecto, `setup-trivy` las instala en el directorio `$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"
    

    Uso de Trivy con GitHub Code Scanning

    Si tienes GitHub code scanning disponible, puedes usar Trivy como herramienta de escaneo de la siguiente manera:```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:~
    Puedes encontrar un ejemplo más detallado aquí: https://github.com/aquasecurity/trivy-sarif-demo/blob/master/.github/workflows/scan.yml
    
    Si deseas subir los resultados SARIF al escaneo de código de GitHub incluso cuando el código de salida de Trivy Scan sea distinto de cero, puedes añadir lo siguiente a tu paso de subida:```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'
    

    Consulta esto para más detalles: https://docs.github.com/en/actions/learn-github-actions/expressions#always

    Usar Trivy para escanear tu repositorio Git

    También es posible escanear tus repositorios Git con el escaneo de repositorios integrado de Trivy. Esto puede ser útil si quieres ejecutar Trivy como una comprobación en tiempo de compilación en cada PR que se abra en tu repositorio. Esto te ayuda a identificar vulnerabilidades potenciales que podrían introducirse con cada PR.

    Si tienes GitHub code scanning disponible, puedes usar Trivy como herramienta de escaneo de la siguiente manera:```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:~
    ### Uso de Trivy para escanear tus directorios rootfs
    
    También es posible escanear tus directorios rootfs con el escaneo rootfs integrado de Trivy. Esto puede resultar útil si quieres ejecutar Trivy como una comprobación en tiempo de compilación en cada PR que se abra en tu repositorio. Esto te ayuda a identificar posibles vulnerabilidades que podrían introducirse con cada PR.
    
    Si tienes [escaneo de código de GitHub](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) disponible, puedes usar Trivy como herramienta de escaneo de la siguiente manera:```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'
    

    Usando Trivy para escanear Infraestructura como Código

    También es posible escanear tus repositorios de IaC con el escaneo de repositorios integrado de Trivy. Esto puede ser útil si quieres ejecutar Trivy como una verificación en tiempo de compilación en cada PR que se abra en tu repositorio. Esto te ayuda a identificar posibles vulnerabilidades que podrían introducirse con cada PR.

    Si tienes disponible el escaneo de código de GitHub, puedes usar Trivy como herramienta de escaneo de la siguiente manera:```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:~
    **Nota**: Si tu configuración de Terraform contiene módulos privados, configura Git para autenticarse con el repositorio que los aloja. 
    Esto se puede hacer añadiendo un paso en tu flujo de trabajo de CI que configure el acceso, por ejemplo usando un token de acceso personal (PAT) o claves 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 }}
    

    Esto garantiza que Trivy pueda descargar módulos privados.

    Uso de Trivy para generar SBOM

    Trivy puede generar un SBOM de tus dependencias y enviarlo a un consumidor como GitHub Dependency Graph.

    La función de envío de un SBOM a GitHub solo está disponible si actualmente tienes GitHub Dependency Graph habilitado en tu repositorio.

    Para enviar resultados a GitHub Dependency Graph, necesitarás crear un GitHub PAT o usar el token de acceso de instalación de GitHub (también conocido como 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:~
    Al escanear imágenes, es posible que quieras analizar el JSON de salida real, ya que Github Dependency no muestra todos los detalles, como la ruta de archivo de cada dependencia, por ejemplo.
    
    Puedes subir el informe como un artefacto y descargarlo, por ejemplo, usando la [acción 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
    

    Usando Trivy para escanear tu registro privado

    También es posible escanear tu registro privado con el escaneo de imágenes integrado de Trivy. Todo lo que tienes que hacer es establecer variables de entorno.

    Registro de Docker Hub

    Docker Hub necesita TRIVY_USERNAME y TRIVY_PASSWORD. No necesitas establecer variables de entorno al descargar desde un repositorio público.```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 usa AWS SDK. No necesitas instalar la herramienta CLI de `aws`.
    Puedes usar las [variables de entorno de 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 utiliza Google Cloud SDK. No necesitas instalar el comando gcloud.

    Si deseas utilizar el repositorio del proyecto de destino, puedes configurarlo mediante 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:~
    #### Autohospedado
    El servidor BasicAuth necesita `TRIVY_USERNAME` y `TRIVY_PASSWORD`.
    Si quieres usar el puerto 80, usa 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'
    

    Uso de Trivy si no tienes el escaneo de código habilitado

    También es posible consultar el resultado de un escaneo en el resumen de un workflow.

    Este paso es especialmente útil para repositorios privados sin licencia de 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:~
    ## Personalización
    
    Prioridad de configuración:
    - [Entradas](#inputs)
    - [Variables de entorno](#environment-variables)
    - [Archivo de configuración de Trivy](#trivy-config-file)
    - Valores predeterminados
    
    
    ### inputs
    
    Las siguientes entradas se pueden usar como claves de `step.with`:
    
    | Nombre                       | Tipo    | Predeterminado                 | Descripción                                                                                                                                                      |
    |------------------------------|---------|--------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
    | `scan-type`                  | String  | `image`                        | Tipo de escaneo, p. ej. `image` o `fs`                                                                                                                           |
    | `input`                      | String  |                                | Referencia de tar, p. ej. `alpine-latest.tar`                                                                                                                    |
    | `image-ref`                  | String  |                                | Referencia de imagen, p. ej. `alpine:3.10.2`                                                                                                                     |
    | `scan-ref`                   | String  | `/github/workspace/`           | Referencia de escaneo, p. ej. `/github/workspace/` o `.`                                                                                                         |
    | `format`                     | String  | `table`                        | Formato de salida (`table`, `json`, `template`, `sarif`, `cyclonedx`, `spdx`, `spdx-json`, `github`, `cosign-vuln`)                                             |
    | `template`                   | String  |                                | Plantilla de salida (`@$HOME/.local/bin/trivy-bin/contrib/gitlab.tpl`, `@$HOME/.local/bin/trivy-bin/contrib/junit.tpl`)                                          |
    | `tf-vars`                    | String  |                                | ruta al archivo de variables de Terraform                                                                                                                        |
    | `output`                     | String  |                                | Guardar los resultados en un archivo                                                                                                                             |
    | `exit-code`                  | String  | `0`                            | Código de salida cuando se encuentran las vulnerabilidades especificadas                                                                                         |
    | `ignore-unfixed`             | Boolean | false                          | Ignorar vulnerabilidades sin parchear o sin corregir                                                                                                             |
    | `vuln-type`                  | String  | `os,library`                   | Tipos de vulnerabilidad (os,library)                                                                                                                             |
    | `severity`                   | String  | `UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL` | Gravedades de las vulnerabilidades que se escanearán y mostrarán                                                                                                 |
    | `skip-dirs`                  | String  |                                | Lista separada por comas de directorios en los que se omite el recorrido                                                                                         |
    | `skip-files`                 | String  |                                | Lista separada por comas de archivos en los que se omite el recorrido                                                                                            |
    | `cache-dir`                  | String  | `$GITHUB_WORKSPACE/.cache/trivy` | Directorio de caché. NOTA: Este valor no puede configurarse mediante `trivy.yaml`.                                                                               |
    | `timeout`                    | String  | `5m0s`                         | Duración del tiempo de espera del escaneo                                                                                                                        |
    | `ignore-policy`              | String  |                                | Filtrar vulnerabilidades con el lenguaje OPA rego                                                                                                                |
    | `hide-progress`              | String  | `false`                        | Suprimir la barra de progreso y la salida de registro                                                                                                            |
    | `list-all-pkgs`              | String  |                                | Mostrar todos los paquetes independientemente de la vulnerabilidad                                                                                               |
    | `scanners`                   | String  | `vuln,secret`                  | lista separada por comas de qué problemas de seguridad detectar (`vuln`,`secret`,`misconfig`,`license`)                                                          |
    | `trivyignores`               | String  |                                | lista separada por comas de rutas relativas dentro del repositorio a uno o más archivos `.trivyignore`, o un único archivo `.trivyignore.yaml`.                  |
    | `trivy-config`               | String  |                                | Ruta al archivo de configuración `trivy.yaml`                                                                                                                    |
    | `github-pat`                 | String  |                                | Token de autenticación para permitir el envío de resultados de escaneo SBOM al gráfico de dependencias de GitHub. Puede ser un token de acceso personal (PAT) de GitHub o `GITHUB_TOKEN` |
    | `limit-severities-for-sarif` | Boolean | false                          | Por defecto, el formato *SARIF* obliga a mostrar todas las vulnerabilidades independientemente de las gravedades configuradas. Para anular este comportamiento, establezca este parámetro en **true** |
    | `docker-host`                | String  |                                | Por defecto se establece en `unix://var/run/docker.sock`, pero puede actualizarse para ayudar con infraestructura basada en contenedores (se requiere `unix:/` u otro prefijo) |
    | `version`                    | String  | `v0.72.0`                      | Versión de Trivy que se usará, p. ej. `latest` o `v0.72.0`                                                                                                       |
    | `skip-setup-trivy`           | Boolean | false                          | Omitir la llamada a la acción `setup-trivy` para instalar `trivy`                                                                                                |
    | `token-setup-trivy`          | Boolean |                                | Sobrescribir `github.token` utilizado por `setup-trivy` para clonar el repositorio `trivy`                                                                       |
    
    ### Variables de entorno
    
    Puede utilizar [las variables de entorno de Trivy][trivy-env] para establecer las opciones necesarias (incluidas banderas que no son compatibles con [Entradas](#inputs), como `--secret-config`).
    
    **NB** En algunas versiones anteriores de la acción existía un bug que hacía que las entradas de una llamada a la acción se filtraran 
    a llamadas posteriores de la acción.  Esto podía provocar que los flujos de trabajo que llaman a la acción varias veces, p. ej. para ejecutar 
    varios escaneos, o los mismos escaneos con diferentes formatos de salida, no produjeran la salida deseada.  Puede comprobar si este
    es el caso revisando la información del paso de GitHub Actions: si la sección `env` que se muestra en la salida de GitHub Actions 
    contiene variables de entorno `TRIVY_*` que usted no estableció explícitamente, es posible que se vea afectado por este bug y debería 
    actualizar a la versión más reciente de la acción.
    
    ### Archivo de configuración de Trivy
    
    Al usar la [entrada](#inputs) `trivy-config`, puede establecer opciones mediante el [archivo de configuración de Trivy][trivy-config] (incluidas banderas que no son compatibles con [Entradas](#inputs), como `--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
    
    Descargar herramienta