こんにちは運用開発Gの森です。Symphonict で展開しているサービスの開発・運用を担当しております。
システムの構築・運用を効率化するため、我々のチームでは AWS の管理に Terraform を利用し開発を行っております。セキュリティについては意識して開発をしておりますが、そうは言っても AWS のサービスの全てを理解して開発するのは難しいのが現実です。少しでもセキュリティの底上げに何か良いセキュリティチェックツールは無いものかと探しておりました。
そこで我々のチームでは、Bridgecrew 社が提供している Checkov を利用し、Terraform の静的解析をすることにしました。
Checkov とは
IaC Tool のファイルに対し静的解析を行い、セキュリティチェックを行う OSS です。Terraform 以外の IaC Tool にも対応しており、今回は利用しておりませんが CloudFormation や Kubernetes , Docker にも対応しているようです。
Python で開発されており pip で簡単にインストールできると紹介されておりますが、我々のチームでは GitHub Actions と組み合わせて利用しました。
GitHub Actions での使い方
Checkov は GitHub Actions 専用アプリケーションの Action が提供されているため、以下のようにワークフローに記載し利用することにしました。たったこれだけで利用できるので非常に簡単ですね。
- name: Run checkov for policy check
id: checkov
continue-on-error: true
uses: bridgecrewio/checkov-action@v12.1660.0
with:
framework: terraform
output_format: json
download_external_modules: true
PullRequest の作成をトリガに Checkov によるセキュリティチェックを実施するようにしました。Reviewdog と組み合わせて利用することで PullRequestにコメントを残すことができ、レビュアーの負担が減りレビュー効率を改善することができました。環境へ apply する前にチェックできる点も嬉しいポイントです。
まとめ
セキュリティポリシーは各社で異なるため、一律に Checkov でチェックすれば安心とはなりませんが、機械的にセキュリティチェックできるポイントにおいては apply 前に気づけるため役立つツールであると思います。
IaC Tool のセキュリティチェックを探している方の参考なれれば幸いです。