0Pricing
Terraform Infrastructure as Code · Урок

Политика как код и проверки соответствия требованиям

Добавьте защитный уровень в стратегию тестирования: проверяйте планы Terraform на нарушения безопасности и требований соответствия до их попадания в рабочую среду.

«Политика как код и проверки соответствия требованиям» — бесплатный урок Terraform Infrastructure as Code на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Terraform Infrastructure as Code, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Terraform Infrastructure as Code содержит 4 уроков всего.

Тестирование — это не только функциональность

Модульные и интеграционные тесты подтверждают, что ваша инфраструктура работает. Политика как код подтверждает, что она разрешена: общедоступных корзин S3 нет, используются только одобренные типы экземпляров, обязательные теги присутствуют. Эти проверки автоматически выполняются для каждого изменения.

Где выполняются проверки политик

Проверки политик выполняются между plan и apply. Вывод плана анализируется, а нарушение блокирует apply — так же как неудачный тест блокирует слияние.

Статическое сканирование с помощью tfsec

tfsec сканирует HCL в поисках известных ошибок конфигурации, не требуя облачных учётных данных. Он достаточно быстр, чтобы запускать его при каждом коммите.

tfsec .

Чтение вывода Scanner

Scanner сообщают идентификатор правила, серьёзность проблемы и ресурс, вызвавший нарушение. Используйте идентификатор, чтобы найти рекомендации по устранению проблемы или подавить принятую угрозу.

Result: aws-s3-enable-bucket-encryption
Severity: HIGH
Resource: aws_s3_bucket.data

Checkov для сканирования нескольких платформ

Checkov поддерживает Terraform и другие форматы IaC, а также сопоставляет найденные проблемы с такими платформами соответствия требованиям, как CIS и SOC2.

checkov -d . --framework terraform

Сканирование плана, а не только кода

Чтобы обнаружить проблемы, возникающие только после подстановки значений переменных, экспортируйте план в JSON и просканируйте этот результат.

terraform plan -out=tfplan.binary
terraform show -json tfplan.binary > plan.json
checkov -f plan.json

Open Policy Agent и Conftest

Для пользовательских организационных правил OPA вместе с conftest позволяет писать политики на языке Rego и проверять их по JSON-представлению плана.

conftest test plan.json --policy policy/

Простая политика Rego

Это правило Rego запрещает любую корзину S3, у которой ACL установлен в значение public-read. Если правило срабатывает, Conftest завершает запуск с ошибкой.

package main

deny[msg] {
  r := input.resource_changes[_]
  r.type == "aws_s3_bucket"
  r.change.after.acl == "public-read"
  msg := "S3 buckets must not be public-read"
}

Подавление принятых угроз

Иногда найденная проблема является известным исключением. Встроенные комментарии позволяют пропустить конкретное правило с сохранением аудиторского следа, не отключая всё сканирование.

resource "aws_s3_bucket" "logs" {
  # tfsec:ignore:aws-s3-enable-bucket-encryption
  bucket = "public-logs"
}

Ошибка сборки

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

tfsec . --soft-fail=false

Многоуровневые проверки

Зрелый конвейер сначала запускает fmt и validate, затем статическое сканирование политик (tfsec/checkov), после этого пользовательские правила OPA и только потом набор функциональных тестов Terratest. Каждый уровень выявляет свой класс проблем.

Быстрая проверка

Проверьте свои знания политики как кода.

Итоги: защитные ограничения для инфраструктуры

Вы добавили уровень соответствия требованиям в процесс тестирования:

  • tfsec и Checkov для поиска известных ошибок конфигурации.
  • OPA/conftest с Rego для пользовательских организационных правил.
  • Сканирование JSON-представления плана для обнаружения проблем с вычисленными значениями.
  • Ненулевые коды завершения блокируют применение несоответствующих конфигураций в CI.

Часто задаваемые вопросы

Урок «Политика как код и проверки соответствия требованиям» бесплатный?

Да — полный текст урока «Политика как код и проверки соответствия требованиям» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Terraform Infrastructure as Code, подпишись на CoddyKit PRO. Курс Terraform Infrastructure as Code содержит 4 уроков всего.

Чему я научусь в уроке «Политика как код и проверки соответствия требованиям»?

Добавьте защитный уровень в стратегию тестирования: проверяйте планы Terraform на нарушения безопасности и требований соответствия до их попадания в рабочую среду. Ты практикуешь Terraform Infrastructure as Code с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Terraform Infrastructure as Code?

Предыдущий опыт не требуется. Terraform Infrastructure as Code на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Политика как код и проверки соответствия требованиям»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Terraform Infrastructure as Code?

Да. Каждый урок Terraform Infrastructure as Code включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. `validate` и `fmt` в Terraform
  2. Модульное тестирование с Terratest
  3. Интеграционное тестирование облачных ресурсов
  4. Политика как код и проверки соответствия требованиям
← Назад к Terraform Infrastructure as Code