Единицы
1. Введение в искусственный интеллект в управлении системами и сетями: роли, границы, аутентификация и полномочия 2. Скрипты автоматизации: безопасное создание Bash, PowerShell и Python 3. Анализ журналов и анализ первопричин: поиск сигнала в шуме 4. Мониторинг мощности и производительности: считывание показателей и планирование на будущее 5. Управление конфигурацией: создание конфигурации, проверка и фиксация отклонений 6. Управление инфраструктурой как кодом (IaC): Terraform, Ansible и Plan Control 7. Управление документацией и информацией: Runbook, Post-mortem и корпоративная память 8. Прогнозируемое обслуживание: выявление сбоев до того, как они произойдут 9. Управление изменениями: оценка рисков, откат и окно обслуживания 10. Безопасность и оборона: использование искусственного интеллекта в целях обороны и в пределах полномочий 11. Сквозная интеграция: управление инцидентом от начала до конца
Единица 6 / 11

Управление инфраструктурой как кодом (IaC): Terraform, Ansible и Plan Control

Прибыль:

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

Управление инфраструктурой как кодом (IaC): Terraform, Ansible и управление планированием с помощью ИИ

Раньше настройка сервера выполнялась вручную, с использованием команд и личных заметок; Результатом стали невоспроизводимые серверы-«снежинки», которые никто точно не знал, как настроить. Инфраструктура как код (IaC) — это подход, который положит конец этому хаосу: серверы, сети, правила безопасности определяются не вручную, а с помощью текстовых файлов (кода) с поддержкой версий. Когда вы запускаете этот код, инфраструктура настраивается точно так, как вы ее написали — одинаковая, документированная и повторяемая каждый раз. Наиболее распространенными инструментами являются Terraform и CloudFormation для облачной инфраструктуры и Ansible для настройки сервера. Здесь ИИ очень умело пишет, объясняет и проверяет этот IaC-код. Но сила IaC также заключается в его опасности: одна неправильная линия может уничтожить всю инфраструктуру; итак, ИИ пишет код, вы читаете «план», утверждаете его и выполняете.

В этом модуле мы обсудим декларативный подход, различие между планом и применением, государственную безопасность и идемпотентность; Вы изучите создание IaC с помощью ИИ и самый важный навык — «управление планированием».

Мыслить декларативно: «что если», а не «как сделать».

Большинство инструментов IaC являются декларативными: вы описываете конечное состояние системы («скажем, 3 веб-сервера, 1 балансировщик нагрузки»), инструмент сам вычисляет, как добраться до этого состояния. Это отличается от написания сценария («сделай это, потом сделай то» шаг за шагом). Большим преимуществом декларативного подхода является идемпотентность: даже если вы запустите код десять раз, результат будет тот же, потому что инструмент проверяет, существует ли уже нужное состояние, а если есть, то не трогает его. Помните об этой разнице, когда вы пишете IaC для ИИ: вы заставляете его говорить «позволить этой инфраструктуре находиться в состоянии», а не «выполнить эти команды».

Планирование/применение: самые важные перила безопасности

Особенностью IaC, спасающей жизни, является этап планирования. В Terraform план terraform, в Ansible, режим --check создает предварительный просмотр того, «что изменится, если я это применю» перед запуском кода: «2 ресурса будут добавлены, 1 изменится, 0 будет удалено». Это единственный способ сравнить свое намерение с реальностью перед его реализацией. Критическое правило: никогда не подавайте заявку, не прочитав план. Особенно обратите внимание на строки «уничтожения»; Если вы видите «12 будет удалено» вместо «1 будет изменено» из-за опечатки, план спас вас от катастрофы. После печати кода для ИИ попросите его сказать: «Изучите вывод плана построчно вместе со мной, отметьте каждую строку, содержащую удаление/воссоздание».

Внимание: некоторые изменения в Terraform «уничтожают и воссоздают» ресурс, а не «обновляют на месте». Это означает потерю данных для базы данных. Игнорирование -/+ или «замены сил» при выводе плана — одна из самых дорогостоящих ошибок.

