0xBahalaNa/policy-checker
GitHub: 0xBahalaNa/policy-checker
轻量级 AWS IAM 策略合规检查工具,扫描权限过度授予问题并映射到 NIST 800-53、FedRAMP 和 CJIS v6.0 控制项。
Stars: 1 | Forks: 1
# Policy Checker
[](https://github.com/0xBahalaNa/policy_checker/actions/workflows/policy-check.yml)
此脚本加载 AWS IAM policy 文件并检查其是否存在权限过度授予的情况。
## 使用方法
```
python policy_checker.py [--output text|json]
```
### 示例
```
python policy_checker.py policy.json
python policy_checker.py policy.json --output json
python policy_checker.py policy.json --output json > results.json
```
## 功能说明
- 加载 JSON policy 文件。
- 遍历 `Statement` 条目。
- 检查过度权限,例如:
- `Action` 为 `*`
- `Resource` 为 `*`
- 服务级通配符(例如 `s3:*`, `iam:*`)
- 对标记为 CJI 的资源执行 CJIS v6.0 检查:
- 缺少 MFA 条件 (`aws:MultiFactorAuthPresent`)
- 无组织限制的跨账户访问
- 将发现映射到 NIST 800-53 和 CJIS v6.0 合规控制项。
- 打印结果摘要。
## 合规性映射
每次检查均映射到 NIST 800-53 Rev 5、FedRAMP 和 CJIS v6.0 的控制项:
| 检查项 | NIST 800-53 | FedRAMP | CJIS v6.0 |
|-------|-------------|---------|-----------|
| Action 为 `*` | AC-6 (Least Privilege) | AC-6 | AC-6 |
| Resource 为 `*` | AC-3 (Access Enforcement) | AC-3 | AC-3 |
| 服务级通配符(例如 `s3:*`) | AC-6 (Least Privilege) | AC-6 | AC-6 |
| 过度宽松的 IAM policy | AC-2 (Account Management) | AC-2 | AC-2 |
| 无 MFA 访问 CJI 资源 | IA-2 (Identification and Authentication) | IA-2 | IA-2 |
| 跨账户访问 CJI 资源 | AC-2 (Account Management) | AC-2 | AC-2 |
### 这对审计有何帮助
JSON 输出 (`--output json`) 为合规性评估提供了机器可读的证据。审计人员可以使用此输出验证 CM-6 (Configuration Settings)、CM-7 (Least Functionality) 和 SA-11 (Developer Testing) 控制项。每项发现都包含合规框架、控制项 ID、严重程度以及用于审计追踪的 UTC 时间戳。
### FedRAMP 20x 对齐
FedRAMP 20x 要求通过自动化的机器可读证据而非手动文档来验证合规控制项。`--output json` 格式生成的结构化发现可直接输入基于 OSCAL 的证据流水线。每项发现都包含持续监控和授权包所需的框架、控制项 ID、严重程度、资源和 UTC 时间戳。
### CJIS v6.0 相关性
CJIS v6.0(2026 年 4 月 1 日生效)与 NIST 800-53 Rev 5 保持一致,但增加了针对处理刑事司法信息 (CJI) 系统的特定要求。此工具验证 IAM policy 是否对 CJI 资源强制执行最小权限 (AC-6)、访问控制执行 (AC-3) 和 MFA 要求 (IA-2),帮助机构证明管理 CJI 数据存储的 AWS 权限范围是适当的。
## 输出格式
### 文本 (默认)
用于终端使用的人类可读输出。
```
Checking: test-policy.json
[FAIL] Statement "DangerousAdmin01": Action is "*"
[FAIL] Statement "DangerousAdmin01": Resource is "*"
[FAIL] Statement "CJIAccessNoMFA": CJI resource access without MFA condition (aws:MultiFactorAuthPresent)
[WARN] Statement "CJICrossAccount": Cross-account access to CJI resource without org restriction
Results: 4 issues found.
```
### JSON (`--output json`)
用于自动化和合规流水线的结构化输出。每项发现包含 `framework`、`control_id`、`finding`、`severity`、`resource` 和 `timestamp`。
```
[
{
"framework": "NIST 800-53",
"control_id": "AC-6",
"finding": "Action is \"*\"",
"severity": "FAIL",
"resource": "test-policy.json",
"timestamp": "2026-02-14T12:00:00+00:00"
}
]
```
## 测试
```
python -m pytest tests/ -v
```
## 环境要求
- Python 3.x
## 许可证
- MIT License
标签:AWS, CJIS v6.0, DevSecOps, DPI, FedRAMP, Homebrew安装, IAM, JSON分析, NIST 800-53, Python, 上游代理, 云安全监控, 人工智能安全, 合规性, 安全合规, 文档结构分析, 无后门, 最小权限, 权限扫描, 策略检查, 网络代理, 身份与访问管理, 逆向工具, 静态分析