Единицы
1. Введение в DevOps и облачный ИИ: роли, границы, аутентификация, безопасность и секреты 2. Проектирование конвейеров CI/CD с использованием искусственного интеллекта: GitHub Actions и GitLab CI 3. Управление инфраструктурой как кодом: искусственный интеллект с Terraform и IaC 4. Контейнеризация: Dockerfile и оптимизация изображений с помощью искусственного интеллекта 5. Kubernetes: Manifest, Helm и оркестровка на базе искусственного интеллекта 6. Мониторинг и наблюдаемость: правила показателей, журналов, трассировки и сигналов тревоги 7. Управление инцидентами и вскрытие: анализ первопричин с помощью искусственного интеллекта 8. Оптимизация затрат в облаке (FinOps): охота за отходами с помощью искусственного интеллекта 9. Генерация сценариев и автоматизации: Bash, Python и PowerShell 10. Безопасность и управление секретами: DevSecOps и искусственный интеллект 11. Проверка продукта, стратегии выпуска и сквозной рабочий процесс искусственного интеллекта
Единица 3 / 11

Управление инфраструктурой как кодом: искусственный интеллект с Terraform и IaC

Прибыль:

  • Способность понимать концепцию IaC и рабочий цикл Terraform (инициализация, планирование, применение, состояние, модуль) и заставить искусственный интеллект создавать безопасные проекты HCL.
  • Возможность сверять каждое изменение с планом перед применением и обнаруживать неожиданные строки уничтожения/замены.
  • Способность применять принципы сохранения секретов в коде, безопасного хранения состояния и минимизации разрешений IAM.

Раньше для настройки сервера нужно было щелкнуть мышью по облачной панели: создать виртуальную машину, настроить сеть, добавить правило безопасности. Этот метод был медленным, подверженным ошибкам и неповторимым — было практически невозможно настроить ту же среду во второй раз. Сегодня инфраструктура управляется как код. IaC (Инфраструктура как код) — это подход к описанию облачных ресурсов, таких как серверы, сети и базы данных, в текстовых файлах, а не вручную. Эти файлы находятся в системе контроля версий (Git); Вы можете увидеть, кто, что, когда и что изменил; Вы можете настроить одну и ту же инфраструктуру много раз совершенно одинаковым способом с помощью одной команды.

Наиболее распространенным инструментом IaC является Terraform. Terraform берет определения, которые вы пишете на читаемом языке под названием HCL (язык конфигурации HashiCorp — язык конфигурации Terraform), переводит их в API облачного провайдера (AWS, Azure, GCP) и создает ресурсы. ИИ очень хорошо знает HCL и быстро производит сложные блоки. Но в IaC цена ошибки высока: одно неправильное определение может уничтожить всю производственную базу данных. Вот почему золотое правило Terraform — рассматривать каждое изменение с помощью «плана», прежде чем его реализовывать.

Время выполнения Terraform

Terraform работает с тремя основными командами, знание которых является необходимым условием для управления выводом ИИ:

  • `terraform init`: Запускает проект, загружает необходимые плагины провайдера.
  • `план терраформирования`: сравнивает текущую ситуацию с желаемой и показывает, что добавить, что изменить, что удалить. Ничего не реализует. Это наиболее важный шаг безопасности.
  • `terraform apply`: фактически применяет План, создавая/изменяя ресурсы.

Кроме того, жизненно важны две концепции. Состояние (файл состояния): это файл, в котором Terraform хранит текущее состояние ресурсов, которыми он управляет; Обычно он хранится на удаленном и запираемом складе, чтобы два человека не могли одновременно его изменить или уничтожить. Модуль: Многоразовый конфигурационный пакет; Например, вы можете использовать модуль «Настройка сети» во многих проектах.

Совет: Самый опасный знак в выводе Terraform — это уничтожение или -/+ (замена) строк в выводе плана. Это означает, что ресурс будет удален. Если вы видите в плане неожиданное разрушение, никогда не применяйте его, сначала разберитесь, почему оно появилось.

