
私たちは、すべてのユーザーに包括的なオープンソースのセキュリティソリューションを提供するという目標の一環として、スキャン関連の取り組みを1か所に集約してきました。それがTrivyです。
過去1年間で、tfsecはTrivyのIaCおよび設定ミススキャン機能(Terraformスキャンを含む)の基盤を築いてきました。Terraformスキャンは、すでに長期間にわたってTrivyでネイティブサポートされています。
今後は、tfsecコミュニティの皆様にTrivyへの移行をお勧めします。Trivyに移行すると、同じ優れたTerraformスキャンエンジンを活用しながら、以下のような追加の利点が得られます。
Trivyとtfsecの比較、およびtfsecからTrivyへの移行に関する詳細については、移行ガイドをご覧ください。
tfsecは、Terraformコードの静的解析を使用して、潜在的な設定ミスを検出します。
concat())を評価Thoughtworks Tech Radarで「Adopt」評価を獲得:
Terraformを使用するプロジェクトにおいて、tfsecは潜在的なセキュリティリスクを検出するためのデフォルトの静的解析ツールとして急速に定着しています。CIパイプラインへの統合が容易で、主要なクラウドプロバイダーやKubernetesなどのプラットフォームに対するチェックライブラリが充実しています。その使いやすさから、tfsecはあらゆるTerraformプロジェクトに有益な追加要素になると考えています。

brew/linuxbrewでインストール
brew install tfsec
Chocolateyでインストール
choco install tfsec
Scoopでインストール
scoop install tfsec
Bashスクリプト(Linux):
curl -s https://raw.githubusercontent.com/aquasecurity/tfsec/master/scripts/install_linux.sh | bash
お使いのシステム用のバイナリはリリースページから入手することもできます。
または、Goでインストール:
go install github.com/aquasecurity/tfsec/cmd/tfsec@latest
go installを使用するとmasterブランチから直接インストールされ、バージョン番号はtfsec --versionで報告されないことに注意してください。
リリースページのバイナリは、tfsec署名キーD66B222A3EA4C25D5D1A097FC34ACEFB46EC39CEで署名されています。
検証方法の詳細については、署名ページをご確認ください。
tfsecは指定されたディレクトリをスキャンします。ディレクトリが指定されない場合、カレントワーキングディレクトリが使用されます。
tfsecが問題を検出した場合、終了ステータスは非ゼロになります。問題がない場合はゼロになります。
tfsec .
システムにtfsecをインストールして実行する代わりに、Dockerコンテナでtfsecを実行することもできます。
利用可能なDockerイメージは複数あります。
実行方法:
docker run --rm -it -v "$(pwd):/src" aquasec/tfsec /src
tfsecの結果と統合するためのVisual Studio Code拡張機能が開発されています。詳細はtfsec Marketplaceページをご覧ください。
リポジトリでtfsecをGitHub Actionとして実行したい場合は、https://github.com/aquasecurity/tfsec-pr-commenter-actionを使用できます。
公式のtfsecタスクをインストールできるようになりました。問題や機能リクエストはタスクリポジトリに報告してください。
一部の警告を無視したい場合があります。その場合は、テンプレートの該当行にtfsec:ignore:<ルール>を含むコメントを追加するだけで無視できます。あるいは、問題を含むブロックの上の行にコメントを追加するか、モジュールブロックにコメントを追加してモジュール内のすべての出現を無視することもできます。
例えば、オープンなセキュリティグループルールを無視する場合:
resource "aws_security_group_rule" "my-rule" {
type = "ingress"
cidr_blocks = ["0.0.0.0/0"] #tfsec:ignore:aws-vpc-no-public-ingress-sgr
}
...または...
resource "aws_security_group_rule" "my-rule" {
type = "ingress"
#tfsec:ignore:aws-vpc-no-public-ingress-sgr
cidr_blocks = ["0.0.0.0/0"]
}
コメントを追加する行がわからない場合は、tfsecの出力で発見された問題の行番号を確認してください。
複数のルールを1行で連結して無視することもできます:
#tfsec:ignore:aws-s3-enable-bucket-encryption tfsec:ignore:aws-s3-enable-bucket-logging
resource "aws_s3_bucket" "my-bucket" {
bucket = "foobar"
acl = "private"
}
ignoreに有効期限をyyyy-mm-dd形式で設定できます。これは、無視した問題が忘れられず、将来再検討されるようにするための便利な機能です。
#tfsec:ignore:aws-s3-enable-bucket-encryption:exp:2025-01-02
このような無視は2025-01-02まで有効で、それ以降は無効になります。
一部のチェックを実行から除外したい場合があります。その場合は、コマンドに-e check1,check2,etcという引数を追加するだけです。
tfsec . -e general-secrets-sensitive-in-variable,google-compute-disk-encryption-customer-keys
スキャンにtfvarsファイルから値を含めることができます。例: --tfvars-file terraform.tfvars
tfsecは多くの人気のあるクラウドおよびプラットフォームプロバイダーをサポートしています。
tfsecはCIパイプラインで実行するように設計されています。ビルドの一部として色付き出力なしでtfsecを実行したい場合があります。その場合は--no-colour(アメリカの方は--no-color)を使用してください。
tfsecの結果は、JSON、CSV、Checkstyle、Sarif、JUnit、またはプレーンな人間可読形式で出力できます。--formatフラグを使用して希望の形式を指定してください。
GitHub Security Alertsと統合し、tfsecチェックの出力を含めたい場合は、tfsec-sarif-action GitHubアクションを使用して静的解析を実行し、結果をセキュリティアラートタブにアップロードできます。
tfsec-example-projectで生成されるアラートは次のようになります。

ブランチのアラートをクリックすると、実際の問題に関する詳細情報が表示されます。

セキュリティアラートの追加について詳しくは、GitHubのドキュメントを確認してください。
HCL v1(terraform <0.12)を使用するTerraformのバージョンをサポートする必要がある場合は、tfsecのv0.1.3を使用できます。ただし、サポートは非常に限定されており、チェックの数も少なくなっています。
コントリビューションは常に歓迎します。大小を問わず、ドキュメントの更新、新しいチェックの追加、またはより大きなものまで、ぜひご協力ください。詳細についてはコントリビューションガイドをご確認ください。
contributors-imgで作成。
tfsecはAqua Securityのオープンソースプロジェクトです。
当社のオープンソースの取り組みとプロダクトポートフォリオについてはこちらをご覧ください。
コミュニティに参加し、GitHub DiscussionまたはSlackでお気軽にお問い合わせください。
| イメージ名 | ベース | コメント |
|---|
| aquasec/tfsec | alpine | 通常のtfsecイメージ |
| aquasec/tfsec-alpine | alpine | aquasec/tfsecとまったく同じですが、明示的に指定したい方向け |
| aquasec/tfsec-ci | alpine | エントリポイントなしのtfsec – コマンドを上書きしたいCIビルドに便利 |
| aquasec/tfsec-scratch | scratch | scratchをベースにしたイメージ – 装飾なし、単にtfsecを実行 |
| チェック |
|---|
| AWSチェック |
| Azureチェック |
| GCPチェック |
| CloudStackチェック |
| DigitalOceanチェック |
| GitHubチェック |
| Kubernetesチェック |
| OpenStackチェック |
| Oracleチェック |