terraform_sec
收藏资源简介:
一个包含62,406个Terraform项目的全面安全漏洞分析数据集,使用tfsec进行安全分析。该数据集旨在训练大型语言模型(LLMs)以理解、识别和修复Terraform基础设施即代码中的安全问题。数据集包含44,030个安全项目(70.6%)和18,376个不安全项目(29.4%),格式为JSONL。数据集涵盖了多个云提供商(AWS、Azure、GCP、Kubernetes)和服务的安全漏洞,包括加密问题、访问控制、日志与监控、网络安全和最佳实践等常见漏洞。
Terraform Security Dataset 数据集概述
数据集基本信息
- 数据集名称: Terraform Security Dataset
- 数据集地址: https://huggingface.co/datasets/galcan/terraform_sec
- 许可证: Apache 2.0
- 任务类别: 文本生成、文本分类
- 语言: 英语
- 标签: terraform, security, infrastructure-as-code, devsecops, tfsec, cloud-security, aws, azure, gcp, vulnerability-detection
- 规模类别: 10K<n<100K
- 数据格式: JSONL (JSON Lines)
数据规模与构成
- 总示例数: 62,406 个 Terraform 项目
- 安全项目数: 44,030 (70.6%)
- 不安全项目数: 18,376 (29.4%)
- 安全与不安全项目比例: 2.40:1
- 总 .tf 文件数: 约 250,000+
- 每个项目平均文件数: 4-5 个文件
- 未压缩大小: 约 1.2 GB
- 压缩后大小: 约 180 MB
数据集文件结构
data/ ├── terraform_security_dataset.jsonl # 完整数据集 (62,406 个示例) ├── secure_projects.jsonl # 仅安全项目 (44,030 个示例) └── insecure_projects.jsonl # 仅不安全项目 (18,376 个示例)
数据格式与字段
每个示例为一个包含以下字段的 JSON 对象: json { "project_id": "terraform_projects_100137176_100137176", "instruction": "You are a Terraform security expert. Analyze the following Terraform configuration for security vulnerabilities and misconfigurations. Identify any security issues, their severity, and provide remediation guidance.", "input": "### main.tf terraform resource "aws_s3_bucket" "example" { bucket = "my-bucket" acl = "private" } ", "output": "INSECURE - 3 security issue(s) found:
- Issue: Bucket does not have encryption enabled Severity: HIGH Rule: AVD-AWS-0088 Location: main.tf:2 Resolution: Configure bucket encryption", "metadata": { "files_count": 3, "issues_count": 8, "is_secure": false, "scan_error": null, "severities": ["HIGH", "MEDIUM", "LOW"] } }
主要字段描述
| 字段 | 类型 | 描述 |
|---|---|---|
project_id |
字符串 | Terraform 项目的唯一标识符 |
instruction |
字符串 | 给大语言模型的任务描述(所有示例中恒定) |
input |
字符串 | 包含所有 .tf 文件的完整 Terraform 配置 |
output |
字符串 | 安全分析结果(SECURE 或 INSECURE 及详细信息) |
metadata |
对象 | 项目的附加信息 |
元数据字段
| 字段 | 类型 | 描述 |
|---|---|---|
files_count |
整数 | 项目中的 .tf 文件数量 |
issues_count |
整数 | 发现的安全问题数量 |
is_secure |
布尔值 | 项目是否安全 (true) 或存在问题 (false) |
scan_error |
字符串/空值 | 扫描期间的任何错误(例如 "timeout") |
severities |
数组 | 问题严重级别列表(CRITICAL, HIGH, MEDIUM, LOW) |
安全问题覆盖范围
云服务提供商
- AWS: S3, EC2, IAM, VPC, Security Groups, RDS, Lambda, CloudWatch 等
- Azure: Storage, Virtual Machines, Networking, Key Vault 等
- GCP: Compute Engine, Storage, IAM, Networking 等
- Kubernetes: Pods, Services, RBAC, Network Policies 等
问题严重性分布
| 严重性 | 数量 | 百分比 |
|---|---|---|
| CRITICAL | 约 8,500 | 15% |
| HIGH | 约 25,000 | 45% |
| MEDIUM | 约 18,000 | 32% |
| LOW | 约 4,500 | 8% |
常见漏洞类型
- 加密问题
- 未加密存储 (S3, EBS, RDS)
- 缺少静态/传输中加密
- 无客户管理的密钥
- 访问控制
- 过于宽松的安全组 (0.0.0.0/0)
- 资源公开访问
- 缺少 IAM 策略
- 日志记录与监控
- 禁用日志记录
- 无 CloudWatch 监控
- 缺少审计跟踪
- 网络安全
- 向公共互联网开放端口
- 无 VPC 流日志
- 不安全的入口/出口规则
- 最佳实践
- 缺少版本控制
- 无备份配置
- 使用已弃用的资源
问题数量分布
- 包含 1-5 个问题的项目: 约 12,000 (65%)
- 包含 6-10 个问题的项目: 约 4,500 (24%)
- 包含 11-20 个问题的项目: 约 1,500 (8%)
- 包含 20+ 个问题的项目: 约 376 (3%)
数据收集与处理
- 原始数据来源: 来自 GitHub 的 62,406 个 Terraform 项目
- 安全扫描器: tfsec (Aqua Security 的 Terraform 静态分析安全扫描器)
- 收集时间: 2024 年
- 处理版本: tfsec v1.28+
- 扫描超时项目: 约 5,243 个项目(被视为安全)
数据处理流程
- 收集: 包含 Terraform 代码的 GitHub 仓库
- 扫描: 使用 tfsec 进行分析并输出 JSON
- 解析: 提取安全发现并映射到项目
- 格式化: 创建基于指令的示例
- 质量控制: 验证完整性和准确性
主要用途
- 大语言模型微调: 训练模型识别 Terraform 安全问题
- 安全分析: 自动化基础设施安全审计
- 代码审查: 学习安全的 Terraform 模式与反模式
- 教育: 教授开发者安全的基础设施即代码实践
- 研究: 研究基础设施即代码中的安全漏洞模式
版本信息
- 版本 1.0.0 (2024年12月): 初始发布,包含 62,406 个 Terraform 项目,基于 tfsec 安全分析,采用指令型格式
已知限制
- 扫描器限制: 基于 tfsec 规则(可能无法捕获所有问题)
- 静态分析: 无运行时分析或渗透测试
- 误报: 某些标记的问题可能是故意配置
- 覆盖范围: 专注于常见云提供商 (AWS, Azure, GCP)
- 超时: 约 5,243 个项目扫描超时(被视为安全)




