marlondlx/azureguard
GitHub: marlondlx/azureguard
基于 Python 和 FastAPI 的 Azure 云合规性监控仪表盘,持续扫描订阅中的安全配置错误并通过邮件和 API 实时告警。
Stars: 0 | Forks: 0
# 🛡️ AzureGuard
**Azure 云合规性监控与告警仪表盘**
AzureGuard 是一个开源工具,可持续监控您的 Azure 订阅,以发现安全配置错误、治理漏洞和合规性违规——提供实时仪表盘、自动电子邮件告警,以及通过 GitHub Actions 实现的 CI/CD 集成。




## 📸 功能
- **实时合规性评分** (0–100),按严重程度加权
- **9 项内置合规规则**,涵盖存储、虚拟机、NSG 和治理
- **交互式仪表盘**,包含评分历史图表和严重程度细分
- **自动电子邮件告警**,针对严重和高危发现
- **GitHub Actions CI/CD**,每 6 小时执行一次计划扫描
- **REST API** (FastAPI),用于与其他工具集成
- **SQLite 持久化** — 无需外部数据库
## 🏗️ 架构
```
azureguard/
├── collector/ # Azure SDK data collection
│ └── azure_collector.py
├── alerts/ # Compliance engine + email alerts
│ ├── compliance_engine.py
│ └── alert_manager.py
├── api/ # FastAPI REST backend
│ └── main.py
├── dashboard/ # HTML/JS frontend
│ └── index.html
├── .github/workflows/ # GitHub Actions CI/CD
│ └── ci.yml
├── run_scan.py # CLI scan runner
└── requirements.txt
```
## ⚙️ 设置
### 1. 前置条件
- Python 3.11+
- Azure 订阅(免费层即可)
- 具有 `Reader` 角色的 Azure 服务主体
### 2. 创建 Azure 服务主体
```
az login
az ad sp create-for-rbac --name "azureguard-sp" --role Reader \
--scopes /subscriptions/
```
保存输出内容 —— 您将需要 `appId`、`password` 和 `tenant`。
### 3. 配置环境变量
创建一个 `.env` 文件(切勿将其提交至 Git):
```
AZURE_TENANT_ID=your-tenant-id
AZURE_CLIENT_ID=your-app-id
AZURE_CLIENT_SECRET=your-password
AZURE_SUBSCRIPTION_ID=your-subscription-id
# 可选:电子邮件警报
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your@gmail.com
SMTP_PASS=your-app-password
ALERT_EMAIL=alerts@yourcompany.com
```
### 4. 安装依赖
```
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
```
### 5. 运行仪表盘
```
uvicorn api.main:app --reload
```
打开 http://localhost:8000 并点击 **Run Scan**。
### 6. 运行 CLI 扫描
```
python run_scan.py
```
## 🔒 合规规则
| 规则 ID | 名称 | 严重程度 | 资源类型 |
|----------|-----------------------------------|----------|-------------------|
| STG-001 | 存储:仅限 HTTPS 流量 | HIGH | 存储账户 |
| STG-002 | 存储:Blob 公共访问 | CRITICAL | 存储账户 |
| STG-003 | 存储:最低 TLS 版本 | MEDIUM | 存储账户 |
| VM-001 | 虚拟机:资源标签 | LOW | 虚拟机 |
| VM-002 | 虚拟机:操作系统磁盘大小审查 | INFO | 虚拟机 |
| NSG-001 | NSG:无通配符入站规则 | CRITICAL | 网络安全组|
| GOV-001 | 治理:环境标签 | LOW | 所有资源 |
## 🚀 通过 GitHub Actions 实现 CI/CD
请将以下 secret 添加到您的 GitHub 仓库 (`Settings → Secrets`) 中:
- `AZURE_TENANT_ID`
- `AZURE_CLIENT_ID`
- `AZURE_CLIENT_SECRET`
- `AZURE_SUBSCRIPTION_ID`
- `SMTP_USER`、`SMTP_PASS`、`ALERT_EMAIL` (可选)
流水线将执行:
- **每次推送时**:lint + 测试
- **每 6 小时**:执行全面合规性扫描并上传 artifact
## 📡 API 参考
| 方法 | 端点 | 描述 |
|--------|--------------------|-----------------------------------|
| POST | `/api/scan` | 触发一次完整的 Azure 扫描 |
| GET | `/api/score` | 获取最新的合规性评分 |
| GET | `/api/resources` | 获取最新快照中的资源 |
| GET | `/api/compliance` | 合规性结果(可过滤) |
| GET | `/api/history` | 用于趋势图的评分历史 |
| GET | `/api/summary` | 按严重程度细分 |
交互式文档可在 http://localhost:8000/docs 查看
## 🤝 贡献
欢迎提交 Pull request。若要添加新的合规规则,请在 `alerts/compliance_engine.py` 中添加一个 `ComplianceRule` 条目 —— 无需进行其他更改。
## 📄 许可证
MIT © [Marlon Henrique Martins](https://github.com/marlondlx)
标签:AV绕过, Azure, Azure SDK, CSPM, FastAPI, GitHub Actions, HTTP/HTTPS抓包, LNA, Python, REST API, SMB, SQLite, TinkerPop, 云安全态势管理, 仪表盘, 前端应用, 合规监控, 存储安全, 安全告警, 安全治理, 开源安全工具, 态势感知, 无后门, 无线安全, 网络安全组, 网络测绘, 自动化巡检, 自动笔记, 虚拟机安全, 逆向工具, 逆向工程平台, 错误配置检测, 防御绕过