marlondlx/azureguard

GitHub: marlondlx/azureguard

基于 Python 和 FastAPI 的 Azure 云合规性监控仪表盘,持续扫描订阅中的安全配置错误并通过邮件和 API 实时告警。

Stars: 0 | Forks: 0

# 🛡️ AzureGuard **Azure 云合规性监控与告警仪表盘** AzureGuard 是一个开源工具,可持续监控您的 Azure 订阅,以发现安全配置错误、治理漏洞和合规性违规——提供实时仪表盘、自动电子邮件告警,以及通过 GitHub Actions 实现的 CI/CD 集成。 ![Python](https://img.shields.io/badge/Python-3.11-blue?logo=python) ![FastAPI](https://img.shields.io/badge/FastAPI-0.111-green?logo=fastapi) ![Azure](https://img.shields.io/badge/Azure-SDK-0078d4?logo=microsoftazure) ![License](https://img.shields.io/badge/License-MIT-lightgrey) ## 📸 功能 - **实时合规性评分** (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, 云安全态势管理, 仪表盘, 前端应用, 合规监控, 存储安全, 安全告警, 安全治理, 开源安全工具, 态势感知, 无后门, 无线安全, 网络安全组, 网络测绘, 自动化巡检, 自动笔记, 虚拟机安全, 逆向工具, 逆向工程平台, 错误配置检测, 防御绕过