CyberEnthusiastic/iam-least-privilege-analyzer
GitHub: CyberEnthusiastic/iam-least-privilege-analyzer
零依赖的 AWS IAM 策略静态分析工具,内置 12 条 CIS 映射规则和权限提升检测,可生成交互式暗色 HTML 报告并输出风险评分,适用于 CI/CD 集成和离线合规审计。
Stars: 1 | Forks: 0
# IAM 最小权限分析器
[](./LICENSE)
[](https://www.python.org/downloads/)
[](./.github/workflows/iam.yml)
[](https://www.cisecurity.org/benchmark/amazon_web_services)
## 它的功能(一张终端输出截图即可说明)
```
============================================================
IAM Least-Privilege Analyzer v1.0
============================================================
[*] Total findings: 11
[*] Breakdown : {'CRITICAL': 4, 'HIGH': 5, 'MEDIUM': 2, 'LOW': 0}
[CRITICAL] Wildcard Action with Wildcard Resource (Admin equivalent)
samples/overly_permissive_admin.json stmt[0]:BadAdminAllowAll (risk=99.4, CIS AWS 1.22)
> Action="*" Resource="*"
[CRITICAL] Cross-account trust with wildcard Principal
samples/bad_trust_policy.json stmt[0]:AllowAnyone (risk=97.2, CIS AWS 1.16)
> Principal={'AWS': '*'}
[CRITICAL] Dangerous IAM privilege escalation action
samples/overly_permissive_admin.json stmt[3]:BadPassRoleUnrestricted (risk=95.8, AWS WA SEC 03)
> Action="iam:PassRole" Resource="*"
```
并生成带有按结果钻取功能的交互式暗色模式 HTML 报告:
- 严重性标签 · 规则 ID · 风险评分 · 操作 · 资源 · CIS 映射 · 修复建议 · 建议的修正方案
## 截图(本地运行,零配置)
**终端输出** - 您在命令行中看到的确切内容:

**交互式 HTML 仪表盘** - 可在任何浏览器中打开,暗色模式,支持过滤:

这两张截图均截取自针对捆绑的 `samples/` 目录进行的真实本地运行。使用下方的快速开始命令即可重现。
## 为什么你需要它
| | **IAM 最小权限分析器** | AWS Access Analyzer | Cloudsplaining | Ermetic |
|---|---|---|---|---|
| **价格** | 免费 (MIT) | 免费(绑定账户) | 免费 (OSS) | $$$$ |
| **运行时依赖** | **无** — 纯标准库 | AWS 控制台 | Python + graphviz | SaaS |
| **安装时间** | `git clone && python analyzer.py` | IAM 角色设置 | `pip install cloudsplaining` | 入职沟通 |
| **离线 / 物理隔离** | 是 | 否 | 是 | 否 |
| **权限提升规则** | 12 项内置 | 有限 | 40+ | 是 |
| **信任策略审查** | 是 | 是 | 部分 | 是 |
| **交互式 HTML 报告** | 内置 | 仅控制台 | 单独步骤 | SaaS |
| **ML 风格风险评分** | 是 (0-100) | 否 | 否 | 专有 |
| **使用 Python 扩展** | 10 行代码 | 否 | Python | 否 |
## 60 秒快速开始
```
# 克隆
git clone https://github.com/CyberEnthusiastic/iam-least-privilege-analyzer.git
cd iam-least-privilege-analyzer
# 运行 (零安装 - 纯 Python 3.8+ stdlib)
python analyzer.py samples/
# 打开 HTML 报告
start reports/iam_report.html # Windows
open reports/iam_report.html # macOS
xdg-open reports/iam_report.html # Linux
```
### 备选方案:一键安装程序
```
# Linux / macOS / WSL / Git Bash
./install.sh
# Windows PowerShell
.\install.ps1
```
### 备选方案:Docker
```
docker build -t iam-analyzer .
docker run --rm -v "$PWD/policies:/app/policies" iam-analyzer analyzer.py policies/
```
## 检测内容(12 个规则类)
| ID | 规则 | 严重性 | CIS / AWS 映射 |
|----|------|----------|-------------------|
| IAM-001 | 带有通配符资源的通配符操作(相当于管理员) | CRITICAL | CIS AWS 1.22 |
| IAM-002 | 通配符操作 `"Action": "*"` | HIGH | CIS AWS 1.22 |
| IAM-003 | 通配符资源 `"Resource": "*"` | HIGH | AWS WA SEC 03 |
| IAM-004 | 服务级通配符(例如 `s3:*`、`iam:*`) | HIGH | AWS WA SEC 03 |
| IAM-005 | 权限提升操作 | CRITICAL | AWS WA SEC 03 |
| IAM-006 | `NotAction` 与 `Effect: Allow` 一起使用(拒绝列表反模式) | MEDIUM | AWS WA SEC 03 |
| IAM-007 | 敏感操作缺少 Condition 块 | MEDIUM | AWS WA SEC 03 |
| IAM-008 | 没有 VPC/SourceIp 条件的数据泄露操作 | HIGH | AWS WA SEC 04 |
| IAM-009 | `kms:Decrypt` 没有资源/授权范围限制 | HIGH | AWS WA SEC 08 |
| IAM-010 | 带有通配符 Principal 的跨账户信任 | CRITICAL | CIS AWS 1.16 |
| IAM-011 | 用户上的内联策略(应使用组) | LOW | CIS AWS 1.15 |
| IAM-012 | 信任策略允许任何 AWS 服务 (`Service: "*"`) | HIGH | AWS WA SEC 02 |
有关完整定义,请参阅 `analyzer.py` 中的 `IAM_RULES` 和 `PRIVESC_ACTIONS`。
## 风险评分器的工作原理
`IAMRiskScorer` 融合多种信号,为每项发现生成 0-100 的评分:
- **模式置信度**(基础分 60)- 每条规则附带 0.70-0.99 的手工校准置信度
- **缺少 Condition** (+12) - 敏感操作没有 MFA / SourceIp / VPC 条件
- **敏感服务** (+10) - iam、kms、sts、secretsmanager、organizations
- **数据泄露操作** (+8) - s3:GetObject、secretsmanager:GetSecretValue 等
- **通配符资源** (+8) - `Resource: "*"` 带有任何非通配符操作
- **严重性加分** - +12 CRITICAL、+6 HIGH、+2 MEDIUM
对单个密钥执行的普通 `kms:Decrypt` 得分约为 65,但带有 `Resource: "*"` 且没有条件的 `kms:Decrypt` 得分会飙升至约 95。上下文 > 单纯的模式匹配。
## 扫描你自己的策略
```
# 扫描单个 policy JSON
python analyzer.py path/to/role-policy.json
# 扫描 policy 文件目录
python analyzer.py path/to/terraform/policies/
# 自定义输出路径
python analyzer.py policies/ -o out.json --html out.html
```
分析器支持三种输入格式:
1. **原始策略文档** - `{"Version":"2012-10-17","Statement":[...]}`
2. **带有 `PolicyDocument` 的包装对象** - `aws iam get-policy-version` 的输出
3. **带有 `AssumeRolePolicyDocument` 的角色文档** - 信任策略
## CI/CD 集成(遇到 CRITICAL 发现时使构建失败)
将以下内容添加到 `.github/workflows/iam.yml`:
```
- name: Run IAM Analyzer
run: python analyzer.py terraform/iam/
- name: Fail on CRITICAL
run: |
python -c "
import json, sys
r = json.load(open('reports/iam_report.json'))
if r['summary']['by_severity']['CRITICAL'] > 0:
print('CRITICAL IAM findings detected')
sys.exit(1)
"
```
## 扩展规则引擎
向 `IAM_RULES` 添加新规则:
```
{
"id": "IAM-013",
"name": "EC2 full access without tag condition",
"severity": "HIGH",
"confidence": 0.85,
"cis": "AWS WA SEC 03",
"remediation": "Scope ec2:* to resources with aws:ResourceTag/env=dev condition.",
},
```
然后在 `analyze_statement()` 中添加匹配逻辑。无需 YAML,无需插件。
## 项目结构
```
iam-least-privilege-analyzer/
|-- analyzer.py # main analyzer + 12 rules + risk scorer
|-- report_generator.py # dark-mode HTML report
|-- samples/ # intentionally bad policies for demos
| |-- overly_permissive_admin.json
| |-- bad_trust_policy.json
| `-- good_least_privilege.json
|-- reports/ # output (gitignored)
|-- Dockerfile # containerized runs
|-- install.sh # one-command installer (Linux/Mac/WSL)
|-- install.ps1 # one-command installer (Windows)
|-- requirements.txt # empty - pure stdlib
|-- README.md # this file
|-- LICENSE # MIT
|-- NOTICE # attribution
|-- SECURITY.md # vulnerability disclosure policy
`-- CONTRIBUTING.md # how to add rules / send PRs
```
## 路线图
- [ ] 直接解析 AWS Terraform 状态 (`terraform show -json`)
- [ ] 由 CloudTrail 驱动的“未使用权限”检测器
- [ ] 针对AWS Organizations的 SCP (Service Control Policy) 分析
- [ ] 用于 GitHub Code Scanning 的 SARIF 输出
- [ ] 与 IAM Access Analyzer 结果集成
## 许可证
MIT。详见 [LICENSE](./LICENSE) 和 [NOTICE](./NOTICE)。
## 安全
负责任的披露政策:参见 [SECURITY.md](./SECURITY.md)。
## 贡献
欢迎提交 PR!从复刻到合并 PR 的快捷路径请参见 [CONTRIBUTING.md](./CONTRIBUTING.md)。
由 **[Mohith Vasamsetti (CyberEnthusiastic)](https://github.com/CyberEnthusiastic)** 作为 [AI Security Projects](https://github.com/CyberEnthusiastic?tab=repositories) 套件的一部分构建 - 这是一套零依赖、商业级的安全工具,专为希望获得真正安全性而不产生高昂 SaaS 费用的工程师和团队打造。
标签:Anthropic, AWS, CIS基准, CSV导出, DPI, HTML报告, IAM, IAM策略, LNA, Python, 安全合规, 态势管理, 无后门, 最小权限, 权限分析, 权限提升检测, 网络代理, 自动化安全工具, 请求拦截, 零依赖