xwtro0tk1t-cloud/harness/security-review-skill-for-terraform
- community
Checking that the SKILL.md file is still in the repository.
审计 Terraform / IaC 代码安全(AWS 基础设施)。检测硬编码凭据、过宽 Security Group(0.0.0.0/0)、IAM 权限过大(Action/Resource *)、S3 公开访问、RDS 未加密/公开、State 文件泄露、ECS/EKS 容器特权、CloudTrail/VPC FlowLog 缺失、不安全 Provider/Module 引用等。当审计 Terraform 代码、IaC 安全评审、AWS 云基础设施配置检查、GitOps 安全审计时使用。支持 HCL(.tf)、Terraform JSON、tfvars、Terragrunt(HCL) 代码。
Install
npx vskill@latest install xwtro0tk1t-cloud/harness/security-review-skill-for-terraformSKILL.md
Terraform / AWS IaC Security Review
技术栈背景
Terraform (HCL) 基础设施即代码安全审计,聚焦 AWS Provider。
审计范围:
.tf文件(HCL 资源定义).tfvars/terraform.tfvars(变量值文件)backend.tf/provider.tf(后端和 Provider 配置)modules/(自定义和第三方模块)terragrunt.hcl(如使用 Terragrunt).terraform.lock.hcl(Provider 锁定文件)- CI/CD pipeline 中的 Terraform 步骤
关键审计维度:
- D1: 凭据与密钥管理
- D2: 网络安全(Security Group / NSG / Firewall)
- D3: IAM 与访问控制
- D4: 加密(静态 + 传输)
- D5: 公开访问与暴露面
- D6: State 文件安全
- D7: Provider 与 Module 供应链
- D8: 容器与计算资源安全
- D9: 日志、监控与合规
- D10: Terraform 运行时安全
审计模式
触发 skill 后,首先用 AskUserQuestion 询问用户审计模式:
问题: "选择审计模式" 选项:
- 全量审计 — 扫描指定目录/模块的全部 .tf 文件
- PR/分支审计 — 只扫描 Terraform 变更(
git diff中的 .tf/.tfvars 文件) - 最近变更审计 — 扫描最近 N 天/N 个 commit 的 .tf 变更
如果用户 prompt 中已明确指定模式,跳过询问。
PR/分支模式
Step 0: 确定 diff 范围
Step 0.1: 范围分析
- 将改动 .tf 文件按模块/目录分类
- 对每个改动文件:Read 完整文件 + 识别新增/修改的 resource block
- 检查相关 variable/output/data source 引用链
审计方法
核心原则:宁可漏过也不误报。所有发现必须基于实际代码。IaC 审计特点:配置即代码——缺失安全配置本身就是漏洞。
Step 1: 侦察阶段
- 识别 Provider:
required_providersblock → AWS(主要)/ Kubernetes / Helm - 识别 Backend:
backendblock → S3(推荐)/ Consul / Local - 资源清单:列出所有
resource和data类型,构建攻击面 - 模块依赖:
moduleblock 的 source 属性 → 本地/Registry/Git - 变量流:
variable→locals→resource属性的数据流
Step 2: 正则扫描(必须执行)
根据下方"审计正则速查"逐条 Grep。IaC 正则扫描是核心检测手段——Terraform 安全问题大多是配置模式匹配。
Step 3: 双轨审计
Sink-driven(找危险配置):
- 过宽 CIDR(0.0.0.0/0)、通配符 IAM 权限(
*)、公开存储桶 - 硬编码凭据、明文密码、未加密资源
Control-driven(找缺失的安全控制):
- 存储资源无加密?计算资源无 IAM role?日志未启用?
- 缺失即脆弱:应有的安全属性未设置 → 漏洞
Step 4: 数据流分析
IaC 数据流 = 变量传播:
追踪:
variable定义是否标记sensitive = true- 变量值来源:tfvars / 环境变量 / Vault / SSM
- 变量是否传入不安全的属性(如
user_data脚本)
Step 5: 跨模块分析
- 子模块 output 是否暴露敏感值?
- 父模块是否信任子模块输出用于安全决策?
terraform_remote_state读取是否暴露其他环境的敏感数据?
Step 6: 攻防对抗验证
攻击方:如果获得对此基础设施的只读/读写权限,能做什么? 防御方:是否有 WAF/SecurityGroup/NACL/IAM boundary 阻止?
Step 7: 覆盖评估
- [ ] 凭据与密钥(硬编码/明文/State泄露)
- [ ] 网络安全(SG/NACL/防火墙规则)
- [ ] IAM 权限(最小权限/通配符/跨账户)
- [ ] 加密(存储/传输/密钥管理)
- [ ] 公开访问(S3/RDS/端点)
- [ ] State 文件(远程后端/加密/访问控制)
- [ ] Module 供应链(来源/版本/完整性)
- [ ] 容器/计算(特权/root/资源限制)
- [ ] 日志监控(CloudTrail/VPC FlowLog/审计)
- [ ] 运行时安全(Provider 认证/CI 权限)
误报识别
0.0.0.0/0在 egress 规则中通常是合理的(出站全放行)description字段中包含密码样例字符串不是凭据泄露terraform.tfvars.example中的占位值不是真实凭据data.aws_iam_policy_document中actions = ["s3:GetObject"]+resources = ["*"]对只读 S3 可能是合理的count = 0或for_each = {}的资源不会实际创建dynamicblock 中的content可能有条件控制
优先检查
| 优先级 | 目标 | 原因 | |
|---|---|---|---|
| P0 | 硬编码凭据/密钥 | 直接泄露即可攻陷 | |
| P0 | 0.0.0.0/0 ingress + 敏感端口 | 互联网直接暴露 | |
| P0 | IAM *:* 权限 | 等同管理员,极度危险 | |
| P1 | S3 公开访问 | 数据泄露 | |
| P1 | 数据库/存储未加密 | 合规 + 数据保护 | |
| P1 | State 文件无加密/无远程后端 | State 含所有密钥 | |
| P2 | 模块来源未锁版本 | 供应链攻击 | |
| P2 | 日志/监控缺失 | 无法检测攻击 | |
| P2 | 容器特权/root | 容器逃逸 |
通用漏洞检查
D1: 凭据与密钥管理
硬编码凭据:
State 文件中的密钥:
D2: 网络安全
过宽 Security Group:
VPC Endpoint 缺失:
D3: IAM 与访问控制
过宽 IAM 策略:
AssumeRole 信任过宽:
D4: 加密
存储未加密:
D5: 公开访问与暴露面
S3 公开:
数据库公开:
D6: 配置与部署
Provider 版本未锁定:
调试/开发模式:
D9: 业务逻辑(资源配置)
资源无备份/版本化:
无删除保护:
深度漏洞模式
HCL 深度 Sink/Source
危险 Sink(安全敏感属性):
| 类别 | Resource.Attribute | 风险 | |
|---|---|---|---|
| 凭据 | *.password, *.secret_key, *.access_key, *.token | 硬编码凭据 | |
| 网络 | *.cidr_blocks, *.source_ranges, *.ip_range_filter | 过宽网络 | |
| IAM | *.policy (JSON), *.actions, *.principal | 权限过大 | |
| 加密 | *.encrypted, *.kms_key_id, *.sse_algorithm | 未加密 | |
| 公开 | *.publicly_accessible, *.acl, *.public_access | 公开暴露 | |
| 计算 | *.privileged, *.user_data, *.root_block_device | 容器/实例安全 | |
| 日志 | *.logging, *.access_logs, *.trail | 监控缺失 |
Source(配置值来源):
variable定义 → 检查是否sensitive = trueterraform.tfvars/*.auto.tfvars→ 检查是否含明文凭据datasource → 检查是否从不可信源读取locals→ 检查是否拼接生成不安全配置templatefile()/user_data→ 检查内嵌脚本安全
审计正则速查(Step 2 必须执行)
以下正则在 Step 2 必须逐条执行 Grep:
HCL 正则(*.tf + *.tfvars 文件)
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingbundled-skills/security-review-skill-for-terraform/SKILL.md
Popularity
- Repository stars
- 325
- Repository forks
- 45
- 7-day trend score
- 29
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 17 May 2026, 5 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/xwtro0tk1t-cloud/harness/security-review-skill-for-terraform)