Trivy Security Scanner Tutorial 🚀¶
What is Trivy?¶
Trivy is a lightweight and powerful security scanner that detects vulnerabilities in:
✅ Container Images (Docker, Podman, etc.)
✅ Kubernetes Clusters (pods, deployments, namespaces, etc.)
✅ Infrastructure as Code (IaC) (Terraform, Helm, Kubernetes manifests, CloudFormation)
✅ Cloud Resources (AWS, Azure, GCP)
✅ Container Registries (ECR, GCR, Docker Hub, etc.)
✅ File System & Root Filesystem (rootfs, directories, local files)
✅ Code Repositories (GitHub, GitLab, Bitbucket, etc.)
✅ VM Images (AWS AMI, VMware, VirtualBox, etc.)
✅ Software Bill of Materials (SBOM) (CycloneDX, SPDX, etc.)
1️⃣ Scan Container Images¶
Scan a Local Docker Image¶
Scan an Image from a Private Registry¶
Scan for Only High & Critical Vulnerabilities¶
Save Scan Results to a File (JSON Format)¶
2️⃣ Scan Kubernetes Clusters¶
Scan the Entire Kubernetes Cluster¶
Scan a Specific Kubernetes Resource¶
Scan a Specific Kubernetes Node¶
3️⃣ Scan Infrastructure as Code (IaC)¶
Scan Terraform, Kubernetes Manifests, Helm Charts, or CloudFormation¶
Scan a Kubernetes YAML Manifest¶
4️⃣ Scan Cloud Resources¶
🔹 Scan AWS Security Resources¶
First, configure AWS CLI:
Then, run:
Scans AWS services (EC2, S3, IAM, RDS, etc.) for misconfigurations and vulnerabilities.
Scan Specific AWS Services¶
🔹 Scan Azure Security Resources¶
Login to Azure:
Then, scan:
Scans Azure services (Storage, VM, IAM, etc.) for security misconfigurations.
5️⃣ Scan Container Registries¶
Amazon ECR¶
Google Container Registry (GCR)¶
Docker Hub¶
6️⃣ Scan File System & Root Filesystem (rootfs)¶
Scan a Local Directory¶
Scan the Root Filesystem¶
7️⃣ Scan Code Repositories¶
Scan a GitHub Repository¶
Scan a Local Git Repository¶
8️⃣ Scan VM Images¶
Trivy can scan VM images, including AWS AMI, VMware, VirtualBox.
Scan an AWS AMI Image¶
Scan a VMware Image¶
9️⃣ Generate a Software Bill of Materials (SBOM)¶
SBOM helps track all dependencies in an application.
Generate SBOM in SPDX Format¶
Generate SBOM in CycloneDX Format¶
🔟 Integrating Trivy with AWS Security Hub¶
Enable AWS Security Hub¶
Ensure you have an IAM user/role with Security Hub permissions.
Install Trivy AWS Plugin¶
Scan AWS Services & Send Results to Security Hub¶
trivy aws --region us-east-1 --format aws --output securityhub.json
aws securityhub batch-import-findings --findings file://securityhub.json
Verify Results in AWS Security Hub¶
1️⃣ Open AWS Console → Security Hub
2️⃣ Navigate to Findings
3️⃣ Filter by "Product Name: Trivy"
1️⃣1️⃣ Automate AWS Security Scans with Lambda¶
Example AWS Lambda Code (Python)¶
import json
import subprocess
import boto3
def lambda_handler(event, context):
region = "us-east-1"
output_file = "/tmp/securityhub.json"
# Run Trivy Scan
cmd = f"trivy aws --region {region} --format aws --output {output_file}"
subprocess.run(cmd, shell=True, check=True)
# Upload findings to AWS Security Hub
securityhub = boto3.client("securityhub", region_name=region)
with open(output_file, "r") as f:
findings = json.load(f)
response = securityhub.batch_import_findings(Findings=findings)
return {
"statusCode": 200,
"body": json.dumps(response)
}
🚀 Trigger this Lambda using an AWS EventBridge rule to scan AWS security resources on a schedule!
1️⃣2️⃣ CI/CD Integration¶
GitHub Actions¶
uses: aquasecurity/trivy-action@master
with:
scan-type: "aws"
aws-region: "us-east-1"
format: "aws"
output: "securityhub.json"
Then, upload to AWS Security Hub using AWS CLI.
Jenkins Pipeline¶
Why Use Trivy?¶
✅ Fast & lightweight security scanning
✅ Scans everything – containers, Kubernetes, IaC, registries, cloud, VM images
✅ Generates SBOM for dependency tracking
✅ Integrates with AWS Security Hub for centralized monitoring
✅ CI/CD-friendly – integrates with GitHub, Jenkins, GitLab, etc.
✅ Automates AWS security checks with Lambda