exorrtech/exorr-azure-audit

GitHub: exorrtech/exorr-azure-audit

一款纯 Python 编写的 Azure 与 Entra ID 安全错误配置扫描器,支持实时云端扫描与离线模板分析,帮助团队在攻击者之前发现危险配置。

Stars: 0 | Forks: 0

# EXORR Azure 审计 ![Python 3.9+](https://img.shields.io/badge/python-3.9%2B-blue.svg) ![MIT License](https://img.shields.io/badge/license-MIT-green.svg) ![Version 1.0.0](https://img.shields.io/badge/version-1.0.0-orange.svg) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0675e17c6c091005.svg)](https://github.com/exorrtech/exorr-azure-audit/actions/workflows/ci.yml) **Azure & Entra ID 安全错误配置扫描器** — 在攻击者之前发现危险的默认配置。 EXORR Azure Audit 会扫描您的 Azure 订阅和 Entra ID 租户,查找常见的安全错误配置。它支持通过 Azure CLI (`az`) 进行**实时扫描**,以及对导出的 ARM 模板和 Entra ID 目录设置进行**离线分析** —— 无需访问云端。 ## 功能 - **实时扫描** — 通过 `az CLI` 对运行中的 Azure 订阅执行检查 - **离线 ARM 模板分析** — 在无需连接云端的情况下,审计导出的 ARM 模板和 Entra ID JSON - **6 项安全检查**,涵盖 RBAC、Key Vault、NSG、Entra ID、Storage 和 App Service - **多种输出格式** — JSON、Markdown 和 HTML 报告 - **严重性过滤** — 根据严重性阈值过滤检测结果 - **Dry-run 模式** — 列出可用的检查而不执行它们 - **零运行时依赖** — 纯 Python 编写,仅在实时扫描时需要 `az CLI` ## 技术栈 `Python 3.9+` `CLI` `JSON/Markdown/HTML 报告` ## 安装说明 ``` pip install exorr-azure-audit ``` 或从源码安装: ``` git clone https://github.com/exorrtech/exorr-azure-audit.git cd exorr-azure-audit pip install . ``` 用于开发环境: ``` pip install ".[dev]" pytest ``` ## 使用说明 ### Dry-run(仅列出检查而不运行) ``` exorr-azure-audit --dry-run ``` ### 离线扫描(ARM 模板 + Entra ID 导出) ``` exorr-azure-audit --offline --arm-file template.json --entra-file entra.json --format markdown ``` ### 实时扫描(需要 `az login`) ``` exorr-azure-audit --subscription-id --format html -o report.html ``` ### 按指定检查进行过滤 ``` exorr-azure-audit --checks rbac,keyvault,storage --severity-threshold high ``` ## 安全检查 **检查 ID** — **名称** — **类别** — **严重性** — **描述** - `rbac-owner-count` — 过多的 Owner 角色分配 — **RBAC** — 🔴 高 — 太多的 Owner 主体会扩大影响范围 - `keyvault-purge-protection` — Key Vault 清除保护 — **KeyVault** — 🔴 严重 — 未启用清除保护的保管库可能会导致密钥被永久删除 - `nsg-open-ingress` — 过于宽松的 NSG 规则 — **NSG** — 🔴 高 — 允许来自 `*` 的入站流量访问 SSH/RDP 端口的 NSG - `entra-mfa-enforcement` — Entra ID MFA 强制执行 — **Entra** — 🔴 严重 — 未启用 MFA 的用户容易受到凭证攻击 - `storage-public-access` — Storage 账户公开访问 — **Storage** — 🔴 高 — 启用了公开 blob 访问的 Storage 账户可能会泄露数据 - `appservice-https-only` — App Service HTTPS 强制执行 — **AppService** — 🟡 中 — 允许 HTTP 的 App Services 容易受到 MITM 攻击 ## 输出格式 | 格式 | 标志 | 描述 | |--------|------|-------------| | JSON | `--format json` | 结构化的机器可读报告,包含完整的检查元数据 | | Markdown | `--format markdown` | 人类可读的报告,包含检测结果摘要和修复建议 | | HTML | `--format html` | 带样式且独立运行的 HTML 报告,使用颜色标注严重性级别 | ## 项目结构 ``` exorr-azure-audit/ ├── exorr_azure_audit/ │ ├── __init__.py # Package version & metadata │ ├── __main__.py # python -m entry point │ ├── cli.py # CLI argument parsing & main loop │ ├── scanner.py # AzureScanner — live & offline execution │ ├── report.py # AuditReportGenerator — JSON/MD/HTML output │ └── checks/ │ ├── __init__.py │ └── registry.py # All check definitions (live + offline) ├── tests/ │ ├── __init__.py │ ├── test_offline_scanner.py # 6 passing tests │ ├── sample_arm.json # Sample ARM template for offline tests │ └── sample_entra.json # Sample Entra ID export for offline tests ├── pyproject.toml ├── LICENSE ├── README.md └── .gitignore ``` ## 环境要求 - **Python 3.9+** - **Azure CLI** (`az`) — 仅在实时扫描时需要;离线模式下不需要 在进行实时扫描时,请设置 `AZURE_SUBSCRIPTION_ID` 或传入 `--subscription-id`。在运行实时检查之前,请使用 `az login` 进行身份验证。 ## 许可证 该项目基于 [MIT License](LICENSE) 授权。 *漫步于虚空。**∅ EXORR***
标签:Azure, Python, StruQ, 无后门, 聊天机器人, 逆向工具, 配置扫描