yashwanthyashka/iac-security-auditor
GitHub: yashwanthyashka/iac-security-auditor
基于OpenEnv标准的AI智能体训练环境,用于评估和训练大语言模型识别Terraform代码中安全错误配置、判断严重程度并生成修复建议的能力。
Stars: 0 | Forks: 0
title: IaC 安全审计器
emoji: 🔐
colorFrom: red
colorTo: red
sdk: docker
pinned: false
tags:
- openenv
- security
- terraform
- iac
- reinforcement-learning
short_description: 用于 Terraform 安全审计的 OpenEnv 智能体环境
# IaC Security Auditor — OpenEnv 环境
一个符合 [OpenEnv](https://github.com/openenv) 标准的环境,在此环境中,AI 智能体针对安全漏洞审计 **Terraform 基础设施即代码配置**。
智能体必须识别错误配置,对其严重程度进行分类,建议修复措施,并且 —— 对于困难任务 —— 解释漏洞如何链接成一条完整的攻击路径。
## 为什么选择这个环境?
每个云工程团队在部署前都会手动审查 Terraform/IaC 配置。这存在以下问题:
- **耗时** — 一位高级工程师审查 500 行 Terraform 代码需要 30–60 分钟
- **不一致** — 不同的审查者会发现不同的问题
- **高风险** — 遗漏一个错误配置可能会将生产数据库暴露给互联网
这个环境让你能够训练和评估可以替代或增强手动 IaC 安全审查的智能体 —— 这是一项具有直接、可衡量现实价值的任务。
## 观察空间
| 字段 | 类型 | 描述 |
|---|---|---|
| `task_id` | string | `easy` / `medium` / `hard` |
| `terraform_code` | string | 待审计的 HCL 配置文件 |
| `context` | string | 简要的基础设施描述 |
| `step_number` | int | Episode 中的当前步骤(从 0 开始索引) |
| `previous_findings` | list | 智能体在之前步骤中的发现 |
| `instructions` | string | 智能体必须执行的操作 |
## 动作空间
```
{
"findings": [
{
"resource_name": "aws_security_group.web_sg",
"issue_type": "overly_permissive_ingress",
"severity": "CRITICAL",
"description": "Security group allows all inbound traffic from 0.0.0.0/0 on all ports",
"suggested_fix": "Restrict ingress to specific ports and CIDR ranges"
}
],
"cascade_analysis": "Optional: how issues compound (required for hard task full score)",
"summary": "Optional: overall security posture"
}
```
严重级别:`LOW` | `MEDIUM` | `HIGH` | `CRITICAL`
## 奖励函数
| 组成部分 | 权重 | 描述 |
|---|---|---|
| 发现的问题 | ~60% | 识别出的真实漏洞比例(经质量加权) |
| 严重程度准确性 | ~20% | 正确的严重程度分类 |
| 修复质量 | ~15% | 可操作的修复建议 |
| 级联分析 | 最高 +15% | 解释问题如何叠加(困难任务) |
| 误报惩罚 | 每个 -0.08 | 虚构的漏洞 |
分数为连续的 `0.0–1.0`,在整个 episode 期间提供部分积分。
## 任务
### 简单 — 过于宽松的安全组
**漏洞数量:** 1
**预期智能体得分:** 0.75–1.00
一个 EC2 实例,其安全组允许来自 `0.0.0.0/0` 的所有入站 TCP 流量通过所有端口(0–65535)。这是一个基本的 AWS 错误配置,会将服务器暴露给整个互联网。
### 中等 — 三处错误配置
**漏洞数量:** 3
**预期智能体得分:** 0.45–0.80
跨不同资源类型的三个独立漏洞:
- S3 存储桶的所有公有访问拦截均设置为 `false`
- IAM 角色策略使用了通配符 `Action: "*"` 和 `Resource: "*"`
- CloudTrail 设置了 `enable_logging = false`
### 困难 — 级联数据库暴露
**漏洞数量:** 5
**预期智能体得分:** 0.25–0.60
五个相互关联的漏洞,它们共同构成了通往生产 PostgreSQL 数据库的完整路径:
1. RDS 实例被放置在**公有子网**中
2. 安全组允许**来自 0.0.0.0/0 的 5432 端口**流量
3. RDS `publicly_accessible = true`
4. `storage_encrypted = false`(静态数据未受保护)
5. VPC Flow Logs 配置错误(`iam_role_arn` 和 `log_destination` 为空)
只有当智能体识别出**级联关系** —— 即问题 1+2+3 一起意味着互联网上的任何人都可以连接到生产数据库 —— 它们才能获得满分。
## API 端点
| 方法 | 端点 | 描述 |
|---|---|---|
| GET | `/health` | 健康检查(返回 200) |
| GET | `/tasks` | 列出所有任务 |
| POST | `/reset` | 开启新 episode `{"task_id": "easy"}` |
| POST | `/step` | 提交发现(Action JSON) |
| GET | `/state` | 当前环境状态 |
| GET | `/docs` | 交互式 API 文档 |
## 设置与使用
### 使用 Docker 在本地运行
```
docker build -t iac-security-auditor .
docker run -p 7860:7860 iac-security-auditor
```
### 使用 Python 在本地运行
```
pip install -r requirements.txt
uvicorn api.main:app --host 0.0.0.0 --port 7860 --reload
```
### 运行基线推理
```
export HF_TOKEN=your_api_key
export MODEL_NAME=gpt-4o-mini
export API_BASE_URL=https://api.openai.com/v1
export ENV_BASE_URL=http://localhost:7860
python inference.py
```
## 基线得分
使用 `gpt-4o-mini` 测试(temperature=0.1):
| 任务 | 得分 | 备注 |
|---|---|---|
| Easy | 0.87 | 正确找到开放的安全组,严重程度适当 |
| Medium | 0.64 | 找到 IAM + S3,有时会漏掉 CloudTrail |
| Hard | 0.41 | 找到主要问题但漏掉了级联关系 |
| **平均** | **0.64** | |
## 项目结构
```
iac-security-auditor/
├── inference.py # Baseline LLM agent script
├── openenv.yaml # OpenEnv metadata
├── Dockerfile # Container configuration
├── requirements.txt
├── README.md
├── env/
│ ├── environment.py # reset() / step() / state()
│ ├── models.py # Pydantic: Observation, Action, Reward
│ ├── tasks.py # 3 task definitions + ground truth
│ └── graders.py # Deterministic scoring logic
└── api/
└── main.py # FastAPI HTTP server
```
## OpenEnv 合规性
- ✅ `reset()` → 返回干净的 `Observation`
- ✅ `step(action)` → 返回 `(Observation, Reward, done, info)`
- ✅ `state()` → 返回 `EnvironmentState`
- ✅ 全程使用类型化 Pydantic 模型
- ✅ 包含完整元数据的 `openenv.yaml`
- ✅ 3 个带有确定性评分器(0.0–1.0)的任务
- ✅ 部分奖励信号(非二元)
- ✅ 使用 OpenAI 客户端的 `inference.py`
- ✅ Dockerfile + HuggingFace Space 部署
标签:AI代理, AWS, CISA项目, Docker, DPI, ECS, IaC安全, OpenEnv, Petitpotam, Terraform, 人工智能, 代码审查, 威胁建模, 安全防御评估, 强化学习, 攻击路径分析, 模块化设计, 用户模式Hook绕过, 自动化修复, 请求拦截, 逆向工具