Государственное дело: запись тайн и правды

Такие инструменты, как Terraform, сохраняют текущее состояние инфраструктуры, которой они управляют, в файле состояния. Этот файл важен по двум причинам. Во-первых, он может содержать секреты (пароли баз данных, ключи могут находиться в открытом виде); Поэтому никогда не вставляйте состояние в публичный репозиторий или в ИИ, храните его в зашифрованном удаленном бэкэнде с ограниченным доступом. Во-вторых, если государство коррумпировано или утрачено, транспортное средство теряет связь между реальной инфраструктурой и воображаемой инфраструктурой; Поэтому резервное копирование состояния и механизм блокировки (замок, который не позволяет двум людям одновременно взломать) необходимы.

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

  1. Укажите намерение и поставщика. «2 сервера на AWS с Terraform, в этом регионе, такого размера и группой безопасности». Если облако, инструмент и версия ясны, ИИ выдает правильный синтаксис.
  2. Запросить настройки безопасности по умолчанию. «Открыть группу безопасности, включить шифрование, извлечь секреты в переменную, предоставить публичный доступ». По умолчанию ИИ может генерировать отдельные образцы.
  3. Прочтите и поймите код. Понимайте каждый ресурс, каждое разрешение, построчно. Не применяйте разрешение, которого вы не понимаете.
  4. Получите план и проверьте его. Запустите план/--проверку, проверьте выходные данные с помощью AI, отметьте строки удаления и перестроения.
  5. Применяйте небольшие и обратимые. Вносите большие изменения небольшими частями, а не все сразу. Знайте путь назад на каждом шагу.
  6. Защитить государство. Используйте удаленный зашифрованный сервер и блокировку; Никогда не утечка состояния.

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

Случай 1. План восстановил базу данных. Инженер хотел увеличить размер базы данных с помощью кода Terraform, который он создал с помощью ИИ. Хотя он ожидал «1 изменить» в выводе плана терраформирования, он увидел «1 уничтожить, 1 добавить» — выбранный им параметр запускал перестройку, а не обновление на месте, что означало, что все данные будут удалены. Контроль плана остановил необратимую потерю данных до того, как она была реализована.

Случай 2 — Возврат из свободного дефолта. Команда запросила у ИИ код брандмауэра. Для запуска примера ИИ сгенерировал простое правило 0.0.0.0/0, что означает «публично в Интернете». Инженер заметил это, читая код, и сузил доступ только до диапазона IP-адресов предприятия. Если бы это было реализовано без аудита, база данных была бы открыта для всего Интернета.

Случай 3 — Утечка состояния предотвращена. Младший участник собирался вставить файл terraform.tfstate неповрежденным в общедоступный инструмент, чтобы решить проблему Terraform. Старший инженер остановился: состояние содержало пароль к базе данных в виде открытого текста. Вместо этого было опубликовано расшифрованное описание проблемы, а состояние было перенесено на удаленный зашифрованный сервер.

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

1) Генерация ресурсов IaC (безопасное по умолчанию):

Ваша роль: старший инженер облачной инфраструктуры. [Облако, например. AWS] для [инструмента, например. Terraform] генерирует код. Цель: [цель].Правила безопасности: публичный (0.0.0.0/0) доступ ОТКРЫТ;начинать с самого узкого разрешения; включить шифрование; извлекайте секреты в переменные, а не встраивайте их в код; Проверьте настройки, которые могут привести к удалению/воссозданию. Поясните каждый источник с кратким комментарием.

2) План выходного аудита:

Ниже приведен вывод [План Terraform/проверка Ansible]. Скажите мне: (1) сколько ресурсов будет добавлено/изменено/удалено, (2) также отметьте строки «уничтожить» или «принудительно заменить», которые создают риск потери данных, (3) перечислите любые изменения, которые кажутся неожиданными или опасными. Результат: [план]

