
すべての人に包括的なオープンソースセキュリティソリューションを提供するという目標の一環として、私たちはスキャン関連のすべての取り組みを1か所で統合しており、それは些細なことです。
過去1年間、TFSECはTerrivyのスキャン機能を含むTrivyのIAC&Misconfigurationsスキャン機能の基礎を築きました。
今後、TFSECコミュニティがトライビーに移行するよう奨励したいと考えています。 Trivyに移動すると、いくつかの追加の利点があり、同じ優れたTerraformスキャンエンジンが得られます。
トライビーがTFSECとどのように比較され、TFSECからTrivyに移行するかの詳細については、移行ガイドをご覧ください。
TFSECは、テラフォームコードの静的分析を使用して、潜在的な誤った装いを見つけます。
concat()TheNowsWorks Tech Radarによる評価された採用:
Terraformを使用したプロジェクトでは、TFSECは潜在的なセキュリティリスクを検出するためのデフォルトの静的分析ツールにすぐになりました。 CIパイプラインに統合するのは簡単で、Kubernetesのようなすべての主要なクラウドプロバイダーとプラットフォームに対してチェックのライブラリが増えています。使いやすさを考えると、TFSECはあらゆるTerraformプロジェクトに適している可能性があると考えています。

Brew/LinuxBrewとともにインストールします
brew install tfsecチョコレートと一緒にインストールします
choco install tfsecスクープでインストールします
scoop install tfsecBash Script(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オプションはたくさんあります
| 画像名 | ベース | コメント |
|---|---|---|
| Aquasec/TFSEC | 高山 | 通常のTFSEC画像 |
| aquasec/tfsec-alpine | 高山 | aquasec/tfsecとまったく同じですが、全体的には明示的であることが好きです |
| aquasec/tfsec-ci | 高山 | エントリーポイントなしのTFSEC-コマンドをオーバーライドする場所でCIビルドに役立ちます |
| aquasec/tfsec-scratch | 傷 | スクラッチの上に構築された画像 - 何もフリル、TFSECを実行するだけです |
実行する:
docker run --rm -it -v " $( pwd ) :/src " aquasec/tfsec /srcTFSECの結果と統合するために、ビジュアルスタジオコード拡張機能が開発されています。詳細については、TFSECマーケットプレイスページをご覧ください。
GitHubアクションとしてリポジトリでTFSECを実行する場合は、https://github.com/aquasecurity/tfsec-pr-commenter-actionを使用できます。
これで、公式のTFSECタスクをインストールできます。タスクリポジトリで問題/機能リクエストを提起してください。
いくつかの警告を無視することをお勧めします。そうしたい場合は、 tfsec:ignore:<rule> 。または、問題を含むブロックの上の行またはモジュールブロックにコメントを追加して、モジュール内の問題のすべての発生を無視することもできます。
たとえば、オープンなセキュリティグループルールを無視するには:
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出力を確認してください。
単一行のルールを連結することにより、複数のルールを無視できます。
# tfsec:ignore:aws-s3-enable-bucket-encryption tfsec:ignore:aws-s3-enable-bucket-logging
resource "aws_s3_bucket" "my-bucket" {
bucket = " foobar "
acl = " private "
}yyyy-mm-dd形式でignore有効期限を設定できます。これは、無視された問題が忘れられず、将来再検討する必要があることを確認したい場合に有用な機能です。
#tfsec:ignore:aws-s3-enable-bucket-encryption:exp:2025-01-02
このように無視すると、 2025-01-02までのみアクティブになります。この日付の後、それは非アクティブ化されます。
実行からいくつかのチェックを除外することをお勧めします。そうしたい場合は、CMDコマンドに新しい引数-e check1,check2,etc追加するだけです
tfsec . -e general-secrets-sensitive-in-variable,google-compute-disk-encryption-customer-keys--tfvars-file terraform.tfvarsを使用して、スキャンにtfvarsファイルの値を含めることができます。
TFSECは、多くの人気のあるクラウドおよびプラットフォームプロバイダーをサポートしています
| チェック |
|---|
| AWSチェック |
| Azureチェック |
| GCPチェック |
| CloudStackチェック |
| DigitalOceanチェック |
| Githubチェック |
| Kubernetesチェック |
| OpenStackチェック |
| オラクルチェック |
TFSECは、CIパイプラインで実行するために設計されています。色付きの出力なしでビルドの一部としてTFSECを実行することをお勧めします。これを--no-colour (または--no-colorアメリカ人の友人のために)を使用してこれを行うことができます。
JSON、CSV、CheckStyle、Sarif、Junit、または単なる古い人間の読み取り可能な形式としてTFSECの結果を出力できます。 --formatフラグを使用して、目的の形式を指定します。
GitHubセキュリティアラートと統合し、TFSECチェックの出力を含める場合は、TFSEC-Sarif-Action GitHubアクションを使用して静的分析を実行し、結果を[セキュリティ]アラートタブにアップロードできます。
TFSEC-Example-Projectのために生成されたアラートは、このように見えます。

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

セキュリティアラートの追加の詳細については、GitHubドキュメントを確認してください
HCL V1(Terraform <0.12)を使用するTerraformのバージョンをサポートする必要がある場合は、TFSECのv0.1.3使用できますが、サポートは非常に限られており、チェックが少ないです。
私たちは常に貢献を歓迎します。大小を問わず、ドキュメントの更新になり、新しいチェックなどを追加することもできます。支援方法の詳細については、寄稿ガイドを確認してください。
寄稿者で作られています。
tfsecはAqua Security Open Sourceプロジェクトです。オープンソースの作業とポートフォリオについては、こちらをご覧ください。コミュニティに参加して、GitHubの議論やSlackの問題についてお問い合わせください。