
作为我们为所有人提供全面的开源安全解决方案的目标的一部分,我们一直在一个地方整合所有与扫描相关的工作,这很琐碎。
在过去的一年中,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讨论或懈怠中的任何事情。