Policy as Codeとコンプライアンスチェック
本番環境に到達する前にTerraform planをスキャンしてセキュリティ違反やコンプライアンス違反を検出し、テスト戦略にガードレイヤーを加えます。
「Policy as Codeとコンプライアンスチェック」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
テストは機能だけではありません
ユニットテストと統合テストは、インフラが動作することを証明します。Policy as codeは、それが許可されていることを証明します。たとえば、パブリックなS3バケットがないこと、承認済みのインスタンスタイプだけを使っていること、必須タグが付いていることなどです。これらのチェックは、変更のたびに自動実行されます。
ポリシーチェックを組み込む場所
ポリシーチェックはplanとapplyの間に組み込みます。planの出力を解析し、違反があればapplyをブロックします。これは、テストの失敗がマージをブロックするのと同じです。
tfsecによる静的スキャン
tfsecは、クラウドの認証情報を必要とせずにHCLをスキャンし、既知の設定ミスを検出します。すべてのコミットで実行できるほど高速です。
tfsec .スキャナーの出力を読む
スキャナーは、ルールID、重要度、問題のあるリソースを報告します。IDを使って修正方法を確認したり、受け入れ済みのリスクを抑制したりできます。
Result: aws-s3-enable-bucket-encryption
Severity: HIGH
Resource: aws_s3_bucket.dataマルチフレームワークスキャンにCheckovを使う
CheckovはTerraformだけでなく、他のIaC形式にも対応し、検出結果をCISやSOC2などのコンプライアンスフレームワークに対応付けます。
checkov -d . --framework terraformコードだけでなくプランをスキャンする
変数の解決後に初めて現れる問題を検出するには、プランをJSONにエクスポートし、その成果物をスキャンします。
terraform plan -out=tfplan.binary
terraform show -json tfplan.binary > plan.json
checkov -f plan.jsonOpen Policy AgentとConftest
組織独自のルールには、OPAとconftestを使うと、Rego言語でポリシーを記述し、プランのJSONに対してテストできます。
conftest test plan.json --policy policy/シンプルなRegoポリシー
このRegoルールは、ACLがpublic-readに設定されたS3バケットをすべて拒否します。ルールに一致すると、Conftestは実行を失敗させます。
package main
deny[msg] {
r := input.resource_changes[_]
r.type == "aws_s3_bucket"
r.change.after.acl == "public-read"
msg := "S3 buckets must not be public-read"
}受け入れ済みリスクを抑制する
検出結果が既知の例外である場合もあります。インラインコメントを使えば、スキャン全体を無効にせず、監査証跡を残したまま特定のルールだけをスキップできます。
resource "aws_s3_bucket" "logs" {
# tfsec:ignore:aws-s3-enable-bucket-encryption
bucket = "public-logs"
}ビルドを失敗させる
CIでは、違反があるとこれらのツールが0以外の終了コードを返します。その結果、パイプラインが失敗し、準拠していないapplyの実行を防げます。
tfsec . --soft-fail=falseチェックを段階的に組み合わせる
成熟したパイプラインでは、まずfmtとvalidateを実行し、次に静的ポリシースキャン(tfsec/checkov)、その後にカスタムOPAルール、最後に機能テスト用のTerratestスイートを実行します。各段階で異なる種類の問題を検出できます。
確認テスト
Policy as codeに関する知識を確認しましょう。
まとめ: インフラのガードレール
テストにコンプライアンスの層を追加しました。
- 既知の設定ミスをスキャンするtfsecとCheckov。
- 組織独自のルールにRegoを使うOPA/conftest。
- 解決後の値に関する問題を検出するプランJSONのスキャン。
- CIで準拠していないapplyをブロックする0以外の終了コード。
よくある質問
「Policy as Codeとコンプライアンスチェック」レッスンは無料ですか?
はい。「Policy as Codeとコンプライアンスチェック」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「Policy as Codeとコンプライアンスチェック」で何を学びますか?
本番環境に到達する前にTerraform planをスキャンしてセキュリティ違反やコンプライアンス違反を検出し、テスト戦略にガードレイヤーを加えます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Policy as Codeとコンプライアンスチェック」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Terraform の `validate` と `fmt`
- Terratest によるユニットテスト
- クラウドリソースの統合テスト
- Policy as Codeとコンプライアンスチェック