Compare commits

...

29 Commits

Author SHA1 Message Date
Simarpreet Singh
7294c6a408 Update README.md 2021-02-24 16:54:57 -08:00
Simarpreet Singh
df28e4135d Update README.md
Add a guide for using in repo mode
2021-02-24 16:47:59 -08:00
rahul2393
1d28acf359 Add scan type as option (#27)
* Add scan type as option

* Fix exitCode

* remove all options

* Add default value to scanRef and improve shell

* print args

* fix description.

* More changes
2021-02-24 16:31:43 -08:00
Chris Aumann
7684771c94 Add vuln-type parameter (#19)
Co-authored-by: Simarpreet Singh <simar@linux.com>
2021-02-11 13:49:57 -08:00
Simarpreet Singh
8595c5d059 Update README.md 2021-02-05 13:20:20 -08:00
Airtower
d8496b917f docs: Add a link to the Trivy repository (#20) 2020-10-15 20:31:54 +02:00
Simarpreet Singh
ddc1a12251 workflow: Update example workflow.yml
Signed-off-by: Simarpreet Singh <simar@linux.com>
2020-09-17 14:24:25 -07:00
Simarpreet Singh
2e51a7d82c README: Update example yaml
Signed-off-by: Simarpreet Singh <simar@linux.com>
2020-09-17 14:20:40 -07:00
Simarpreet Singh
6087d9d64e Merge branch 'master' of github.com:aquasecurity/trivy-action 2020-09-17 14:19:41 -07:00
Simarpreet Singh
888827683a Update README.md 2020-08-25 14:20:44 -07:00
Simarpreet Singh
7e2e12baea Update sample workflow.yml with a small example 2020-08-25 14:20:04 -07:00
jerbia
202e8283bd Create workflow.yml 2020-08-25 21:17:27 +03:00
Simarpreet Singh
507a96efe4 Merge pull request #2 from aquasecurity/master
merge upstream
2020-08-17 18:09:47 -07:00
Simarpreet Singh
6c3dd513ad README: Clean up cruft
Signed-off-by: Simarpreet Singh <simar@linux.com>
2020-08-14 09:50:12 -07:00
Simarpreet Singh
2b5de51086 Merge pull request #16 from aquasecurity/update-title
Update action.yaml
2020-08-13 15:40:49 -07:00
Simarpreet Singh
de7cb7d4ba Update action.yaml
Co-authored-by: Daniel Pacak <pacak.daniel@gmail.com>
2020-08-13 09:56:17 -07:00
Simarpreet Singh
9403afcefd Update action.yaml
Update title to include Aqua Security for searchability purposes.
2020-08-12 12:00:26 -07:00
Simarpreet Singh
28ef387ad0 Merge pull request #1 from aquasecurity/master
upstream merge
2020-08-04 15:06:36 -07:00
Simarpreet Singh
159e7e8ec2 Merge pull request #15 from aquasecurity/sarif-support-3
docs: Fix docs and add improved example repo
2020-07-30 14:35:51 -07:00
Simarpreet Singh
4edb45e6ff docs: Fix docs and add improved example repo
Signed-off-by: Simarpreet Singh <simar@linux.com>
2020-07-30 14:32:23 -07:00
Simarpreet Singh
6d50808eba Merge pull request #13 from simar7/sarif-support
SARIF: Add support for sarif output
2020-07-28 11:22:16 -07:00
Simarpreet Singh
8cc32f763c README: Add instructions on how to use Trivy for GH Code Scanning
Signed-off-by: Simarpreet Singh <simar@linux.com>
2020-07-28 10:48:20 -07:00
Simarpreet Singh
3fadcda6be action: Add template option
Signed-off-by: Simarpreet Singh <simar@linux.com>
2020-07-27 15:55:05 -07:00
Simarpreet Singh
d424596f39 action: Change option to template instead
Signed-off-by: Simarpreet Singh <simar@linux.com>
2020-07-27 15:29:14 -07:00
Simarpreet Singh
6b9375bd16 sarif: Add support for sarif output
Signed-off-by: Simarpreet Singh <simar@linux.com>
2020-07-24 14:17:51 -07:00
Zois Pagoulatos
f498173417 feat: Add support for --ignore-unfixed flag (#10)
Resolves: #9
2020-06-22 19:40:11 +02:00
Zois Pagoulatos
c88ebc55b9 docs: Update README with 0.0.6 release (#8)
Actions using `0.0.5` are failing with 
`(Line: 26, Col: 10): Unrecognized named-value: 'inputs'. Located at position 1 within expression: inputs.version`

Resolves: #7
2020-06-18 10:50:30 +02:00
Daniel Pacak
1eb53c0425 docs: Update README.md
Signed-off-by: Daniel Pacak <pacak.daniel@gmail.com>
2020-06-03 09:33:30 +02:00
Daniel Pacak
e09a3cf5ca fix: Use the latest version of Trivy
Signed-off-by: Daniel Pacak <pacak.daniel@gmail.com>
2020-06-03 00:23:27 +02:00
6 changed files with 245 additions and 28 deletions
+5
View File
@@ -0,0 +1,5 @@
FROM aquasec/trivy:latest
COPY entrypoint.sh /
RUN apk --no-cache add bash
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
+100 -15
View File
@@ -1,15 +1,19 @@
# Trivy Action
> [GitHub Action](https://github.com/features/actions) for Trivy
> [GitHub Action](https://github.com/features/actions) for [Trivy](https://github.com/aquasecurity/trivy)
[![GitHub Release][release-img]][release]
[![GitHub Marketplace][marketplace-img]][marketplace]
[![License][license-img]][license]
![](docs/images/trivy-action.png)
## Table of Contents
- [Usage](#usage)
- [Workflow](#workflow)
- [Docker Image Scanning](#using-trivy-with-github-code-scanning)
- [Git Repository Scanning](#using-trivy-to-scan-your-git-repo)
- [Customizing](#customizing)
- [Inputs](#inputs)
@@ -29,41 +33,122 @@ jobs:
name: Build
runs-on: ubuntu-18.04
steps:
- name: Setup Go
uses: actions/setup-go@v1
with:
go-version: 1.14
- name: Checkout code
uses: actions/checkout@v2
- name: Build an image from Dockerfile
run: |
docker build -t docker.io/my-organization/my-app:${{ github.sha }} .
- name: Run vulnerability scanner
uses: aquasecurity/trivy-action@0.0.5
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
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'
```
### Using Trivy with GitHub Code Scanning
If you have [GitHub code scanning](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) available you can use Trivy as a scanning tool as follows:
```yaml
name: build
on:
push:
branches:
- master
pull_request:
jobs:
build:
name: Build
runs-on: ubuntu-18.04
steps:
- name: Checkout code
uses: actions/checkout@v2
- 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/trivy-action@master
with:
image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}'
format: 'template'
template: '@/contrib/sarif.tpl'
output: 'trivy-results.sarif'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: 'trivy-results.sarif'
```
You can find a more in-depth example here: https://github.com/aquasecurity/trivy-sarif-demo/blob/master/.github/workflows/scan.yml
### Using Trivy to scan your Git repo
It's also possible to scan your git repos with Trivy's built-in repo scan. This can be handy if you want to run Trivy as a build time check on each PR that gets opened in your repo. This helps you identify potential vulnerablites that might get introduced with each PR.
If you have [GitHub code scanning](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) available you can use Trivy as a scanning tool as follows:
```yaml
name: build
on:
push:
branches:
- master
pull_request:
jobs:
build:
name: Build
runs-on: ubuntu-18.04
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Build an image from Dockerfile
run: |
docker build -t docker.io/my-organization/my-app:${{ github.sha }} .
- name: Run Trivy vulnerability scanner in repo mode
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
ignore-unfixed: true
format: 'template'
template: '@/contrib/sarif.tpl'
output: 'trivy-results.sarif'
severity: 'CRITICAL'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: 'trivy-results.sarif'
```
## Customizing
### inputs
Following inputs can be used as `step.with` keys:
| Name | Type | Default | Description |
|-------------|--------|------------------------------------|-----------------------------------------------|
| `image-ref` | String | | Image reference, e.g. `alpine:3.10.2` |
| `format` | String | `table` | Output format (`table`, `json`) |
| `exit-code` | String | `0` | exit code when vulnerabilities were found |
| `severity` | String | `UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL` | severities of vulnerabilities to be displayed |
| Name | Type | Default | Description |
|------------------|---------|------------------------------------|-----------------------------------------------|
| `scan-type` | String | `image` | Scan type, e.g. `image` or `fs`|
| `image-ref` | String | | Image reference, e.g. `alpine:3.10.2` |
| `scan-ref` | String | `/github/workspace/` | Scan reference, e.g. `/github/workspace/` or `.`|
| `format` | String | `table` | Output format (`table`, `json`, `template`) |
| `template` | String | | Output template (`@/contrib/sarif.tpl`, `@/contrib/gitlab.tpl`, `@/contrib/junit.tpl`)|
| `output` | String | | Save results to a file |
| `exit-code` | String | `0` | Exit code when vulnerabilities were found |
| `ignore-unfixed` | Boolean | false | Ignore unpatched/unfixed vulnerabilities |
| `vuln-type` | String | `os,library` | Vulnerability types (os,library) |
| `severity` | String | `UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL` | Severities of vulnerabilities to be displayed |
[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/trivy-vulnerability-scanner
[marketplace]: https://github.com/marketplace/actions/aqua-security-trivy
[marketplace-img]: https://img.shields.io/badge/marketplace-trivy--action-blue?logo=github
[license]: https://github.com/aquasecurity/trivy-action/blob/master/LICENSE
[license-img]: https://img.shields.io/github/license/aquasecurity/trivy-action
+38 -13
View File
@@ -1,32 +1,57 @@
name: 'Trivy Vulnerability Scanner'
description: 'Scan container image for vulnerabilities with Trivy'
name: 'Aqua Security Trivy'
description: 'Scans container images for vulnerabilities with Trivy'
author: 'Aqua Security'
inputs:
scan-type:
description: 'Scan type to use for scanning vulnerability'
required: false
default: 'image'
image-ref:
description: 'image reference'
description: 'image reference(for backward compatibility)'
required: true
scan-ref:
description: 'Scan reference'
required: false
default: '.'
exit-code:
description: 'exit code when vulnerabilities were found'
required: false
default: '0'
ignore-unfixed:
description: 'ignore unfixed vulnerabilities'
required: false
default: 'false'
vuln-type:
description: 'comma-separated list of vulnerability types (os,library)'
required: false
default: 'os,library'
severity:
description: 'severities of vulnerabilities to be displayed'
required: false
default: 'UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL'
format:
description: 'output format (table, json)'
description: 'output format (table, json, template)'
required: false
default: 'table'
version:
description: 'version of Trivy to use'
template:
description: 'use an existing template for rendering output (@/contrib/sarif.tpl, @/contrib/gitlab.tpl, @/contrib/junit.tpl'
required: false
default: 'latest'
default: ''
output:
description: 'writes results to a file with the specified file name'
required: false
default: ''
runs:
using: 'docker'
image: 'docker://docker.io/aquasec/trivy:${{ inputs.version }}'
image: "Dockerfile"
args:
- 'image'
- '--format=${{ inputs.format }}'
- '--exit-code=${{ inputs.exit-code }}'
- '--severity=${{ inputs.severity }}'
- '${{ inputs.image-ref }}'
- '-a ${{ inputs.scan-type }}'
- '-b ${{ inputs.format }}'
- '-c ${{ inputs.template }}'
- '-d ${{ inputs.exit-code }}'
- '-e ${{ inputs.ignore-unfixed }}'
- '-f ${{ inputs.vuln-type }}'
- '-g ${{ inputs.severity }}'
- '-h ${{ inputs.output }}'
- '-i ${{ inputs.image-ref }}'
- '-j ${{ inputs.scan-ref }}'
Binary file not shown.

After

Width:  |  Height:  |  Size: 505 KiB

+68
View File
@@ -0,0 +1,68 @@
#!/bin/bash
set -e
while getopts "a:b:c:d:e:f:g:h:i:j:" o; do
case "${o}" in
a)
export scanType=${OPTARG}
;;
b)
export format=${OPTARG}
;;
c)
export template=${OPTARG}
;;
d)
export exitCode=${OPTARG}
;;
e)
export ignoreUnfixed=${OPTARG}
;;
f)
export vulnType=${OPTARG}
;;
g)
export severity=${OPTARG}
;;
h)
export output=${OPTARG}
;;
i)
export imageRef=${OPTARG}
;;
j)
export scanRef=${OPTARG}
;;
esac
done
scanType=$(echo $scanType | tr -d '\r')
export artifactRef="${imageRef}"
if [ "${scanType}" = "fs" ];then
artifactRef=$(echo $scanRef | tr -d '\r')
fi
ARGS=""
if [ $format ];then
ARGS="$ARGS --format $format"
fi
if [ $template ] ;then
ARGS="$ARGS --template $template"
fi
if [ $exitCode ];then
ARGS="$ARGS --exit-code $exitCode"
fi
if [ "$ignoreUnfixed" == "true" ];then
ARGS="$ARGS --ignore-unfixed"
fi
if [ $vulnType ];then
ARGS="$ARGS --vuln-type $vulnType"
fi
if [ $severity ];then
ARGS="$ARGS --severity $severity"
fi
if [ $output ];then
ARGS="$ARGS --output $output"
fi
echo "Runnin trivy with options" "${ARGS}" "${artifactRef}"
trivy ${scanType} $ARGS ${artifactRef}
+34
View File
@@ -0,0 +1,34 @@
name: build
on:
push:
branches:
- master
pull_request:
jobs:
build:
name: Build
runs-on: ubuntu-18.04
steps:
- name: Checkout code
uses: actions/checkout@v2
- 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/trivy-action@master
with:
image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}'
exit-code: '1'
ignore-unfixed: true
vuln-type: 'os,library'
format: 'template'
template: '@/contrib/sarif.tpl'
output: 'trivy-results.sarif'
severity: 'CRITICAL,HIGH'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: 'trivy-results.sarif'