одиниці
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 і Plan Control за допомогою ШІ

У минулому налаштування сервера виконувалося ручними клацаннями, командами та особистими нотатками; Результатом стали невідтворювані сервери-«сніжинки», які ніхто точно не знав, як налаштувати. Інфраструктура як код (IaC) — це підхід, який поклав край цьому хаосу: сервери, мережі, правила безпеки визначаються не вручну, а за допомогою текстових файлів (коду) з можливістю версії. Коли ви запускаєте цей код, інфраструктура налаштована точно так, як ви її написали — однакова, задокументована та повторювана щоразу. Найбільш поширеними інструментами є Terraform і CloudFormation для хмарної інфраструктури та Ansible для конфігурації сервера. Тут штучний інтелект дуже вміло пише, пояснює та переглядає код IaC. Але потужність IaC також полягає в його небезпеці: одна неправильна лінія може знищити всю інфраструктуру; тому AI пише код, ви читаєте «план», затверджуєте його та виконуєте.

У цьому розділі ми обговоримо декларативний підхід, розрізнення планування/застосування, безпеку стану та ідемпотентність; Ви навчитеся генерувати IaC за допомогою штучного інтелекту та найважливішу навичку «контроль плану».

Мислення декларативно: «а що, якщо», а не «як зробити»

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

Сплануйте/застосуйте: найважливіші перила безпеки

Рятівною функцією IaC є крок планування. У Terraform план terraform у Ansible режим --check створює попередній перегляд того, «що зміниться, якщо я застосувати це» перед запуском коду: «2 ресурси буде додано, 1 буде змінено, 0 буде видалено». Тільки так можна порівняти свій намір з реальністю перед реалізацією. Важливе правило: ніколи не звертайтеся, не прочитавши план. Особливо зверніть увагу на рядки "destroy"; Якщо ви бачите «12 буде видалено» замість «1 буде змінено» через помилку, план врятував вас від катастрофи. Після друку коду в ШІ попросіть його сказати: «перегляньте зі мною вихід плану рядок за рядком, позначте кожен рядок, який містить видалення/відтворення».

Застереження: деякі зміни в Terraform «знищують і відтворюють» ресурс, а не «оновлюють на місці». Це означає втрату даних для бази даних. Ігнорування -/+ або «примусової заміни» у виводі плану є однією з найдорожчих помилок.

Держкартотека: облік таємниць і правди

Такі інструменти, як Terraform, зберігають поточний стан інфраструктури, якою вони керують, у файлі стану. Цей файл є критичним з двох причин. По-перше, він може містити секрети (паролі до бази даних, ключі можуть переходити у стан відкритого тексту); Тому ніколи не вставляйте стан у загальнодоступне сховище чи AI, зберігайте його в зашифрованому віддаленому сервері з обмеженим доступом. По-друге, якщо держава пошкоджена або втрачена, транспортний засіб втрачає зв’язок між реальною і уявною інфраструктурою; Тому необхідна резервна копія стану та механізм блокування (замок, який не дозволяє двом людям зламати його одночасно).

Step by step: Secure IaC with AI

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

три міні-чохла

Випадок 1. План відновив базу даних. Інженер хотів збільшити розмір бази даних за допомогою коду Terraform, який він створив за допомогою ШІ. У той час як він очікував «1 для зміни» у вихідних даних плану тераформи, він побачив «1 для знищення, 1 для додавання» — параметр, який він вибрав, запускав перебудову, а не оновлення на місці, тобто всі дані було видалено. Контроль плану зупинив незворотну втрату даних до того, як він був реалізований.

Випадок 2 — Повернення з неналежного дефолту. Команда попросила ШІ код брандмауера. Щоб запустити приклад, штучний інтелект створив просте правило 0.0.0.0/0, що означає «публічне в Інтернеті». Інженер помітив це під час читання коду та звузив доступ лише до корпоративного діапазону IP. Якби це було впроваджено без перевірки, база даних була б відкритою для всього Інтернету.

Case 3 — State leak prevented. Молодший учасник збирався вставити непошкоджений файл terraform.tfstate у загальнодоступний інструмент для вирішення проблеми Terraform. Старший інженер зупинився: стан містить відкритий текстовий пароль бази даних. Натомість було надіслано розшифроване резюме з описом проблеми, а стан було перенесено на віддалений зашифрований сервер.

Чотири шаблони, які можна копіювати

1) Генерація ресурсів IaC (захищене за замовчуванням):

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

2) Аудит планування результатів:

