关于 terraform-patterns
terraform-patterns 是用于检查 Terraform 模块与配置的技能,涵盖模块质量分析和安全扫描,并支持严重性阈值及 CI 所需的 JSON 输出。
主要功能
- 01模块复杂度评分
- 02依赖与变量分析
- 03安全错误配置扫描
- 04JSON 报告与严重性门槛
适用场景
- 01重构前评估模块结构
- 02查找开放端口或公开存储
- 03检查加密、IAM 与日志设置
- 04根据扫描结果设置 PR 门禁
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ borghei/ claude-skills --skill terraform-patterns安装后在 Claude Code 中输入/terraform-patterns确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
examples/main.tfreferences/terraform-patterns.mdscripts/tf_module_analyzer.pytf_security_scanner.py详细介绍
Terraform 模式
**类别:**工程 **领域:**基础设施即代码
概述
Terraform 模式技能可自动分析 Terraform 配置中的模块复杂度、安全配置错误和基础设施最佳实践。在问题进入生产环境之前,它会发现开放端口、公开存储桶、缺少加密以及权限过宽的 IAM 策略。
先确认
分析或扫描之前,请确认以下输入。如果有任何一项未知或含糊不清,请提问——不要自行假设:
- 目标路径 — 要分析的模块或环境目录(
--path;分析对象) - 任务 — 模块复杂度/质量分析,还是安全配置错误扫描(决定使用
tf_module_analyzer还是tf_security_scanner) - 最低严重性/门槛 — 发现问题的严重性门槛,以及是否会阻止 PR(
--min-severity;会改变报告和 CI 的通过/失败结果)
停止规则:只询问最可能影响输出的 2-3 项。如果用户说“先起草即可”,则继续操作,并在产出内容顶部列出你的假设。
快速开始
# Analyze Terraform module structure and complexity
python scripts/tf_module_analyzer.py --path ./modules/vpc
# Scan for security misconfigurations
python scripts/tf_security_scanner.py --path ./environments/production
# JSON output for CI pipelines
python scripts/tf_security_scanner.py --path . --format json
# Recursive analysis of all modules
python scripts/tf_module_analyzer.py --path . --recursive
工具概览
tf_module_analyzer.py
分析 Terraform 模块的复杂度、结构、依赖关系和文档质量。
| 功能 | 说明 |
|---|---|
| 复杂度评分 | 根据资源数量、变量数量和嵌套层级为模块评分 |
| 依赖关系映射 | 映射模块依赖关系和数据源用法 |
| 变量分析 | 检查是否缺少类型、默认值和说明 |
| 输出完整性 | 验证输出文档和覆盖范围 |
| 命名约定 | 检查资源和变量的命名模式 |
tf_security_scanner.py
扫描 Terraform 配置中的安全配置错误和合规违规。
| 功能 | 说明 |
|---|---|
| 开放端口 | 检测安全组中的 0.0.0.0/0 CIDR |
| 公开访问 | 标记公开的 S3 存储桶、数据库和实例 |
| 加密缺失 | 检查静态和传输中的数据是否缺少加密 |
| IAM 权限过宽 | 识别通配符操作和范围过宽的策略 |
| 日志缺失 | 验证 CloudTrail、流日志和访问日志 |
工作流
安全审查工作流
- 扫描 - 使用 tf_security_scanner.py 扫描所有环境
- 分类处理 - 优先处理严重问题(公开数据、开放访问)
- 修复 - 根据每项发现应用建议的修复方案
- 验证 - 重新扫描,确认问题已解决
- 设门禁 - 将扫描器添加到 PR 检查中,持续执行安全要求
模块质量工作流
- 分析 - 对每个模块运行 tf_module_analyzer.py
- 评分 - 查看复杂度评分,找出超过阈值的模块
- 重构 - 拆分复杂度评分高于 70/100 的模块
- 编写文档 - 补充缺失的变量和输出说明
- 标准化 - 统一命名和文件组织方式
CI 集成
# Security gate
python scripts/tf_security_scanner.py --path . --format json --min-severity high
if [ $? -ne 0 ]; then
echo "Security scan failed - blocking merge"
exit 1
fi
# Module quality check
python scripts/tf_module_analyzer.py --path . --recursive --format json
参考文档
- Terraform 模式 - 模块设计、状态管理和命名约定
常见模式速查
模块结构
modules/vpc/
main.tf # Primary resources
variables.tf # Input variables with descriptions
outputs.tf # Module outputs
versions.tf # Required providers and versions
locals.tf # Local values and computed expressions
安全检查清单
| 资源 | 检查项 | 规则 |
|---|---|---|
| 安全组 | 不允许 0.0.0.0/0 入站 | 限制为已知 CIDR |
| S3 存储桶 | 不允许公开 ACL | 改用存储桶策略 |
| RDS | 不允许公开访问 | 设置 publicly_accessible = false |
| EBS/S3/RDS | 启用加密 | 添加加密配置 |
| IAM | 不允许通配符操作 | 使用最小权限策略 |
| CloudTrail | 在所有区域启用 | is_multi_region_trail = true |
| VPC | 启用流日志 | 创建流日志资源 |
复杂度评分
| 评分 | 评级 | 操作 |
|---|---|---|
| 0-30 | 低 | 无需操作 |
| 31-60 | 中 | 考虑拆分 |
| 61-80 | 高 | 应进行重构 |
| 81-100 | 严重 | 必须重构 |
评论
支持 Markdown