Conftest OPA で Terraform コード開発に制約を設ける

こんにちは。jedipunkz🚀 です。 Conftest と Open Policy Agent (OPA) を使った Terraform のポリシー検証を行ったのでそれを記事にしたいと思います。ポリシを書くことで Terraform コードに制約を加え、セキュリティ要件(例えば暗号化要件やポート開放要件等) を満たしたりベストプラクティスにそったインフラを構築できます。毎回レビューで人にチェックさせるよりも確実に制約を守れるようになるのでおすすめです。 この記事では、Conftest と OPA を使って、Terraform コードに自動的にポリシーチェックを適用する方法をチュートリアル形式で解説します。 1. Conftest 概要と基本チュートリアル 1.1 Conftest とは? Conftest は、構造化された設定データに対してポリシーをテストするためのツールです。Open Policy Agent (OPA) の Rego 言語を使用してポリシーを記述し、さまざまな設定ファイルを検証できます。 Conftest の特徴 汎用性が高い Terraform(.tf、tfplan.json) Kubernetes(YAML、JSON) Dockerfile その他の JSON/YAML ファイル シンプルで軽量 単一のバイナリで動作 外部依存なし CI/CD に簡単に統合可能 OPA の Rego 言語を採用 宣言的なポリシー記述 強力なパターンマッチング テスト可能なポリシーコード なぜ Conftest が必要なのか? 従来のインフラ管理では、以下のような課題がありました。 レビューで毎回同じ指摘(「暗号化を有効にしてください」など) 人的ミスによるセキュリティホール 環境間での設定の不整合 コンプライアンス違反の見落とし Conftest を使うことで、これらの課題を解決できます。 ポリシーをコードで自動チェック デプロイ前に問題を検出 一貫したガバナンスの実現 レビュー負荷の軽減 1.2 セットアップ 1.2.1 Conftest のインストール macOS の場合: ...