koushikchowdary6/iam-policy-auditor
GitHub: koushikchowdary6/iam-policy-auditor
一个离线运行的 AWS IAM 策略静态分析器,能够自动检测通配符、特权提升和公开暴露等风险权限并按严重级别报告,适合作为 CI 流水线中的策略安全防护栏。
Stars: 0 | Forks: 0
# IAM Policy 审计员 ☁️🔍
[](https://github.com/koushikchowdary6/iam-policy-auditor/actions/workflows/ci.yml)
一个用于 **AWS IAM policies** 的静态分析器。将其指向一个 policy JSON,它就会报告存在风险的权限——通配符、特权提升操作、公开暴露以及缺失的条件——每一项都附带严重级别和通俗易懂的解释。
它**完全离线运行**:它只分析你提供的 policy 文档,因此不需要 AWS 凭证,也绝不会接触实际的线上账户。这使得它可以安全地集成到 CI 中,作为 policy 变更的防护栏。
## 它会标记什么
| 检查项 | 严重性 | 为什么重要 |
|---|---|---|
| 在 `Resource: "*"` 上的 `Action: "*"` | 高 (HIGH) | 实际上等同于账户管理员 |
| 特权提升操作(例如 `iam:CreatePolicyVersion`、`iam:PassRole`、`sts:AssumeRole`) | 高 (HIGH) | 允许 principal 自行授予更多访问权限 |
| 无条件的 `Principal: "*"` | 高 (HIGH) | 资源暴露给所有账户/匿名访问 |
| 通配符操作(`s3:*`) | 中 (MEDIUM) | 会在无声无息中授予未来/危险的操作权限 |
| 敏感服务(iam、kms、s3、sts…)上的通配符资源 | 中 (MEDIUM) | 影响范围过大 |
| 没有 `Condition` 的通配符操作 | 低 (LOW) | 缺乏纵深防御(MFA、源 IP、标签) |
## 用法
```
python src/iam_auditor.py examples/admin_wildcard.json
python src/iam_auditor.py policy.json --json # machine-readable output
cat policy.json | python src/iam_auditor.py - # read from stdin
python src/iam_auditor.py policy.json --fail-on HIGH # exit 1 if any HIGH finding (for CI)
```
示例:
```
$ python src/iam_auditor.py examples/privilege_escalation.json
IAM Policy Audit — 1 HIGH, 0 MEDIUM, 0 LOW
[HIGH] Privilege-escalation action (statement #0)
Statement allows action(s) ['iam:createpolicyversion', 'iam:setdefaultpolicyversion']
commonly used to escalate privileges ...
```
## 将其用作 CI 防护栏
```
- run: python src/iam_auditor.py my-policy.json --fail-on HIGH
```
如果有人引入了高 (HIGH) 严重性的权限,构建将会失败。
## 测试
```
pip install pytest && python -m pytest tests/ -v
```
## 范围与声明
特权提升操作列表是基于广泛记录的提权路径精心挑选的初始集合——它**并非**详尽无遗,并且通过检查的结果并不能保证 policy 绝对安全。这是一个用于捕获常见错误的初筛 linter,不能替代完整的访问审查或诸如 AWS IAM Access Analyzer 之类的工具。
## 作者
Koushik Chowdary — [LinkedIn](https://linkedin.com/in/koushik-chowdary) · [GitHub](https://github.com/koushikchowdary6)
标签:安全规则引擎, 逆向工具