Печалби:
- Възможност за създаване на IaC (Terraform, Ansible) код с изкуствен интелект с най-тесните разрешения и безопасни настройки по подразбиране и разбиране на декларативния подход
- Възможност за предотвратяване на загуба на данни чрез четене и улавяне на редове за изтриване и принудителна замяна преди прилагане на изхода за план/проверка
- Възможност за предотвратяване на тайно изтичане чрез поддържане на държавния файл криптиран, заключен в отдалечения бекенд и разделяне на промените на малки, обратими стъпки
Управление на инфраструктурата като код (IaC): Terraform, Ansible и Plan Control с AI
В миналото настройката на сървър се извършваше с ръчни кликвания, команди и лични бележки; Резултатът беше невъзпроизводими "снежинки" сървъри, които никой не знаеше как точно да настрои. Инфраструктурата като код (IaC) е подходът, който слага край на този хаос: сървърите, мрежите, правилата за сигурност се дефинират не на ръка, а чрез текстови файлове с възможност за версии (код). Когато стартирате този код, инфраструктурата е настроена точно както сте я написали - една и съща, документирана и повтаряща се всеки път. Най-често срещаните инструменти са Terraform и CloudFormation за облачна инфраструктура и Ansible за конфигурация на сървъра. Тук AI е много опитен в писането, обяснението и прегледа на този IaC код. Но силата на IAC е и неговата опасност: една грешна линия може да унищожи цяла инфраструктура; така че изкуственият интелект пише код, вие четете „плана“, одобрявате го и го изпълнявате.
В тази част ще обсъдим декларативния подход, разграничението план/прилагане, държавна сигурност и идемпотентност; Ще научите генериране на IaC с AI и най-критичното умение, „контрол на плана“.
Декларативно мислене: „ами ако“, а не „как да направя“
Повечето IaC инструменти са декларативни: вие описвате крайното състояние на системата („да речем 3 уеб сървъра, 1 балансьор на натоварването“), инструментът сам изчислява как да стигне до това състояние. Това е различно от писането на скрипт („направи това, след това направи това“ стъпка по стъпка). Голямото предимство на декларативния подход е идемпотентността: дори да стартирате кода десет пъти, резултатът е същият, защото инструментът проверява дали желаното състояние вече съществува и ако го има, не го докосва. Запомнете тази разлика, когато пишете IaC към AI: вие го карате да казва „оставете тази инфраструктура в състояние“, а не „изпълнете тези команди“.
Планирайте/приложете: най-важният предпазен парапет
Животоспасяващата функция на IaC е стъпката на плана. В Terraform, планът на terraform, в Ansible, режимът --check създава предварителен преглед на „какво ще се промени, ако го приложа“, преди да стартирам кода: „2 ресурса ще бъдат добавени, 1 ще се промени, 0 ще бъде изтрит“. Това е единственият начин да сравните намерението си с реалността преди изпълнение. Критично правило: никога не кандидатствайте, без да сте прочели плана. Потърсете специално линиите "destroy"; Ако видите „12 ще бъдат изтрити“ вместо „1 ще бъде променено“ поради печатна грешка, планът ви е спасил от катастрофа. След като отпечатате кода на AI, накарайте го да каже „разгледайте изхода на плана ред по ред с мен, маркирайте всеки ред, който съдържа изтриване/повторно създаване“.
Внимание: Някои промени в Terraform „унищожават и създават отново“ ресурс, вместо да „актуализират на място“. Това означава загуба на данни за база данни. Пренебрегването на -/+ или "принудително заместване" в изхода на плана е една от най-скъпите грешки.
Държавно досие: запис на тайни и истина
Инструменти като Terraform запазват текущото състояние на инфраструктурата, която управляват, във файл със състояние. Този файл е критичен по две причини. Първо, може да съдържа тайни (пароли за база данни, ключове могат да изпаднат в състояние в обикновен текст); Затова никога не поставяйте състоянието в публично хранилище или AI, дръжте го в криптиран отдалечен бекенд с ограничен достъп. Второ, ако държавата е повредена или изгубена, превозното средство губи връзката между реалната инфраструктура и въображаемата инфраструктура; Следователно резервното копие на състоянието и механизмът за заключване (заключване, което не позволява на двама души да го разбият едновременно) са от съществено значение.
Стъпка по стъпка: Защитете IaC с AI
- Държавно намерение и доставчик. „2 сървъра на AWS, с Terraform, в този регион, този размер и група за сигурност.“ Ако облакът, инструментът и версията са ясни, AI произвежда правилен синтаксис.
- Изискване на настройки по подразбиране за сигурност. „Отворете групата за сигурност, активирайте криптиране, извлечете тайни за променлива, дайте публичен достъп.“ AI може да генерира свободни проби по подразбиране.
- Прочетете и разберете кода. Разберете всеки ресурс, всяко разрешение, ред по ред. Не прилагайте разрешение, което не разбирате.
- Вземете план и го проверете. Изпълнете план/--проверете, прегледайте изхода с AI, маркирайте редовете за изтриване и възстановяване.
- Нанесете малки и обратими. Приложете голяма промяна на малки части, не всички наведнъж. Познавайте пътя обратно на всяка стъпка.
- Защита на държавата. Използвайте дистанционен, криптиран бекенд и заключване; Никога не пропускайте състояние.
три мини калъфа
Случай 1 — Планът възстанови база данни. Инженер искаше да увеличи размера на база данни с кода на Terraform, който създаде с AI. Докато очакваше „1 за промяна“ в изходния план на тераформата, той видя „1 за унищожаване, 1 за добавяне“ — параметърът, който избра, задейства възстановяване, а не актуализация на място, което означава, че всички данни ще бъдат изтрити. Контролът на плана спря необратимата загуба на данни, преди да бъде приложен.
Случай 2 — Връщане от loose default. Екип поиска от AI код за защитна стена. За да изпълни примера, AI генерира просто правило 0.0.0.0/0, което означава „обществено в интернет“. Инженерът забеляза това, докато четеше кода, и стесни достъпа само до IP обхвата на предприятието. Ако беше приложена без одит, базата данни щеше да бъде отворена за целия интернет.
Случай 3 — Предотвратено изтичане на състояние. Младши член се канеше да постави файла terraform.tfstate непокътнат в публичен инструмент за решаване на проблем с Terraform. Старши инженер спря: състоянието съдържа парола за база данни в обикновен текст. Вместо това беше споделено декриптирано резюме, описващо проблема, и състоянието беше преместено в отдалечения шифрован бекенд.
Четири копируеми шаблона
1) Генериране на IaC ресурси (сигурно по подразбиране):
Вашата роля: старши инженер по облачна инфраструктура. [Облак, напр. AWS] за [инструмент, напр. Terraform] генерира код. Цел: [предназначение]. Правила за сигурност: публичен (0.0.0.0/0) достъп ОТВОРЕНО; стартиране с най-тясното разрешение; включете криптиране; извличайте тайни в променливи, не ги вграждайте в код; Проверете настройките, които могат да доведат до изтриване/повторно създаване. Обяснете всеки източник с кратък коментар.
2) Планирайте одита на изхода:
По-долу е даден изход [План на тераформа / Анзибъл проверка]. Кажете ми: (1) колко ресурси ще бъдат добавени/променени/изтрити, (2) също маркирайте редовете „унищожаване“ или „принудителна замяна“, които представляват риск от загуба на данни, (3) избройте всички промени, които изглеждат неочаквани или опасни. Резултат: [план]
3) Преглед на сигурността на IAC кода:
Проверете следния IaC код за сигурност: (1) има ли прекалено широк достъп/разрешения, (2) изключено ли е криптирането, (3) има ли тайни, вградени в кода, (4) има ли публично достъпни ресурси? Предложете корекция за всяка констатация. Код: [маскиран код]
4) Разделете промяната на безопасни части:
Не искам да прилагам тази голяма инфраструктурна промяна [обяснение] наведнъж. Разделете го на малки, независими стъпки, към които е лесно да се върнете. За всяка стъпка: какви промени, на какво трябва да обърна внимание в плана, как да го отменя, ако има проблеми?
Слаба подкана / Силна подкана
Слаба подкана:
Напишете код на Terraform, който създава сървър на AWS.
Регионът, размерът, сигурността, мрежата, криптирането са неясни. AI произвежда най-свободните, най-явните настройки по подразбиране за работа - ако бъде пуснат в производство, това би било уязвимост.
Мощна подкана:
Вашата роля: старши инженер по облачна инфраструктура. Дефинирайте уеб сървър с Terraform на AWS eu-central-1: t3.small, само от корпоративния IP диапазон (ще го дам с променлива), порт 443 е отворен, дискът е криптиран, няма публичен достъп, етикетите са задължителни. Тайните се разкриват на променливата. След кода: Преди да го внедря, кажете ми 3 типа линии, на които трябва да обърна внимание в плана и обяснете обратния път.
Етап
Риск
предпазен парапет
писане на код
Разхлабена настройка по подразбиране (публична)
Най-тясното разрешение + четене
план/проверка
Изтриване без да осъзнаваш
Планирайте инспекция, унищожете маркировката
Кандидатствайте
Голяма еднократна промяна
Малки, обратими стъпки
държавна администрация
Изтичане на глазура, изкривяване
Дистанционно криптиран бекенд + заключване
Често срещани грешки
- Кандидатстване без четене на плана. Планът предвещава заличаване и реконструкция; Ако се пропусне, загубата на данни е неизбежна.
- Без да забелязвате разхлабеното по подразбиране. AI екземплярите често произвеждат 0.0.0.0/0; Ако бъде преместен в производство, това означава отворен код за целия интернет.
- Течаща държава. Експортирането на държавния файл в AI или отворено хранилище разкрива тайни в обикновен текст.
- Вграждане на тайни в кода. Записването на паролата в IaC кода е постоянно изтичане в историята на версиите на кода.
- Объркайте реконструкцията с актуализация. Пренебрегването на реда за замяна на сили ще доведе до загуба на данни в базите данни.
Съвет: Дори когато предоставяте изхода на плана на AI за преглед, вземете окончателното решение на базата на собствените си знания, а не на текста на плана. AI обобщава плана и маркира рискови линии; но отговорът на въпроса „приемливо ли е това изтриване“ зависи от вашия бизнес контекст.
В обобщение
IaC осигурява повторяемост и документация чрез управление на инфраструктура с код с възможност за версии, а не с ръчно кликване. AI е мощен партньор в писането на този код, описването му и прегледа му за сигурност. Но силата на IAC е неговата опасност: една линия може да унищожи цялата инфраструктура. Мислете декларативно, започнете с най-тясното разрешение, коригирайте свободните настройки по подразбиране, пазете тайните извън кода и състоянието. Най-важната защитна парапет е стъпката на план/проверка: никога не изпълнявайте, без да прочетете редовете за изтриване и възстановяване. Поддържайте състоянието криптирано, заключено и отдалечено. Кодът е на AI, решението е ваше.
Задача за приложение
Изберете малка инфраструктурна цел (например една виртуална машина и правило за сигурност). С шаблона „Генериране на ресурси на IaC“ по-горе помолете AI за код с безопасни настройки по подразбиране. Проверете отново кода с шаблона „Преглед на сигурността на IaC кода“ и се опитайте да намерите поне една свободна настройка. Ако е възможно, стартирайте план/--проверка на тестов акаунт и прегледайте изхода с шаблона „Планирайте проверка на изхода“; Вижте дали има ред за изтриване или повторно създаване. Запишете констатациите си и как ще осигурите държавата в 6 точки.
контролен списък
- [] Посочих ли облак, инструмент и версия на AI и поисках ли код с най-тесните разрешения?
- [ ] Проверих ли кода за разхлабени настройки по подразбиране (0.0.0.0/0, затворено криптиране)?
- [ ] Извлякъл ли съм тайните на променливата, вместо да ги вградя в кода?
- [ ] Прочетох ли резултата от плана/проверката и маркирах ли редовете за изтриване, преди да приложа?
- [ ] Оценил ли съм въздействието на загубата на данни от „принудителната подмяна“/възстановяване на редове?
- Не държах ли файла [ ] State криптиран, заключен в отдалечения бекенд и не го изтекох?