β οΈ Note: This project was originally forked fromshashvik/gandiva-xspm
, but that repository has since been deleted. This repository is now maintained independently. Major parts of the original codebase were authored by shashvik. Credit goes to him for the core architecture and initial implementation.
Gandiva is an advanced Extended Security Posture Management (xSPM) platform designed to help organizations monitor, assess, and improve their cloud security posture across multi-cloud environments. It offers deep visibility into cloud assets, detects security issues, and provides actionable remediation guidance.
- How to Deploy
- Key Features
- Architecture
- Project Structure
- Cloud Resource Scanning
- Security Considerations
- Documentation
- Screenshots
- Contributors
Ensure you have:
- Docker installed.
- AWS credentials configured (
~/.aws
). - Kubernetes configuration (
~/.kube
).
To run Gandiva using Docker:
-
Clone the repository:
git clone https://github.com/h4r5h1t/gandiva-xspm.git cd gandiva-xspm
-
Build Docker images:
Note: Image builds may take several minutes. Please be patient.
docker build -t gandiva-backend -f Dockerfile.backend . docker build -t gandiva-frontend -f Dockerfile.frontend .
-
Start the containers:
chmod +x start_gandiva.sh ./start_gandiva.sh
For a simpler deployment:
-
Clone the repository:
git clone https://github.com/h4r5h1t/gandiva-xspm.git cd gandiva-xspm
-
Launch using Docker Compose:
Note: Image builds may take several minutes. Please be patient.
docker compose up -d --build
-
Verify that containers are running:
docker compose ps
- Frontend: http://localhost:8080
- Default Credentials:
- Username:
gandiva
- Password:
gandiva_password
- Username:
- π Multi-Cloud Asset Inventory β Unified view of AWS, Kubernetes, and other resources.
- π¨ Security Findings β Detect misconfigurations and compliance issues.
- πΈοΈ Relationship Visualization β Graph-based visualization of resource interconnections.
- π‘οΈ Vulnerability Management β Identify and remediate resource vulnerabilities.
- β Benchmark Compliance β CIS, NIST compliance assessments.
- π³ Container Security β Detect vulnerabilities in container images and configurations.
- π§ͺ Database Security β Analyze and monitor database posture.
- π Secret Detection β Find exposed secrets in source code.
- π Interactive Dashboard β Clean, intuitive interface for actionable insights.
Gandiva comprises the following core components:
- Backend API: Flask-based RESTful API server integrating various scanning tools.
- Frontend UI: React-based dashboard with rich visualization and controls.
- Analysis Engine: Integration with Steampipe and Neo4j for data analysis and visualization.
- Frontend: React, TypeScript, Tailwind CSS, Shadcn UI, React Flow.
- Backend: Python, Flask, Flask-RESTful, JWT Authentication.
- Databases: MongoDB for application data, Neo4j for graph visualization.
- Scanning: Steampipe for cloud resource scanning, Checkov, Trivy, custom scanners.
- Deployment: Docker Compose, Kubernetes-ready.
gandiva/
βββ backend/ # Flask backend application
β βββ app.py # Main application entry point
β βββ resources.py # API resources and endpoints
β βββ neo4j_*.py # Neo4j integration
β βββ steampipe_*.py # Steampipe integration
β βββ *_scanner_*.py # Various scanners
βββ frontend/ # React frontend application
β βββ src/ # Source code
β β βββ components/ # React components
β β βββ pages/ # Page components
β β βββ services/ # API services
β βββ public/ # Static assets
βββ docker-compose.yml # Docker Compose configuration
βββ Dockerfile.* # Docker build configurations
Gandiva leverages Steampipe to scan multi-cloud resources.
Ensure AWS CLI is set up with valid credentials:
aws configure
Ensure your ~/.kube/config
file is properly configured and has access to your cluster.
- All endpoints are protected using JWT token authentication.
- Role-based access control for administrative functions.
- Secure storage of cloud credentials.
- Token refresh mechanism for persistent sessions.
shashvik
h4r5h1t
Special thanks to @shashvik for the original groundwork. This project is now independently maintained and developed by @h4r5h1t.