Шаг за шагом: написание IaC с помощью ИИ

  1. Уточните желаемую инфраструктуру. Будьте конкретны, например: «один VPC, две подсети, одна группа безопасности и один t3.micro EC2 на eu-central-1».
  2. Укажите провайдера и версию. Какое облако, какой Terraform и версия провайдера? Если вы не укажете версию, AI может вернуть устаревший/несовместимый синтаксис.
  3. Подготовьте проект HCL. Также запросите переменные и выходные данные.
  4. Уберите Секрет. Такие значения, как пароли и ключи, должны попадать в переменную и секретное хранилище, а не в код.
  5. Запустите `init` + `plan`. Прочитайте выходные данные плана построчно; Проверьте наличие неожиданных удалений.
  6. Начните с малого, внедряйте постепенно. Сначала примените его в изолированной тестовой учетной записи/среде.

Безопасность: риски, специфичные для IaC

IaC столь же рискован, сколь и силен. Три критических момента:

  1. В файле состояния есть секрет. Состояние Terraform иногда сохраняет конфиденциальные значения, такие как пароли базы данных, в виде открытого текста. Никогда не помещайте State в общедоступный репозиторий; Используйте зашифрованный удаленный сервер с ограниченным доступом.
  2. Не встраивайте секреты в HCL. Строки типа пароля="prod123" навсегда записываются в историю Git. Вместо этого используйте переменную и укажите значение во время выполнения из переменной среды (TF_VAR_...) или секретного хранилища.
  3. Очень широкое разрешение IAM. ИИ иногда создает блоки типа Action: «*» (разрешить все), чтобы «заставить это работать». Это уязвимость; сузить разрешение до необходимого минимума.
Внимание: как только секрет попадает в историю Git, он остается в прошлом и может быть скомпрометирован, даже если вы удалите файл. Если вы совершили фиксацию по ошибке, немедленно отмените и поменяйте секрет; Просто удалить недостаточно.

Таблица признаков рискованного плана

Распечатка плана

Значение

что делать

+создать

Будет добавлен новый ресурс

В целом безопасно, однако просмотрите

~ обновление на месте

Источник изменится на сайте

Проверьте влияние (будет ли отключение?)

-/+ заменить

Будет удалено и создано заново

ВНИМАНИЕ: возможна потеря данных.

- уничтожить

Ресурс будет уничтожен

СТОП: никогда не подавайте заявку, если вы этого не ожидаете

три мини-кейса

Случай 1 — 2 дня работы за 3 часа. Одна команда собиралась написать Terraform для настройки новой тестовой среды (VPC, подсети, база данных RDS, кластер ECS), но они только что перешли на HCL. Они описали ИИ архитектуру и версии и подготовили модульный проект. Они сверили каждый модуль с планом и запустили его за 3 часа; Им потребовалось бы два дня ручных проб и ошибок.

Случай 2 — план был удален. Инженер реализовал план без применения кода обновления, созданного ИИ. В выводе содержалось -/+ replace для рабочей базы данных — ИИ пытался заменить не заменяемое поле, что означало удаление и воссоздание базы данных. Инженер прекратил применение и изменил метод на безопасный. Привычка планировать предотвратила катастрофу.

Случай 3 — замаскированная секретная утечка. Младший, YZ выдал db_password = "S3cret!" Он зафиксировал линию как есть и продвинул ее. Попался на проверку кода; Пароль был немедленно отменен и изменен, значение было перенесено в переменную и передано из секретного хранилища. Урок: в HCL никогда не бывает секретов в виде открытого текста.

Четыре копируемых шаблона

1) Создание проекта инфраструктуры:

Напишите следующую инфраструктуру в [ОБЛАКО: AWS] с помощью Terraform (версия ~> 1.7): [СПИСОК ИСТОЧНИКОВ]. Регион [X]. Правила: — Сделайте все конфиденциальные значения переменными, не встраивайте их в HCL. — Исправьте версию поставщика (required_providers). — Минимизируйте разрешения IAM, не используйте «*». — Верните [X, Y] в качестве вывода. Придавайте код модульно и с пояснениями.

