ShieldOps is a full-stack DevSecOps Dashboard automating:
- SAST, SCA, DAST, and Container Image Scanning
- Integrated CI/CD pipeline (Jenkins β Docker Hub β Kubernetes via Helm)
- Automated cluster provisioning via
shieldops-cluster-bootstrap.sh - Deployed on AWS EC2 with Ingress-NGINX and VPA for autoscaling
| Requirement | Version / Tool |
|---|---|
| Ubuntu | 22.04+ (EC2 Recommended) |
| Docker | 25.x+ |
| Node.js | 20+ |
| Helm | 3.x |
| Kubernetes | v1.31+ |
PORT=8081
JWT_SECRET=change-me-super-secret
TOKEN_EXPIRY=4hecho "VITE_API_BASE_URL=/api" > ui/.envsudo ./shieldops-cluster-bootstrap.sh --helpsudo chmod +x shieldops-cluster-bootstrap.sh --master <DockerHUB Username>sudo install -d -m 700 /home/"${USER}"/.kube
sudo cp /etc/kubernetes/admin.conf /home/"${USER}"/.kube/config
sudo chown "${USER}":"${USER}" /home/"${USER}"/.kube/config
chmod 600 /home/"${USER}"/.kube/configunset KUBECONFIGkubectl get nodes
kubectl get pods -Asudo usermod -aG docker jenkinsecho 'export PATH=$PATH:/home/ubuntu/.local/bin' | sudo tee -a /etc/profile.d/jenkins_path.sh
sudo systemctl restart jenkinsdocker login -u <username>sudo ./shieldops-cluster-bootstrap.sh --master --deploykubectl create secret generic shieldops-secrets \
--from-literal=jwtSecret=$(openssl rand -base64 32) \
-n shieldopssudo ./shieldops-cluster-bootstrap.sh --master --deployAccess the Dashboard β http://: π‘οΈ
| Component | Port | Description |
|---|---|---|
| Jenkins Dashboard | http://<EC2-Public-IP>:8080 |
CI/CD pipeline access |
| ShieldOps Dashboard (UI) | http://<EC2-Public-IP>:<NodePort> |
Frontend via Ingress |
| ShieldOps API | http://<EC2-Public-IP>:<NodePort>/api |
Backend API via Ingress |
| HTTPS (Optional) | https://<EC2-Public-IP>:<NodePort> |
Secure ingress endpoint |
kubectl -n ingress-nginx patch svc ingress-nginx-controller \
--type merge \
-p '{
"spec": {
"type": "NodePort",
"ports": [
{"name": "http", "port": 80, "targetPort": 80, "nodePort": 30080},
{"name": "https", "port": 443, "targetPort": 443, "nodePort": 30443}
]
}
}'kubectl get svc -n ingress-nginx| Stage | Tool / Command | Purpose |
|---|---|---|
| SAST | CodeQL | Static code & security analysis |
| SCA | OWASP Dependency-Check, Safety, CycloneDX BOM | Dependency & package vulnerability scanning, SBOM generation |
| Image Scan | Trivy | Container image vulnerability scanning |
| DAST | OWASP ZAP | Dynamic application security testing |
| Component | Stack | Description |
|---|---|---|
| Backend | Node.js + Express | JWT Auth, RBAC, REST APIs |
| Frontend | React + Vite + TailwindCSS | Modern cyber dashboard UI |
| Infra | Helm + Kubernetes + NGINX | Automated deployment & ingress |
| Pipeline | Jenkins | Full CI/CD automation with security gates |
| Autoscaling | VPA | Automatic pod CPU/memory adjustment |
ShieldOps/
βββ Jenkinsfile # CI/CD pipeline
βββ README.md # Documentation
βββ Screenshots/ArchitectureDiagram.png
βββ aggregator/aggregate.sh # Security report aggregator
βββ backend/ # Node.js backend (JWT, RBAC)
β βββ Dockerfile
β βββ package.json
β βββ src/
β β βββ routes/, middleware/, server.js, etc.
β βββ users.json
βββ ui/ # React + Tailwind frontend
β βββ src/components, pages, hooks
β βββ vite.config.ts
βββ helm/ShieldOps/ # Helm chart for UI + API + Ingress
β βββ templates/*.yaml
β βββ values.yaml
βββ docker-compose.yml # Local test deployment
βββ nginx.conf # NGINX config for UI
βββ shieldops-cluster-bootstrap.sh # Cluster & Helm bootstrap script
| Layer | Tools |
|---|---|
| CI/CD | Jenkins, Docker, Helm |
| Security | SonarQube, OWASP ZAP, Trivy, Dependency-Check |
| Backend | Node.js, Express, PostgreSQL |
| Frontend | React, Vite, TailwindCSS, Recharts |
| Infra | Kubernetes, containerd, Ingress-NGINX, VPA |
| Platform | AWS EC2 |
After deployment, verify core system components:
kubectl get pods -A
kubectl get ing -A
kubectl get vpa
kubectl get pods -n kube-system | grep vpaExpected output:
vpa-admission-controller-xxxxx 1/1 Running
vpa-recommender-xxxxx 1/1 Running
vpa-updater-xxxxx 1/1 Running
- Prometheus + Grafana for observability
- Cert-Manager for automated TLS
- Loki + Promtail centralized logging
- Cosign for container image signing
- Slack alert integrations
