内容
<!-- 将此文件重命名为 README.md 并放在您的公共 GitHub 仓库中。
在推送之前,请替换 Pratikchandrathakur 和登陆页面 URL。 -->
<h1 align="center">🛡️ IAM 哨兵</h1>
<p align="center">
<b>空气隔离、确定性的云 IAM 特权提升扫描器 — AWS · Azure · GCP。</b><br>
100% 在您的硬件上运行。通过 MCP 连接到 Cursor / Claude Code。零数据外流。
</p>
<p align="center">
<img alt="license" src="https://img.shields.io/badge/license-BSL%201.1-blue">
<img alt="docker" src="https://img.shields.io/badge/docker-compose-2496ED?logo=docker&logoColor=white">
<img alt="clouds" src="https://img.shields.io/badge/clouds-AWS%20%7C%20Azure%20%7C%20GCP-orange">
<img alt="offline" src="https://img.shields.io/badge/network-air--gapped-10b981">
<img alt="tests" src="https://img.shields.io/badge/tests-68%20passing-brightgreen">
<img alt="ci" src="https://img.shields.io/badge/CI-PR%20gate%20%2B%20SARIF-6d7dff">
</p>
<p align="center">
<a href="https://iam-sentinel-site.vercel.app">网站</a> ·
<a href="#quickstart">快速开始</a> ·
<a href="INSTALL.md">安装(Mac/Win/Linux/WSL)</a> ·
<a href="#pricing">定价</a>
</p>
---
## 为什么
云 IAM 扫描器(Wiz、Snyk、GitHub Advanced Security)会将您的策略发送到 *他们的* 云。
受监管的团队 **不能** 这样做。IAM 哨兵使用 **确定性规则引擎** 查找特权提升路径、通配符、
`PassRole` / `roleAssignment` 滥用、公共绑定和数据外流授权 — 可复制和可审计,而不是 LLM 猜测 — 完全在您的基础设施上。
- 🔒 **空气隔离** — 无遥测,无出站调用(除 *可选* 本地模型外)。
- 🎯 **确定性** — 规则引擎的版本戳结果,而不是幻觉。
- 🔌 **在您的 IDE 中** — 用于 Cursor / Claude Code 的原生 stdio MCP 服务器。
- 🧾 **可审计** — 每次扫描都保留有执行者、时间戳、SHA-256 和规则包版本。
- 🖥️ **在任何地方运行** — 仅 CPU 核心;可选的书面补救仅需要 GPU。
## 快速开始
```bash
git clone https://github.com/Pratikchandrathakur/IAM-Sentinel && cd iam-sentinel
cp .env.example .env # 设置 API 密钥(社区层不需要许可证)
docker compose up -d --build
open http://127.0.0.1:8080 # 仪表盘 · API 在 /api/... · 健康检查在 /api/health
```
审计策略(自动检测提供商):
```bash
curl -s http://127.0.0.1:8080/api/audit/iam -H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{"policy_json":"{\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"*\",\"Resource\":\"*\"}]}"}' | jq
```
无 GPU / macOS?设置 `LLM_NARRATIVE_ENABLED=false` — 您仍然会得到每个确定性结果。
完整的 OS 特定步骤在 **[INSTALL.md](INSTALL.md)** 中。
## 在您的 IDE 中使用(MCP)
```json
{ "mcpServers": { "iam-sentinel": {
"command": "python3", "args": ["/abs/path/to/iam-sentinel/mcp_stdio.py"],
"env": { "AUTH_ENABLED": "false", "LLM_NARRATIVE_ENABLED": "false" }
}}}
```
然后询问您的助手: *"使用 iam-sentinel 审计此 IAM 策略。"*
## CI/CD 守卫 — 在每个 PR 上阻止特权提升
在 Terraform 计划(或原始策略文件)中扫描 IAM 并 **阻止构建**,当出现新的提升路径时。
结果通过 SARIF 在 PR 中内联显示。无需服务器。
```yaml
# .github/workflows/iam-guardrails.yml (参见 examples/github-actions/)
- run: terraform show -json tf.plan > plan.json
- uses: Pratikchandrathakur/IAM-Sentinel@v1
with: { tfplan: plan.json, fail-on: HIGH }
```
或在任何 CI 中本地运行(纯标准库,离线):
```bash
python3 guardrails.py --tfplan plan.json --fail-on HIGH # 退出 1 = 阻止结果
python3 guardrails.py policies/*.json --format sarif > iam.sarif
```
它 **从 Terraform 计划中提取 IAM** (AWS `aws_iam_policy` / 角色,Azure `azurerm_role_definition`,
GCP 自定义角色/绑定)— 无需 HCL 解析,使用已解析的计划 JSON。
> **无需模型。** 每次扫描都返回完整的 **确定性补救报告** (修复 +
> 最小特权骨架),无需外部服务。可选的本地 LLM 是纯粹的润色。
> **自定义规则** 是配置的下拉项 — 参见 `custom_rules.example.json` (无需代码更改)。
## 它检测什么
- **AWS** — 19 种提升技术(Rhino/PMapper):`AttachUserPolicy`、`PutRolePolicy`、
`CreateAccessKey`、`PassRole`+compute、`UpdateAssumeRolePolicy`、…;通配符、`NotAction` 陷阱、
通配符主体、无条件 `AssumeRole`、数据外流授权。
- **Azure** — `roleAssignments/write`、`elevateAccess`、`Microsoft.Authorization/*`、通配符操作、范围广度。
- **GCP** — 原始角色、`allUsers` 绑定、`setIamPolicy` / `serviceAccountTokenCreator` / `actAs`。
## 定价
开放核心。免费运行;升级以获取座位、历史记录和企业控制(离线许可)。
| 层级 | 价格 | 座位 | 每月扫描次数 | 附加功能 |
|---|---|---|---|---|
| 社区 | **免费** | 1 | 100 | AWS/Azure/GCP · MCP · 审计轨迹 |
| 团队 | $199/月 | 10 | 5,000 | 补救差异 |
| 企业 | $4,999/年 | ∞ | ∞ | SSO/RBAC · TLS · SLA |
查看 [网站](https://iam-sentinel-site.vercel.app) 或发送电子邮件至 **krisprogrammer1@gmail.com** 以获取试点。
## 测试
```bash
python3 tests/test_iam_engine.py # + test_multicloud / test_store / test_mcp / test_auth / ...
```
## 许可证
**商业源许可证 1.1** (参见 [`LICENSE`](LICENSE))。源代码开放;**社区使用
免费** (单个用户/评估)。团队、CI/CD 和组织范围的 **生产使用
需要商业订阅** — 联系 **krisprogrammer1@gmail.com**。转换为
Apache-2.0 于 2030-07-25。您不得将其转售或作为竞争托管服务提供。
<p align="center"><i>⭐ 如果这很有用,请给仓库加星 — 这很有帮助。</i></p>