
作為我們為所有人提供全面的開源安全解決方案的目標的一部分,我們一直在一個地方整合所有與掃描相關的工作,這很瑣碎。
在過去的一年中,TFSEC為Trivy的IAC和錯誤配置掃描功能(包括Terraform掃描)奠定了基礎,Terraform Scanning在Trivy很長一段時間以來一直在本地支持。
展望未來,我們希望鼓勵TFSEC社區過渡到Trivy。搬到Trivy為您提供了相同的出色Terraform掃描引擎,並帶來一些額外的好處:
有關Trivy與TFSEC和從TFSEC轉變為Trivy的更多信息,請查看遷移指南。
TFSEC使用您的TerraForm代碼的靜態分析來發現潛在的錯誤配置。
concat()Thoughtworks Tech Radar採用的評分:
對於使用Terraform的項目,TFSEC已迅速成為檢測潛在安全風險的默認靜態分析工具。它很容易集成到CI管道中,並且與Kubernetes這樣的所有主要雲提供商和平台都有越來越多的檢查庫。鑑於其易用性,我們認為TFSEC可能是任何Terraform項目的好補充。

與Brew/Linuxbrew一起安裝
brew install tfsec安裝巧克力
choco install tfsec與勺子安裝
scoop install tfsecBash腳本(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 | 划痕 | 構建在刮擦上的圖像 - 沒什麼frilly,只運行tfsec |
運行:
docker run --rm -it -v " $( pwd ) :/src " aquasec/tfsec /src正在開發視覺工作室代碼擴展,以與TFSEC結果集成。更多信息可以在TFSEC市場頁面上找到
如果您想將存儲庫上的TFSEC作為github操作運行,則可以使用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才活躍,此日期之後,它將被停用。
您可能希望將一些支票排除在運行中。如果您想這樣做,則可以將新參數-e check1,check2,etc添加到您的CMD命令
tfsec . -e general-secrets-sensitive-in-variable,google-compute-disk-encryption-customer-keys您可以在掃描中包含來自TFVARS文件的值,例如: --tfvars-file terraform.tfvars 。
TFSEC支持許多流行的雲和平台提供商
| 檢查 |
|---|
| AWS檢查 |
| Azure檢查 |
| GCP檢查 |
| CloudStack檢查 |
| Digitalocean Checks |
| GitHub檢查 |
| Kubernetes檢查 |
| OpenStack檢查 |
| Oracle檢查 |
TFSEC專為在CI管道中運行而設計。您可能希望在沒有彩色輸出的情況下運行TFSEC作為構建的一部分。您可以使用--no-colour (或--no-color我們的美國朋友)來做到這一點。
您可以輸出TFSEC結果,例如JSON,CSV,CHECKSTYLE,SARIF,JUNIT或只是普通的舊人類可讀格式。使用--format標誌指定所需的格式。
如果要與github安全警報集成並包含TFSEC檢查的輸出,則可以使用tfsec-sarif-action github操作運行靜態分析,然後將結果上傳到“安全警報”選項卡。
為TFSec-示例項目生成的警報看起來像這樣。

當您單擊分支機構的警報時,您將獲得有關實際問題的更多信息。

有關添加安全警報的更多信息,請檢查GitHub文檔
如果您需要支持使用HCl V1(Terraform <0.12)的Terraform版本,則可以使用TFSEC的v0.1.3 ,儘管支持非常有限,並且檢查的檢查較少。
我們總是歡迎捐款;無論大小,都可以是文檔更新,添加新的支票或更大的東西。請檢查貢獻指南以獲取有關如何提供幫助的詳細信息。
由貢獻者製成。
tfsec是一個水上安全開源項目。在此處了解我們的開源工作和投資組合。加入社區,與我們討論GitHub討論或懈怠中的任何事情。