Skip to content

Cloud-scan/cloudscan-umbrella

Repository files navigation

CloudScan - Open Source Security Scanning Platform

Self-hosted, enterprise-grade security and code quality scanning platform

License Go Version Kubernetes


🌟 What is CloudScan?

CloudScan is a free, open-source alternative to expensive commercial security scanning tools (SonarQube Enterprise, Snyk, Checkmarx). It provides:

  • βœ… Multiple scan types: SAST, SCA, Secrets Detection, License Compliance
  • βœ… Beautiful web UI with real-time progress updates
  • βœ… Self-hosted on your Kubernetes cluster (full data privacy)
  • βœ… Multi-tenant architecture for organizations
  • βœ… Easy deployment via Helm chart (5-minute setup)
  • βœ… Extensible plugin architecture for custom scanners

Cost Comparison:

  • SonarQube Enterprise: $150,000+/year
  • Snyk Enterprise: $50,000+/year
  • Checkmarx: $100,000+/year
  • CloudScan: FREE ✨

πŸ—οΈ Architecture

CloudScan is built as a distributed microservices platform:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         React UI                             β”‚
β”‚                   (Upload, View Results)                     β”‚
β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
     β”‚                         β”‚                          β”‚
     β”‚ 1. Create scan         β”‚ 2. Upload source         β”‚ 3. Watch logs
     β–Ό                         β–Ό                          β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ API Gateway  β”‚      β”‚ Storage Service β”‚      β”‚ WebSocket Serviceβ”‚
β”‚ (REST/gRPC)  β”‚      β”‚ (gRPC)          β”‚      β”‚ (Live updates)   β”‚
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
       β”‚                       β”‚                         β”‚
       β”‚ CreateScan(artifact_id)β”‚                        β”‚
       β–Ό                       β”‚                         β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚                         β”‚
β”‚  Orchestrator      β”‚         β”‚                         β”‚
β”‚  - Scan mgmt       β”‚β—„β”€β”€β”€β”€β”€β”€β”€β”€β”˜                         β”‚
β”‚  - K8s dispatcher  β”‚  GetArtifact(presigned URL)       β”‚
β”‚  - gRPC APIs       β”‚                                   β”‚
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                   β”‚
       β”‚                                                 β”‚
       β”‚ 4. Create K8s Job                              β”‚
       β”‚    with SOURCE_DOWNLOAD_URL                    β”‚
       β–Ό                                                 β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                 β”‚
β”‚ Kubernetes Cluster  β”‚                                 β”‚
β”‚                     β”‚                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚                                 β”‚
β”‚  β”‚ Runner Pod    β”‚  β”‚                                 β”‚
β”‚  β”‚               β”‚  β”‚      5. Stream logs             β”‚
β”‚  β”‚ - Semgrep     β”‚β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚  β”‚ - Trivy       β”‚  β”‚
β”‚  β”‚ - TruffleHog  β”‚  β”‚
β”‚  β”‚ - ScanCode    β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚
           β”‚ 6. Download source (presigned URL)
           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   S3/MinIO/GCS      β”‚
β”‚   Object Storage    β”‚
β”‚   - Source code     β”‚
β”‚   - Scan artifacts  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚
           β”‚ 7. CreateFindings(gRPC)
           β”‚    UpdateScan(gRPC)
           β–Ό
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚ PostgreSQL   β”‚
     β”‚ - Scans      β”‚
     β”‚ - Findings   β”‚
     β”‚ - Artifacts  β”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Services:

  • cloudscan-ui: React frontend with real-time updates
  • cloudscan-api-gateway: HTTP gateway with authentication
  • cloudscan-orchestrator: Core service (job management, K8s dispatcher)
  • cloudscan-storage: Multi-cloud storage abstraction (S3/GCS/Azure)
  • cloudscan-websocket: Real-time log streaming
  • cloudscan-runner: Scanner executors (runs in K8s Jobs)

πŸš€ Quick Start

Prerequisites

  • Kubernetes cluster (v1.28+)
  • Helm 3.x
  • kubectl configured

Installation

# Add Helm repository
helm repo add cloudscan https://charts.cloudscan.dev
helm repo update

# Install CloudScan
helm install cloudscan cloudscan/cloudscan \
  --namespace cloudscan \
  --create-namespace \
  --set postgresql.enabled=true \
  --set storage.type=s3 \
  --set storage.s3.bucket=my-scans-bucket \
  --set ingress.enabled=true \
  --set ingress.hosts[0].host=cloudscan.mycompany.com

Access the UI

Navigate to: https://cloudscan.mycompany.com

Create your account and start scanning! πŸŽ‰


πŸ“– Documentation


πŸ”§ Development

Repository Structure

cloudscan/
β”œβ”€β”€ cloudscan-orchestrator/    # Core orchestration service (Go)
β”œβ”€β”€ cloudscan-ui/              # React frontend
β”œβ”€β”€ cloudscan-storage/         # Storage service (Go)
β”œβ”€β”€ cloudscan-api-gateway/     # API gateway (Go)
β”œβ”€β”€ cloudscan-websocket/       # WebSocket service (Go)
β”œβ”€β”€ cloudscan-runner/          # Scanner runner (Go)
β”œβ”€β”€ protobuf/                  # Shared protobuf definitions
β”œβ”€β”€ shared/                    # Shared Go libraries
β”œβ”€β”€ charts/                    # Helm charts
β”œβ”€β”€ docs/                      # Documentation
└── scripts/                   # Build and deployment scripts

Local Development

See individual service READMEs for development setup:


πŸ§ͺ Scanners Included

Type Tool What it Scans
SAST Semgrep Security vulnerabilities in code (SQL injection, XSS, etc.)
SCA Trivy Vulnerable dependencies (CVEs in npm, pip, maven, etc.)
Secrets TruffleHog API keys, passwords, tokens leaked in code
License ScanCode Open-source license compliance

🎯 Use Cases

  • Startups: Free alternative to expensive commercial tools
  • Enterprises: Self-hosted solution for compliance (GDPR, HIPAA, SOC2)
  • Open Source Projects: Public scanning with badges
  • Educational: Teaching secure coding practices

🀝 Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

Ways to contribute:

  • πŸ› Report bugs
  • πŸ’‘ Suggest features
  • πŸ“ Improve documentation
  • πŸ”§ Submit pull requests
  • 🌟 Star the repo!

πŸ“„ License

Apache 2.0 - see LICENSE


πŸ™ Acknowledgments

CloudScan leverages these amazing open-source tools:


πŸ“§ Support


Made with ❀️ by developers, for developers

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •