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

实时演示:

部署指南

  1. 将代码库推送到 GitHub。
  2. 创建一个新的 Streamlit Cloud 应用。
  3. 将主文件路径设置为 streamlit_app.py
  4. 部署 — Streamlit 将从 requirements.txt 安装依赖。

如需详细步骤,请参阅代码库中的 docs/streamlit_cloud.md

发布清单

  • pyproject.toml 中更新版本。

  • 更新 RELEASE_NOTES.mdCHANGELOG.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 # 升级版本

工具概览

ToolDescription
scan_terraform在路径和可选的状态文件上运行合规检查。
get_provider_metadata从 Terraform Registry 获取提供者元数据(AWS 和 Azure)。
generate_snippet为常见的 AWS/Azure 资源生成 Terraform 代码片段。
Schema‑aware code generation使用提供者模式生成安全的临时值重写。

参考文献

  • GitHub 仓库:
  • 架构图(README):
  • Wiki 图表:
  • GitHub 发布:

MIT License

Back to Blog

相关文章

阅读更多 »

RGB LED 支线任务 💡

markdown !Jennifer Davishttps://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%...

Mendex:我为何构建

介绍 大家好。今天我想分享一下我是谁、我在构建什么以及为什么。 早期职业生涯与倦怠 我在 17 年前开始我的 developer 生涯……