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 パターン
カテゴリ: エンジニアリング ドメイン: Infrastructure as Code
概要
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 対応