MohsanRazaq/CloudGuard
GitHub: MohsanRazaq/CloudGuard
CloudGuard 是一款可扩展的云安全扫描器,用于自动识别 AWS S3 等云资源的配置错误并生成可操作的安全报告。
Stars: 1 | Forks: 0

# ☁️ CloudGuard
**当前云服务商:** Amazon Web Services (AWS)
**当前服务:** Amazon S3
CloudGuard 是一个开源的云安全评估工具,旨在帮助开发者、云工程师和安全专业人员在部署之前发现不安全的云配置。该项目目前侧重于 Amazon S3 安全评估,并采用模块化架构构建,可以在未来的版本中扩展到其他 AWS 服务和其他云提供商。
## 为什么选择 CloudGuard?
云环境功能强大,但随着基础设施的增长,安全防护可能会变得困难。简单的配置错误——例如禁用加密、缺失版本控制或存储桶可公开访问——可能会导致安全事件、违规合规以及不必要的审计成本。
CloudGuard 通过扫描云资源并生成清晰、可执行的安全发现,帮助自动识别这些问题。
CloudGuard 不会用原始的 API 响应让用户感到不知所措,而是呈现:
- 可执行的安全发现
- 基于风险的严重程度等级
- 安全评分
- 扫描摘要
- 用于自动化的 JSON 报告
## 🚧 项目状态
CloudGuard 目前正在积极开发中。
### ✅ 已实现
- AWS S3 安全扫描器
- 存储桶版本控制检查
- 存储桶加密检查
- 存储桶 ACL 审查
- 公共访问阻止验证
- 存储桶策略分析
- 服务器访问日志检查
- 安全评分计算
- 风险分类
- 彩色 CLI 输出
- JSON 报告导出
- 扫描摘要
### 🔄 进行中
- 改进的 HTML 报告
- 高级安全评分
- 更多单元测试
### 📌 计划中
- IAM 安全评估
- CloudTrail 验证
- EC2 安全检查
- 安全组分析
- EBS 加密检查
- Azure 支持
- Google Cloud 支持
## ✨ 功能
### 🔍 安全评估
CloudGuard 目前对 Amazon S3 存储桶执行自动安全评估,包括:
- ✅ 存储桶版本控制验证
- ✅ 服务器端加密验证
- ✅ 存储桶 ACL (Access Control List) 审查
- ✅ 公共访问阻止验证
- ✅ 存储桶策略分析
- ✅ 服务器访问日志验证
### 📊 安全报告
每次扫描后,CloudGuard 会生成:
- 风险加权安全评分
- 总体风险级别(低 / 中 / 高)
- 彩色终端输出
- 基于存储桶的安全发现
- 严重程度分类(严重、高、中、低)
- 可执行的修复建议
- 用于自动化和进一步分析的 JSON 报告导出
### 🏗️ 模块化架构
CloudGuard 的设计易于扩展。
当前模块包括:
- AWS 会话管理
- S3 资源发现
- 独立安全检查模块
- 发现引擎
- 报告引擎
- 日志工具
- 配置加载器
这种模块化架构允许以最少的代码更改添加新的安全检查和云服务。
### ⚙️ 配置
CloudGuard 支持通过 `config.json` 进行可配置的扫描。
当前可配置的扫描模块包括:
- `scan_s3`
- `scan_iam`
- `scan_vpc`
随着开发的继续,将支持更多模块。
### 🚀 未来扩展
CloudGuard 正在开发为一个多云安全评估平台。
计划支持:
- AWS IAM
- AWS CloudTrail
- AWS EC2
- AWS 安全组
- AWS EBS
- AWS KMS
- Azure
- Google Cloud Platform (GCP)
## 🏛️ 架构
CloudGuard 采用模块化架构,其中每个组件都有单一职责。这使得扫描器易于维护、测试,并能够方便地扩展额外的云服务和安全检查。
```
+----------------------+
| CloudGuard |
| (cloudguard.py) |
+----------+-----------+
|
+----------------+----------------+
| |
▼ ▼
+----------------+ +----------------+
| AWS Session | | Configuration |
| (boto3 Client) | | config.json |
+-------+--------+ +----------------+
|
▼
+----------------------+
| Resource Discovery |
| S3 Buckets |
+----------+-----------+
|
▼
+---------------------------------------------+
| Security Check Engine |
+---------------------------------------------+
| | | | | |
▼ ▼ ▼ ▼ ▼ ▼
Version Encryption ACL Public Logging Policy
Block
|
▼
+------------------+
| Finding Objects |
+------------------+
|
▼
+---------------------+
| Reporting Engine |
+---------------------+
| |
▼ ▼
CLI Summary JSON Report
```
### 核心组件
| 模块 | 职责 |
|---------|----------------|
| **AWS 会话** | 创建经过身份验证的 boto3 客户端 |
| **资源发现** | 发现要进行扫描的 AWS 资源 |
| **安全检查** | 执行独立的安全验证模块 |
| **发现引擎** | 以一致的格式表示扫描结果 |
| **报告引擎** | 生成终端摘要和 JSON 报告 |
| **日志记录器** | 存储扫描日志以用于审计和故障排除 |
| **配置加载器** | 使用 `config.json` 启用或禁用扫描模块 |
### 设计原则
CloudGuard 围绕以下几个工程原则构建:
- 模块化架构
- 单一职责原则 (SRP)
- 可扩展的安全检查框架
- 扫描和报告逻辑分离
- 可重用的 Finding 模型
- 可配置的扫描执行
# 🚀 快速开始
## 前置条件
在运行 CloudGuard 之前,请确保您具备:
- Python **3.10+**
- 一个 AWS 账户
- 配置了有效凭证的 AWS CLI
- 互联网连接
## 克隆仓库
```
git clone https://github.com/MohsanRazaq/CloudGuard.git
cd CloudGuard
```
## 创建虚拟环境
```
python -m venv .venv
```
### Linux / macOS
```
source .venv/bin/activate
```
### Windows
```
.venv\Scripts\activate
```
## 安装依赖
```
pip install -r requirements.txt
```
## 配置 AWS 凭证
CloudGuard 使用 **boto3** 提供的默认 AWS 凭证链。
如果尚未配置 AWS CLI,请运行:
```
aws configure
```
提供:
```
AWS Access Key ID
AWS Secret Access Key
Default Region
Output Format (json)
```
CloudGuard 会在扫描过程中自动使用这些凭证。
## 配置扫描模块
编辑 `config.json` 以启用或禁用扫描模块。
示例:
```
{
"scan_s3": true,
"scan_iam": false,
"scan_vpc": false
}
```
## 运行 CloudGuard
```
python cloudguard.py
```
## 输出示例
```
CLOUD GUARD
Running Tasks : scan_s3
------------------------------------------------------------
S3 SECURITY ASSESSMENT
------------------------------------------------------------
[RESOURCE] cloudguard-example
↳ [Medium] Versioning
↳ [PASS] Encryption
↳ [High] Public Access Block
↳ [PASS] Bucket ACL
============================================================
SCAN SUMMARY
============================================================
Security Score : 82/100
Risk Level : MEDIUM
Buckets Scanned: 5
```
## 安全评分如何计算
每次扫描都以 100 的满分开始。未通过安全检查会扣除相应的分数,并根据严重程度进行加权:
| 严重程度 | 每项发现扣除的分数 |
|----------|------------------------------|
| 严重 | 25 |
| 高 | 10 |
| 中 | 5 |
| 低 | 2 |
最终得分决定总体风险级别:
| 得分范围 | 风险级别 |
|-------------|------------|
| 90–100 | 低风险 |
| 70–89 | 中风险 |
| 70 分以下 | 高风险 |
得分下限为 0 —— 包含许多严重发现的资源将显示为 0/100,而不是负数。
## ✅ 测试环境
| 组件 | 版本 |
|-----------|---------|
| Python | 3.12 |
| Ubuntu | 24.04 LTS |
| boto3 | 最新版 |
| AWS CLI | v2 |
# 📂 项目结构
```
CloudGuard/
│
├── cloudguard.py # Main application entry point
├── config.json # Scan configuration
├── requirements.txt # Project dependencies
├── README.md
│
├── cloudguard/
│ │
│ ├── aws/
│ │ ├── session.py # AWS session management
│ │ └── s3_scanner.py # S3 resource discovery
│ │
│ ├── security_checks/
│ │ ├── check_bucket_versioning.py
│ │ ├── check_bucket_encryption.py
│ │ ├── check_bucket_acl.py
│ │ ├── check_bucket_logging.py
│ │ ├── check_bucket_policy.py
│ │ └── check_bucket_public_block.py
│ │
│ ├── reporting/
│ │ ├── summary.py
│ │ └── json_export.py
│ │
│ ├── utils/
│ │ ├── config_loader.py
│ │ └── logger.py
│ │
│ ├── findings.py # Finding model
│ └── constants.py # Global constants
│
├── logs/
│
├── tests/
│
└── docs/
```
## 目录概述
| 目录 | 用途 |
|-----------|----------|
| **aws/** | AWS 身份验证和资源发现 |
| **security_checks/** | 独立安全验证模块 |
| **reporting/** | CLI 摘要和报告生成 |
| **utils/** | 日志记录和配置助手 |
| **tests/** | 安全检查的单元测试 |
| **logs/** | 扫描日志 |
| **docs/** | 文档和截图 |
# 🧠 CloudGuard 的工作原理
CloudGuard 遵循简单的扫描 pipeline。
```
Start Scan
│
▼
Load Configuration
│
▼
Create AWS Session
│
▼
Discover Resources
│
▼
Execute Security Checks
│
▼
Generate Findings
│
▼
Calculate Security Score
│
▼
Generate Reports
│
├── Terminal Report
└── JSON Report
```
每个安全检查独立运行,并返回一个标准化的 `Finding` 对象。
这种模块化设计允许在不修改核心扫描引擎的情况下添加新的安全检查和云服务。
## 📄 JSON 报告示例
```
{
"scan_metadata": {
"engine": "CloudGuard",
"version": "v1.0.0",
"timestamp": "2026-07-04 00:57:59",
"tasks_run": [
"scan_s3"
]
},
"findings": [
{
"check": "Public Access Block",
"resource": "cloudguard-learning-bucket-test",
"passed": false,
"severity": "HIGH",
"issue": "Public Access block is incomplete or disabled",
"recommendation": "Enable All 4 public Access Block Setting"
}
]
}
```
CloudGuard 导出完整的 JSON 报告,可集成到仪表板、CI/CD pipeline 或其他自动化工作流中。
# 🗺️ 路线图
## 版本 0.2
- [ ] HTML 报告生成
- [ ] CSV 报告导出
- [ ] 增强的风险评分引擎
- [ ] 扩大单元测试覆盖率
- [ ] 使用 GitHub Actions 进行自动化测试 (CI)
## 版本 0.3
- [ ] IAM 安全评估
- [ ] CloudTrail 安全检查
- [ ] EC2 安全评估
- [ ] 安全组分析
## 版本 0.4
- [ ] 多区域扫描
- [ ] 多账户支持
- [ ] Docker 支持
- [ ] GitHub Actions CI
## 版本 1.0
- [ ] Azure 支持
- [ ] Google Cloud Platform 支持
- [ ] 插件系统
- [ ] Web 仪表板
## 💡 为什么我要开发 CloudGuard
创建 CloudGuard 是作为一个实践性的云安全项目,旨在加深我对 AWS 安全服务和安全软件设计的理解。
我不仅仅依赖于现有的安全工具,而是希望从头开始构建一个扫描器,以了解云安全评估在内部是如何运作的——从 AWS API 交互到发现生成和报告。
长远愿景是将 CloudGuard 发展成为一个支持 AWS、Azure 和 Google Cloud 的模块化多云安全评估平台。
# 📸 截图
## CloudGuard 扫描
显示发现的资源、安全发现和修复建议。

## 扫描摘要
显示安全评分、扫描持续时间、严重程度细分和总体风险级别。

## JSON 报告
CloudGuard 导出机器可读的 JSON 报告,以用于自动化和集成。

# ✅ 当前安全检查
| 检查项 | 状态 |
|--------|--------|
| 存储桶版本控制 | ✅ |
| 存储桶加密 | ✅ |
| 存储桶 ACL 审查 | ✅ |
| 公共访问阻止 | ✅ |
| 存储桶日志记录 | ✅ |
| 存储桶策略 | ✅ |
| 安全评分 | ✅ |
| JSON 报告 | ✅ |
| CLI 摘要 | ✅ |
# 📈 项目指标
- 编程语言:Python
- 云提供商:AWS
- 支持的服务:Amazon S3
- 安全检查:6 项
- 报告格式:CLI、JSON
- 架构:模块化
# 🤝 贡献
欢迎您的贡献!
如果您想改进 CloudGuard:
1. Fork 该仓库。
2. 创建一个功能分支。
3. 提交您的更改。
4. 发起一个 Pull Request。
我们始终欢迎 Bug 报告、功能请求和安全建议。
# 📄 许可证
该项目基于 MIT 许可证授权。
# 🙏 致谢
CloudGuard 使用以下技术构建:
- AWS SDK for Python (boto3)
- Python
- AWS 文档
标签:AWS, DPI, GraphQL安全矩阵, 安全合规, 安全扫描器, 网络代理, 逆向工具