0xBahalaNa/policy-checker

GitHub: 0xBahalaNa/policy-checker

轻量级 AWS IAM 策略合规检查工具,扫描权限过度授予问题并映射到 NIST 800-53、FedRAMP 和 CJIS v6.0 控制项。

Stars: 1 | Forks: 1

# Policy Checker [![Policy Check](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/7a3b00cc00043352.svg)](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, 上游代理, 云安全监控, 人工智能安全, 合规性, 安全合规, 文档结构分析, 无后门, 最小权限, 权限扫描, 策略检查, 网络代理, 身份与访问管理, 逆向工具, 静态分析