tfsec で terraform 管理リソースのセキュリティ強化
tfsec を使用し Terraform で管理するリソースのセキュリティを強化する手順を記載します。
ローカルに tfsec インストール
以下例では asdf を利用し導入しています。
asdf は多数言語に対応しており、 rubyenv, nodenv, goenv の様な個々の言語のバージョン切り替えよりも同様の手順でバージョン切り替えが可能で有用です。
参考: https://github.com/woneill/asdf-tfsec
1 | asdf plugin-add tfsec https://github.com/woneill/asdf-tfsec |
個々のリソースでルールを除外したいとき
各リソースで tfsec:ignore
でルールを除外します。
1 | resource "aws_lb" "dummy" { |
以下の様にリソースの上にコメントして追記しても除外が可能ですが、
複数ある場合に見づらくなる為、個人的には上記の各パラメータに設定する方が見通しが良くなると考えております。
1 | # tfsec:ignore:aws-elb-alb-not-public インターネットからのアクセスをする為、許容する |
プロジェクト全体でルールを除外したいとき
参考: https://aquasecurity.github.io/tfsec/v1.27.6/getting-started/configuration/config/
.tfsec/config.yml を作成し、除外したいルールを追加します。
あくまでも以下はサンプルで、個々の運用によって除外ルールは変更してください。
1 | --- |
1 | // tfsec 実行ディレクトリを ./envs/prd としています。 |
GitHub Actions で実行する
Pull Request 作成時をトリガーに tfsec が実行される様になります。
1 | name: tfsec |
まとめ
tfsec を導入することで AWS Config 非準拠ルールへの対応の数多くが実行でき、よりセキュアなアーキテクチャ構築に寄与できます。
Pull Request で tfsec をパスしないとマージできない様にすることで運用ルールとして自動的に適用できるのでよりお勧めです。
そして、 SaaS のサービスは日々進化しており、 tfsec もそれに追従しています。
tfsec の定期的なバージョンアップが必須なのでお気をつけください。
以上
参考になれば幸いです。
tfsec で terraform 管理リソースのセキュリティ強化
https://kenzo0107.github.io/2022/09/12/2022-09-13-setup-tfsec/