◾️はじめに
https://dk521123.hatenablog.com/entry/2025/09/25/213557
で、terraform validate を知れる機会ができたが それ以外のもツールがあるっぽいので、メモ。
目次
【0】Terraform linter一覧 【1】terraform validate 【2】tflint(Terraform Linter) 【3】checkov(セキュリティスキャナ)
【0】Terraform linter一覧
| ツール | 目的 | チェック範囲 | ベストプラクティス | セキュリティ |
|---|---|---|---|---|
| terraform validate | 基本構文検証 | HCL構文・依存関係 | × | × |
| tflint | コード品質向上 | HCL構文 + プロバイダー依存 | ○ | △ |
| checkov | セキュリティ検査 | リソースの設定値まで検証 | ○ | ◎ |
【1】terraform validate
* Terraform公式の 基本バリデーションツール => Terraformの構文チェックと基本的な論理チェックを行う => リソースの存在や構文ミスを検出
https://developer.hashicorp.com/terraform/cli/commands/validate
1)チェック例
* HCL構文の正当性 * 参照関係の整合性(例: 未定義の変数を使っていないか)
2)例
terraform validate
【2】tflint(Terraform Linter)
*Terraform用の拡張可能なLintツール => 構文チェック以上に、ベストプラクティスやプロバイダー依存の警告が可能
1)インストール
https://github.com/terraform-linters/tflint?tab=readme-ov-file#installation
# Linux curl -s https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash # Mac brew install tflint
2)設定例
.tflint.hcl
plugin "aws" { enabled = true region = "us-west-2" }
3)特徴
* AWS/GCP/Azureなどプロバイダー向けのプラグイン対応 * 無駄な変数・冗長な記述・非推奨な属性の警告なども対応 * .tflint.hcl にルール定義が可能(ルールのON/OFF、カスタムルールも)
4)チェック例
* aws_instance に不要な属性が指定されていないか * count の使い方が正しいか * terraform fmt では補足できないフォーマット警告
【3】checkov(セキュリティスキャナ)
* セキュリティとコンプライアンスに特化した IaC用スキャナ。 * Open Policy Agent(OPA)ライクなポリシールールを持っている * Terraform/CloudFormation/Kubernetesなどにも対応。
https://www.checkov.io/1.Welcome/What%20is%20Checkov.html
1)特徴
* デフォルトで大量のセキュリティルールが組み込まれている * 公開設定、暗号化、タグ付け、IAMポリシーの安全性などを自動チェック * CI/CDに組み込みやすい(JSON/HTMLなどでレポート出力可)
2)インストール
pip install checkov
https://www.checkov.io/2.Basics/Installing%20Checkov.html
3)チェック例
* S3バケットが公開されていないか * RDSに暗号化が有効か * IAMに *:* 権限が含まれていないか * ログが有効になっているか
4)使い方
checkov -d .
関連記事
Terraform ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/05/000224
Terraform ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/12/09/222057
Terraform ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/05/03/000000
Terraform ~ terraformコマンド ~
https://dk521123.hatenablog.com/entry/2025/09/25/213557
Terraform ~ Module ~
https://dk521123.hatenablog.com/entry/2023/05/19/113544
Terraform ~ AWS Glue ~
https://dk521123.hatenablog.com/entry/2023/04/08/220411