2) Интерпретация результатов плана:

Проанализируйте результат «плана терраформирования» ниже. Перечислите мне: (1) какие ресурсы были добавлены/изменены/УДАЛЕНЫ, (2) строки, в которых существует риск потери или прерывания данных, (3) 3 вопроса, которые мне следует задать перед подачей заявки. План: [ВЫХОД]

3) Проверьте существующий HCL на предмет безопасности:

Проверьте следующий код Terraform на предмет безопасности: встроенный секрет, слишком широкое разрешение IAM, правило открытой сети (0.0.0.0/0), незашифрованное хранилище? Запишите каждый вывод в порядке важности и исправлений. Код: [HCL]

4) Преобразуйте повторяющийся код в модуль:

Преобразуйте следующий повторяющийся код Terraform в модуль многократного использования: какие значения должны быть переменными, каким должен быть интерфейс модуля? Также покажите пример использования. Код: [HCL]

Слабая подсказка / Сильная подсказка

Слабое: «Создайте базу данных с помощью Terraform».

Результат: непонятно, какое облако, какой движок, какая версия, зашифровано или нет; Благодаря устаревшему синтаксису ИИ может предоставить общедоступный пример внедрения пароля в код.

Стронг: «Создайте экземпляр RDS PostgreSQL 15 на AWS с Terraform ~> 1.7. Создайте переменную пароля, не встраивайте ее в код. Хранилище зашифровано, доступно только из частной подсети, а не общедоступной. Исправьте версию поставщика. Верните конечную точку в качестве вывода».

Разница: во втором приглашении указывается движок, версия, шифрование, сетевое ограничение и секретное правило — выходные данные безопасны и близки к производственным.

Распространенные ошибки

  • «Подать заявку», не составив «плана». Самая дорогая ошибка в IaC; всегда планируйте сначала.
  • Встраивание секрета в HCL. Создает постоянную утечку в историю Git.
  • Состояние хранения небезопасно. Незашифрованное, разблокированное публичное состояние — это катастрофа.
  • Не исправляем версию. Использование провайдера без указания версии приведет к внезапным сбоям в будущем.
  • *`Действие: широкие разрешения, такие как ""`.** Нарушается принцип наименьших привилегий.
  • Игнорирование неожиданного «разрушения». Применение удаленных строк в Плане без вопросов.

В заключение

IaC превращает инфраструктуру в повторяемый, версионируемый и проверяемый код; Самый распространенный инструмент — Terraform. ИИ быстро создает заглушки HCL, но вы должны указать версию, сведения об облаке и правила безопасности. Непогрешимое правило Terraform: видеть каждое изменение с помощью плана, запрашивать неожиданные удаления, хранить секреты в коде и надежно сохранять состояние. Строки уничтожения и замены в выводе плана — это места, которые следует читать наиболее внимательно.

Задача приложения

Попросите ИИ создать небольшую инфраструктуру (например, сегмент хранилища и политику доступа), используя приведенный выше шаблон «Создать эскиз инфраструктуры». Затем: (1) проверьте шаблон «проверки» на наличие секретных или * разрешений, встроенных в код; (2) если возможно, запустите init + plan в тестовой учетной записи и прочитайте выходные данные плана с помощью шаблона «интерпретация плана»; (3) обратите внимание на любые неожиданные удаления/изменения.

контрольный список

  • [ ] Я добавил в приглашение облачные ограничения, версию Terraform/провайдера и ограничения шифрования/сети.
  • [ ] В коде нет секретного текста; значения точности переменные.
  • [ ] Я сузил IAM/разрешения до минимальных, * Я их не использовал.
  • [ ] Я запустил план перед применением и прочитал выходные данные построчно.
  • [ ] Я проверил, что в Плане нет неожиданного уничтожения/замены.
  • [ ] Я уверен, что состояние хранится в зашифрованном, заблокированном и ограниченном бэкэнде.