3) Проверка безопасности кода IaC:

Проверьте следующий код IaC на предмет безопасности: (1) существует ли слишком широкий доступ/разрешения, (2) отключено ли шифрование, (3) есть ли в коде секреты, (4) существуют ли общедоступные ресурсы? Предложите исправление для каждого вывода. Код: [маскированный код]

4) Разделите изменение на безопасные части:

Я не хочу осуществлять это большое изменение инфраструктуры [объяснение] сразу. Разбейте его на небольшие независимые шаги, к которым легко вернуться. По каждому шагу: какие изменения, на что обратить внимание в плане, как отменить, если возникнут проблемы?

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

Слабая подсказка:

Напишите код Terraform, который создает сервер на AWS.

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

Мощная подсказка:

Ваша роль: старший инженер облачной инфраструктуры. Определим веб-сервер с Terraform на AWS eu-central-1: t3.small, только из диапазона корпоративных IP (приведу с переменной), порт 443 открыт, диск зашифрован, публичного доступа нет, метки обязательны. Тайны раскрываются переменной. После кода: Прежде чем реализовывать его, назовите мне 3 типа линий, на которые мне следует обратить внимание в плане, и объясните обратный путь.

Этап

Риск

перила безопасности

написание кода

Свободный по умолчанию (публичный)

Самое узкое разрешение + чтение

планировать/проверять

Удаление, даже не осознавая этого

Запланировать осмотр, уничтожить маркировку

Применить

Крупное единовременное изменение

Маленькие, обратимые шаги

государственное управление

Течь глазури, деформация

Удаленный зашифрованный сервер + блокировка

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

  • Подача заявки без прочтения плана. План предусматривает удаление и реконструкцию; Если его пропустить, потеря данных неизбежна.
  • Не замечая свободного дефолта. Экземпляры AI часто выдают 0.0.0.0/0; Если его перенесут в производство, это означает открытый исходный код для всего Интернета.
  • Утечка государства. Экспорт файла состояния в ИИ или открытый репозиторий раскрывает секреты открытого текста.
  • Встраивание секретов в код. Запись пароля в код IaC — это постоянная утечка истории версий кода.
  • Принимаем ребилд за обновление. Игнорирование строки замены сил приведет к потере данных в базах данных.
Совет: даже передавая результаты плана на рассмотрение ИИ, основывайте окончательное решение на своих собственных знаниях, а не на тексте плана. ИИ обобщает план и отмечает рискованные направления; но ответ на вопрос «допустимо ли это удаление» зависит от вашего бизнес-контекста.

В заключение

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

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

Выберите небольшую цель инфраструктуры (например, одну виртуальную машину и правило безопасности). Используя приведенный выше шаблон «Генерация ресурсов IaC», запросите у ИИ код с безопасными настройками по умолчанию. Дважды проверьте код с помощью шаблона «Проверка безопасности кода IaC» и попытайтесь найти хотя бы одну ненадежную настройку. Если возможно, запустите plan/--check на тестовой учетной записи и просмотрите выходные данные с помощью шаблона «Плановая проверка выходных данных»; Посмотрите, есть ли строка удаления или воссоздания. Запишите свои выводы и то, как вы обезопасите состояние в 6 пунктах.

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

  • [ ] Указывал ли я облако, инструмент и версию для AI и запрашивал код с самыми узкими разрешениями?
  • [ ] Проверил ли я код на наличие свободных значений по умолчанию (0.0.0.0/0, закрытое шифрование)?
  • [ ] Извлек ли я секреты из переменной вместо того, чтобы встроить их в код?
  • [ ] Прочитал ли я выходные данные плана/проверки и отметил ли строки удаления перед применением?
  • [ ] Оценил ли я влияние потери данных при «принудительной замене»/перестроении линий?
  • Разве я не хранил файл состояния [ ] зашифрованным, заблокированным на удаленном сервере и не слил его?