tfaction が Trivy をサポート
Trivy による test 結果
--
tfaction という、 GitHub Actions で Terraform Workflow を構築するための Action を開発しています。
tfaction が Trivy をサポートしたので紹介します。
背景
tfaction は working directory と Terraform Module を test するために test
と test-module
という 2 つの action を提供しています。
これらの action では tfsec や tflint などを実行していました。
しかし、今年の 2 月になって tfsec が Trivy に統合されるというアナウンスがされ、 tfsec のユーザーは Trivy に移行することが推奨されるようになりました。
tfsec から Trivy への公式のマイグレーションガイドはこちらです。
ただし、アナウンス後も tfsec がまだ使えること、当時は tfsec から trivy へのマイグレーションパスがあまりクリアではなかったことから tfaction では直ぐには対応しませんでした。
しかし Terraform v1.5.0 から導入された import block に tfsec が対応しておらず、しかもその Issue が Trivy に移行してください
ということで tfsec のメンテナによって close されてしまいました。
workaround として tfsec の --ignore-hcl-errors
を使う手もありますが、これはあくまで workaround であり完全な解決策ではありません。
自分が軽く検証した限り、 import block が使われているファイルで import block より後に tfsec の rule に違反するコードが合ったとしても、 --ignore-hcl-errors
を使うとその違反が無視されてしまうように見えました。
tfaction による Trivy サポート
そこで tfaction でも Trivy を使えるようにしました。
- https://github.com/suzuki-shunsuke/tfaction/releases/tag/v0.6.3
- https://github.com/suzuki-shunsuke/tfaction/releases/tag/v0.6.4
- https://github.com/suzuki-shunsuke/tfaction/releases/tag/v0.6.5
ただし、今回の update では互換性を維持するため、デフォルトでは従来どおり tfsec が実行され、 Trivy は実行されません。
tfsec の代わりに Trivy を実行するには以下のことをする必要があります。
- aqua.yaml から tfsec を削除し、 trivy を追加する
aqua g -i aquasecurity/trivy
- tfaction-root.yaml で tfsec を無効化し、 trivy を有効化する
tfsec:
enabled: false # デフォルトで true
trivy:
enabled: true # デフォルトで false
Trivy を有効にすると tfsec のときと同様に、 trivy config command が実行され、結果が github-comment と reviewdog によって通知されます。
これのために Action を作りました。 tfaction ではこの Action を実行しています。中身は suzuki-shunsuke/github-action-tfsec と大体同じです。
Linter の有効・無効化
上記では tfsec を無効化し trivy を有効化していますが、
tfsec, tflint, trivy に関して有効・無効を切り替えられるようになっています。
なので全ての linter を無効にしたり、あるいは全て有効にしたりも出来ます(まぁ tfsec と trivy を両方実行する意味はあまり無い気がしますが)。
今までは tfsec や tflint を実行したくない場合はこの action を使うのをやめて独自に test を実装してくださいというスタンスでしたが、特定の linter だけ無効化しつつ action は使うということが出来るようになりました。
ただし、管理者としては linter を強制したく、 working directory ごとに勝手に無効化されては困るという事もあるでしょう。
そのため現状では tfaction-root.yaml の root だけでのみ設定できるようにしています。
ただ、 working directory ごとに段階的に tfsec から trivy に移行したいというニーズもある気はするので、難しいですね。
両方のニーズを叶える方法はあるといえばありますが、そこまでする必要があるのか現状では良くわからないので、一旦様子を見たいと思います。
さいごに
以上、 tfaction が Trivy をサポートした話を紹介しました。
なにかしら要望があれば、 Discussions までお願いします。
Discussion