
Tfsec теперь является частью Trivy
В рамках нашей цели предоставить комплексное решение для безопасности с открытым исходным кодом для всех, мы объединили все наши усилия по сканированию в одном месте — Trivy.
За последний год tfsec заложил основы для возможностей Trivy по сканированию IaC и неверных конфигураций, включая сканирование Terraform, которое уже давно нативно поддерживается в Trivy.
Впредь мы хотим поощрять сообщество tfsec к переходу на Trivy. Переход на Trivy даёт вам тот же отличный движок сканирования Terraform с некоторыми дополнительными преимуществами:
Для получения дополнительной информации о том, как Trivy сравнивается с tfsec, и о переходе с tfsec на Trivy, ознакомьтесь с руководством по миграции.
tfsec использует статический анализ вашего кода Terraform для выявления потенциальных неверных конфигураций.
concat()Рейтинг Adopt от Thoughtworks Tech Radar:
В наших проектах, использующих 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 в вашей системе, вы можете запустить tfsec в Docker-контейнере.
Доступно несколько вариантов Docker
Для запуска:
docker run --rm -it -v "$(pwd):/src" aquasec/tfsec /src
Разрабатывается расширение для Visual Studio Code для интеграции с результатами tfsec. Дополнительную информацию можно найти на странице 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 для номера строки обнаруженной проблемы.
Вы можете игнорировать несколько правил, объединив их в одной строке:
#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 и включить результаты ваших проверок tfsec, вы можете использовать GitHub action tfsec-sarif-action для запуска статического анализа и последующей загрузки результатов на вкладку оповещений безопасности.
Сгенерированные оповещения для tfsec-example-project выглядят так.

Когда вы переходите по оповещениям для ветки, вы получаете более подробную информацию о фактической проблеме.

Для получения дополнительной информации о добавлении оповещений безопасности обратитесь к документации GitHub
Если вам нужна поддержка версий terraform, использующих HCL v1 (terraform <0.12), вы можете использовать tfsec версии v0.1.3, хотя поддержка очень ограничена и содержит меньше проверок.
Мы всегда приветствуем contributions; большие или маленькие, это могут быть обновления документации, добавление новых проверок или что-то более серьёзное. Пожалуйста, ознакомьтесь с Руководством по участию для получения подробной информации о том, как помочь.
Сделано с помощью 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 Проверки |