Terraform 护栏 MCP
发布: (2026年1月2日 GMT+8 04:27)
4 分钟阅读
原文: Dev.to
Source: Dev.to
(请提供需要翻译的正文内容,我才能为您完成简体中文翻译。)
概览
- MCP 服务器 – 暴露提供者元数据和合规性检查。
- CLI – 扫描 Terraform 配置(
.tf、.tfvars)和状态文件(.tfstate),检测敏感泄漏和缺失的ephemeral = true标志。 - Web UI – 快速上传进行扫描并生成可视化报告。
- 规则引擎 – 专注于短暂值、仅写入参数以及密钥卫生。
架构
flowchart LR
subgraph Interfaces
CLI[CLI]
MCP[MCP Server]
WEB[Web UI]
end
subgraph Core
SCAN[Compliance Engine]
GEN[Snippet Generator]
end
REG[Terraform Registry]
TF[Terraform CLI]
CLI --> SCAN
WEB --> SCAN
MCP --> SCAN
MCP --> GEN
SCAN --> TF
GEN --> REG
MCP --> REG
flowchart TB
INPUTS[Inputs: .tf, .tfvars, .tfstate] --> PARSE[Parse & Normalize]
PARSE --> RULES[Apply Rules TG001‑TG005]
RULES --> REPORT[Findings + Summary Report]
REPORT --> OUTPUT[CLI JSON / UI Render / MCP Response]
功能
- 扫描
.tf和.tfvars文件中的敏感值以及缺失的ephemeral = true。 - 扫描
.tfstate中泄露的敏感值。 - 通过 Terraform Registry 获取 AWS 和 Azure 的提供商元数据。
- 为常见的 AWS/Azure 资源生成 Terraform 代码片段。
- 基于模式的验证(需要 Terraform CLI 和已初始化的工作区)。
- 多环境策略和兼容 OPA 的输出。
- 支持堆栈感知的编排和漂移检测。
安装
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate
# 安装包(可编辑模式并带开发依赖)
pip install -e "[dev]"
或直接从 PyPI 安装:
pip install terraform-guardrail
- PyPI:(最新:0.2.3)
用法
CLI 扫描
# Scan a directory (default JSON output)
terraform-guardrail scan ./examples --format json
# Scan with a state file
terraform-guardrail scan ./examples --state ./examples/sample.tfstate
# Enable schema‑aware validation (requires Terraform CLI + initialized workspace)
terraform-guardrail scan ./examples --schema
代码片段生成
terraform-guardrail generate aws aws_s3_bucket --name demo
MCP 服务器(STDIO)
terraform-guardrail mcp
Web UI
terraform-guardrail web
访问并上传 Terraform 文件以查看合规报告。
或者,运行 Streamlit 应用:
streamlit run streamlit_app.py
实时演示:
部署指南
- 将代码库推送到 GitHub。
- 创建一个新的 Streamlit Cloud 应用。
- 将主文件路径设置为
streamlit_app.py。 - 部署 — Streamlit 将从
requirements.txt安装依赖。
如需详细步骤,请参阅代码库中的 docs/streamlit_cloud.md。
发布清单
-
在
pyproject.toml中更新版本。 -
更新
RELEASE_NOTES.md和CHANGELOG.md。 -
提交更改并推送到
main。 -
为发布打标签:
git tag -a vX.Y.Z -m "vX.Y.Z" git push origin vX.Y.Z -
确认 GitHub Actions 发布工作流成功完成。
仓库使用 git‑cliff 来生成 CHANGELOG.md:
git cliff -o CHANGELOG.md
# or
make changelog
其他 make 目标:
make release-dry VERSION=0.2.1 # 干运行发布
make version-bump VERSION=0.2.1 # 升级版本
工具概览
| Tool | Description |
|---|---|
scan_terraform | 在路径和可选的状态文件上运行合规检查。 |
get_provider_metadata | 从 Terraform Registry 获取提供者元数据(AWS 和 Azure)。 |
generate_snippet | 为常见的 AWS/Azure 资源生成 Terraform 代码片段。 |
| Schema‑aware code generation | 使用提供者模式生成安全的临时值重写。 |
参考文献
- GitHub 仓库:
- 架构图(README):
- Wiki 图表:
- GitHub 发布:
MIT License