Below is a [Terraform plan / Ansible check] output. Скажіть мені: (1) скільки ресурсів буде додано/змінено/видалено, (2) також позначте рядки «знищити» або «примусово замінити», які становлять ризик втрати даних, (3) перелічіть будь-які зміни, які здаються неочікуваними або небезпечними. Результат: [план]

3) Огляд безпеки коду IAC:

Examine the following IaC code for security: (1) are there overly broad access/permissions, (2) is encryption turned off, (3) are there secrets embedded in the code, (4) are there publicly available resources? Запропонуйте виправлення до кожної знахідки. Код: [замаскований код]

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

Я не хочу впроваджувати цю велику інфраструктурну зміну [пояснення] одразу. Розбийте його на маленькі незалежні кроки, до яких легко повернутися. Для кожного кроку: що змінюється, на що звернути увагу в плані, як скасувати, якщо є проблеми?

Слабка підказка / Сильна підказка

Слабка підказка:

Напишіть код Terraform, який створює сервер на AWS.

Невідомі регіон, розмір, безпека, мережа, шифрування. AI виробляє найвільніші, найбільш чіткі параметри за замовчуванням для роботи — якщо його запустити у виробництво, це буде вразливістю.

Потужна підказка:

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

етап

Ризик

перила безпеки

написання коду

Послаблення за замовчуванням (публічне)

Найвужчий дозвіл + читання

план/перевірка

Видалення, не усвідомлюючи цього

План огляду, знищення маркування

Застосувати

Великі одноразові зміни

Маленькі реверсивні кроки

державне управління

Витік глазурі, спотворення

Віддалений зашифрований бекенд + блокування

Поширені помилки

  • Подача заявки без читання плану. План передбачає видалення і реконструкцію; Якщо його пропустити, втрата даних неминуча.
  • Не помічаючи слабкого замовчування. Екземпляри AI часто видають 0.0.0.0/0; Якщо його буде переміщено у виробництво, це означає відкритий код для всього Інтернету.
  • Витік держави. Експорт файлу стану в штучний інтелект або відкрите сховище відкриває секрети відкритого тексту.
  • Вбудовування секретів у код. Запис пароля в код IaC є постійним витоком в історії версій коду.
  • Помилково сприймаючи переробку за оновлення. Ігнорування рядка примусової заміни призведе до втрати даних у базах даних.
Порада: навіть надаючи результат плану ШІ для перегляду, приймайте остаточне рішення на основі своїх власних знань, а не тексту плану. ШІ підсумовує план і позначає ризиковані лінії; але відповідь на запитання «чи прийнятно це видалення» залежить від вашого бізнес-контексту.

Підсумовуючи

IaC забезпечує повторюваність і документацію, керуючи інфраструктурою за допомогою версійного коду, а не вручну. ШІ є потужним партнером у написанні цього коду, його описі та перевірці на предмет безпеки. But the power of IaC is its danger: one line can wipe out the entire infrastructure. Думайте декларативно, починайте з найвужчого дозволу, виправляйте вільні параметри за замовчуванням, не допускайте секретів до коду та стану. Найважливішою перешкодою є крок планування/перевірки: ніколи не виконуйте, не прочитавши рядки видалення та перебудови. Тримайте стан зашифрованим, заблокованим і віддаленим. Код належить ШІ, рішення за вами.

Аплікаційне завдання

Виберіть невелику цільову інфраструктуру (наприклад, одну віртуальну машину та правило безпеки). За допомогою шаблону «Генерація ресурсів IaC» вище попросіть ШІ код із безпечними значеннями за замовчуванням. Ще раз перевірте код за допомогою шаблону «Перегляд безпеки коду IaC» і спробуйте знайти принаймні одне вільне налаштування. Якщо можливо, запустіть plan/--check на тестовому обліковому записі та перегляньте результати за допомогою шаблону «Plan output check»; Подивіться, чи є рядок видалення або створення заново. Запишіть свої висновки та те, як ви забезпечите державу в 6 пунктах.

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

  • [ ] Чи я вказав хмару, інструмент і версію для ШІ та запитав код із найвужчими дозволами?
  • [ ] Чи перевірив я код на наявність вільних значень за замовчуванням (0.0.0.0/0, закрите шифрування)?
  • [ ] Чи я видобув секрети змінної замість того, щоб вставити їх у код?
  • [ ] Чи я прочитав вихід плану/перевірки та позначив рядки видалення перед застосуванням?
  • [ ] Чи оцінив я вплив на втрату даних "примусової заміни"/перебудови рядків?
  • Хіба я не зберіг [ ] файл стану зашифрованим, заблокованим у віддаленому сервері та вилив його?