SarahGamalKotb/container-vulnerability-scanner
GitHub: SarahGamalKotb/container-vulnerability-scanner
一个基于 Trivy 的容器漏洞扫描平台,用于自动检测 Docker 镜像中的安全漏洞并提供可视化仪表板。
Stars: 0 | Forks: 0
# 🛡️ 容器漏洞扫描平台
**工程技术学院 — 计算机科学专业**
**Elsewedy 工程技术大学 | 2026 年春季学期**
## 📌 项目概述
该平台允许用户通过 API 提交 Docker 镜像名称,对其进行安全漏洞扫描,将结果存储在数据库中,并在一个实时仪表板上可视化展示所有信息。
### 系统组件
| 组件 | 描述 |
|------|------|
| **API 服务** | 用于提交 Docker 镜像名称的 FastAPI 后端 |
| **Worker 服务** | 基于 Trivy 的扫描器,在 Kubernetes Job 内运行 |
| **PostgreSQL 数据库** | 存储扫描结果、镜像元数据和历史记录 |
| **仪表板** | 基于 React 的 UI,用于可视化漏洞 |
| **ArgoCD** | GitOps 部署自动化 |
## 🏗️ 系统架构
```
User → API Service → Kubernetes Job (Trivy Scanner)
↓
PostgreSQL DB
↓
React Dashboard
↑
ArgoCD (GitOps sync)
```
## 🛠️ 使用技术
| 技术 | 用途 |
|------|------|
| **Docker** | 对 API、Worker 和仪表板进行容器化 |
| **KinD** | 本地 Kubernetes 集群 |
| **Kubernetes YAML** | 部署所有服务 |
| **Trivy CLI** | 在 K8s Job 内扫描 Docker 镜像的 CVE |
| **FastAPI** | REST API 端点 |
| **PostgreSQL** | 存储扫描结果和历史记录 |
| **ArgoCD** | GitOps 部署自动化 |
| **React + Vite** | 漏洞可视化仪表板 |
## 📁 项目结构
```
container-scanner/
│
├── api/ # FastAPI backend
│ ├── main.py # API routes and logic
│ ├── requirements.txt
│ └── Dockerfile
│
├── worker/ # Trivy scanner worker
│ ├── scanner.py # Scanning logic
│ ├── requirements.txt
│ └── Dockerfile
│
├── dashboard/ # React frontend
│ ├── src/
│ │ ├── App.jsx # Main dashboard component
│ │ ├── main.jsx
│ │ └── index.css
│ ├── dist/ # Built production files
│ ├── Dockerfile
│ ├── nginx.conf
│ └── vite.config.js
│
├── database/
│ └── init.sql # PostgreSQL schema
│
├── k8s/ # Kubernetes manifests
│ ├── base/
│ │ ├── namespace.yaml
│ │ ├── api.yaml
│ │ ├── worker.yaml
│ │ ├── dashboard.yaml
│ │ └── postgres.yaml
│ └── argocd/
│ ├── application.yaml
│ └── README.md
│
├── kind-config.yaml # KinD cluster config
└── docker-compose.yml # Local dev setup
```
## 🚀 如何运行
### 选项 1 — 使用 Docker Compose 本地运行 (快速开始)
```
git clone
cd container-scanner
docker-compose up --build
```
然后打开:`http://localhost:3000`
### 选项 2 — 完整 Kubernetes 部署
**步骤 1 — 创建 KinD 集群:**
```
kind create cluster --config kind-config.yaml
```
**步骤 2 — 应用 Kubernetes 清单:**
```
kubectl apply -f k8s/base/namespace.yaml
kubectl apply -f k8s/base/postgres.yaml
kubectl apply -f k8s/base/api.yaml
kubectl apply -f k8s/base/worker.yaml
kubectl apply -f k8s/base/dashboard.yaml
```
**步骤 3 — 部署 ArgoCD:**
```
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl apply -f k8s/argocd/application.yaml
```
**步骤 4 — 访问仪表板:**
```
kubectl port-forward svc/dashboard -n scanner 3000:80
```
## ☁️ 扩展云服务选项
### 亚马逊云科技
- 扫描来自 **Amazon ECR** 的镜像
- 在 **EKS** 上部署
- 将结果存储在 **RDS** 中
### 微软 Azure
- 扫描来自 **Azure Container Registry** 的镜像
- 在 **AKS** 上部署
- 使用 **Azure SQL**
### 谷歌云平台
- 扫描来自 **Artifact Registry** 的镜像
- 在 **GKE** 上部署
- 使用 **Cloud SQL**
## 📚 课程信息
- **课程:** 云计算
标签:ArgoCD, AV绕过, Claude, CVE检测, Docker镜像扫描, FastAPI, GitOps, PostgreSQL, React仪表盘, Web截图, 子域名突变, 容器化安全, 容器安全, 微服务安全, 测试用例, 特权提升, 自动化部署, 请求拦截, 镜像漏洞检测