Јединице
1. Увод у ДевОпс и Цлоуд АИ: улоге, границе, аутентификација, безбедност и тајне 2. Дизајнирање ЦИ/ЦД цевовода са вештачком интелигенцијом: ГитХуб акције и ГитЛаб ЦИ 3. Управљање инфраструктуром као код: вештачка интелигенција са Терраформом и ИаЦ-ом 4. Контејнеризација: Доцкерфиле и оптимизација слике са вештачком интелигенцијом 5. Кубернетес: Манифест, кормило и АИ-поверед оркестрација 6. Мониторинг и опсервабилност: метричка, дневник, правила праћења и аларма 7. Управљање инцидентима и постмортем: анализа корена уз помоћ вештачке интелигенције 8. Оптимизација трошкова у облаку (ФинОпс): Лов на отпад помоћу вештачке интелигенције 9. Генерисање скрипти и аутоматизације: Басх, Питхон и ПоверСхелл 10. Безбедност и управљање тајнама: ДевСецОпс и вештачка интелигенција 11. Провера производа, стратегије издавања и ток АИ рада од краја до краја
Јединица 3 / 11

Управљање инфраструктуром као код: вештачка интелигенција са Терраформом и ИаЦ-ом

Добици:

  • Способност разумевања концепта ИаЦ-а и радног циклуса Терраформ-а (покретање, планирање, примена, стање, модул) и поседовање вештачке интелигенције која производи безбедне ХЦЛ нацрте
  • Могућност провере сваке промене планом пре примене и хватања неочекиваних линија за уништавање/замена
  • Способност примене принципа чувања тајни ван кода, безбедног чувања стања и минимизирања ИАМ дозвола

У прошлости, подешавање сервера је било питање кликања на клауд панел: креирање виртуелне машине, подешавање мреже, додавање безбедносног правила. Овај метод је био спор, склон грешкама и непоновљив — било је скоро немогуће подесити исто окружење други пут. Данас се инфраструктуром управља као код. ИаЦ (Инфраструцтуре ас Цоде) је приступ опису ресурса у облаку као што су сервери, мреже и базе података у текстуалним датотекама, а не ручно. Ове датотеке се налазе у контроли верзија (Гит); Видите ко је шта променио, када и шта; Можете подесити исту инфраструктуру много пута, на потпуно исти начин, једном командом.

Најчешћи ИаЦ алат је Терраформ. Терраформ преузима дефиниције које пишете на читљивом језику који се зове ХЦЛ (ХасхиЦорп Цонфигуратион Лангуаге — Терраформов конфигурациони језик), преводи их у АПИ добављача облака (АВС, Азуре, ГЦП) и креира ресурсе. АИ веома добро познаје ХЦЛ и брзо производи сложене блокове. Али у ИаЦ-у, цена грешке је висока: једна погрешна дефиниција може да избрише целу производну базу података. Зато је златно правило у Терраформу да се свака промена види са 'планом' пре него што је примени.

Терраформ-ово време извођења

Терраформ ради са три основне команде - знајући да је ово предуслов за контролу АИ излаза:

  • `терраформ инит`: Покреће пројекат, преузима потребне додатке добављача.
  • `терраформ план`: Упоређује тренутну ситуацију са жељеном и показује шта додати, шта променити, шта избрисати. Не имплементира ништа. То је најкритичнији безбедносни корак.
  • `терраформ аппли`: Заправо примењује План, креирајући/модификујући ресурсе.

Поред тога, два концепта су од виталног значаја. Стање (датотека стања): Ово је датотека у којој Терраформ чува тренутно стање ресурса којима управља; Обично се чува у удаљеном и закључаном складишту тако да две особе не могу да га мењају или униште у исто време. Модул: Конфигурациони пакет за вишекратну употребу; На пример, можете користити модул „подешавање мреже“ у многим пројектима.

Савет: Најопаснији знак у Терраформ излазу је уништити или -/+ (замени) линије у излазу плана. То значи да ће ресурс бити избрисан. Ако видите неочекивано уништење у плану, никада не примените, прво схватите зашто се појавио.

Корак по корак: Писање ИаЦ-а са АИ

  1. Појасните жељену инфраструктуру. Будите конкретни као „један ВПЦ, две подмреже, једна безбедносна група и једна т3.мицро ЕЦ2 на еу-централ-1“.
  2. Наведите провајдера и верзију. Који облак, која верзија Терраформа и провајдера? Ако не наведете верзију, АИ може вратити застарелу/некомпатибилну синтаксу.
  3. Нека се изради ХЦЛ нацрт. Такође захтевајте променљиве и излазе.
  4. Извадите Сецрет. Вредности као што су лозинке и кључеви треба да иду у променљиви и тајни трезор, а не у код.
  5. Покрените `инит` + `план`. Читајте излаз плана ред по ред; Проверите да ли постоје неочекивана брисања.
  6. Почните са малим, имплементирајте постепено. Прво га примените у изолованом тест налогу/окружењу.

Безбедност: Ризици специфични за ИаЦ

ИаЦ је ризичан колико и моћан. Три критичне тачке:

  1. У државном досијеу постоји тајна. Терраформ стање понекад чува осетљиве вредности, као што су лозинке базе података, у отвореном тексту. Никада не стављајте државу у јавно складиште; Користите шифровану удаљену позадину са ограниченим приступом.
  2. Немојте уграђивати тајне у ХЦЛ. Редови попут пассворд="прод123" се трајно уписују у Гит историју. Уместо тога, користите променљиву и дајте вредност у време извођења из променљиве окружења (ТФ_ВАР_...) или тајног трезора.
  3. Веома широка ИАМ дозвола. АИ понекад производи блокове као што је Акција: "*" (дозволи све) да би "радио". Ово је рањивост; сузите дозволу на потребан минимум.
Пажња: Једном када тајна уђе у историју Гита, она остаје у прошлости и може бити угрожена, чак и ако избришете датотеку. Ако грешком извршите, одмах откажите и ротирајте тајну; Само брисање није довољно.

Таблица са знаковима ризичних планова

Испис плана

Значење

шта да се ради

+креирати

Нови ресурс ће бити додат

Генерално безбедно, ипак прегледајте

~ ажурирање на месту

Извор ће се променити на сајту

Проверите утицај (да ли ће доћи до прекида рада?)

-/+ замени

Биће обрисан и поново креиран

ОПРЕЗ: може доћи до губитка података

- уништити

Ресурс ће бити уништен

СТОП: никада се не примењујте ако то не очекујете

три мини кофера

Случај 1 — 2 дана рада за 3 сата. Један тим је намеравао да напише Терраформ да постави ново тестно окружење (ВПЦ, подмреже, РДС база података, ЕЦС кластер), али су се управо преселили на ХЦЛ. Они су описали архитектуру и верзије АИ и направили модуларни нацрт. Они су верификовали сваки модул са планом и покренули га за 3 сата; Требало би им два дана ручног покушаја и грешака.

Случај 2 — план је захваћен брисањем. Инжењер је покренуо план без примене кода за ажурирање генерисане вештачком интелигенцијом. Излаз је садржао -/+ замену за производну базу података — АИ је покушао да замени незаменљиво поље, што је значило брисање и поновно креирање базе података. Инжењер је престао да примењује и променио промену на безбедан метод. Навика планирања спречила је катастрофу.

Случај 3 — закопано тајно цурење. Јуниор, ИЗ је издао дб_пассворд = "С3црет!" Поставио је линију каква јесте и гурнуо је. Ухваћен у прегледу кода; Лозинка је одмах поништена и промењена, вредност је премештена у променљиву и унета из тајног трезора. Лекција: У ХЦЛ-у никада не постоје тајне отвореног текста.

Четири шаблона за копирање

1) Израда нацрта инфраструктуре:

Напишите следећу инфраструктуру на [ОБЛАК: АВС] са Терраформом (верзија ~> 1.7): [ЛИСТА ИЗВОРА]. Регион [Кс]. Правила: - Нека све осетљиве вредности буду променљиве, немојте их уграђивати у ХЦЛ. - Поправите верзију провајдера (рекуиред_провидерс). - Минимизирајте ИАМ дозволе, не користите "*".- Вратите [Кс, И] као излаз. Дајте код модуларно и са објашњењима.

2) Тумачење резултата плана:

Анализирајте излаз 'терраформног плана' у наставку. Наведите ме: (1) који ресурси су додати/промењени/ИЗБРИСАНИ, (2) редови под ризиком од губитка или прекида података, (3) 3 питања која треба да поставим пре пријаве. План: [ИЗЛАЗ]

3) Испитајте постојећи ХЦЛ ради сигурности:

Проверите следећи Терраформ код за безбедност: уграђена тајна, преширока ИАМ дозвола, отворено мрежно правило (0.0.0.0/0), нешифровано складиште? Запишите сваки налаз по редоследу важности и исправке. Шифра: [ХЦЛ]

4) Претворите код који се понавља у модул:

Конвертујте следећи Терраформ код који се понавља у модул за вишекратну употребу: које вредности треба да буду променљиве, шта треба да буде интерфејс модула? Такође покажите пример употребе. Шифра: [ХЦЛ]

Слаби промпт / Јаки промпт

Слабо: „Креирајте базу података помоћу Терраформа.“

Резултат: нејасно који облак, који мотор, која верзија, шифрована или не; Уз застарелу синтаксу, АИ може да обезбеди јавно доступан пример који уграђује лозинку у код.

Снажно: „Креирајте РДС ПостгреСКЛ 15 инстанцу на АВС-у са Терраформ ~> 1.7. Направите променљиву лозинке, немојте је уграђивати у код. Складиште је шифровано, доступно само из приватне подмреже, није јавно. Поправите верзију добављача. Вратите крајњу тачку као излаз.“

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

Уобичајене грешке

  • Да се `пријавите` без прављења `плана`. Најскупља грешка у ИаЦ-у; увек прво планирај.
  • Уграђивање тајне у ХЦЛ. Ствара трајно цурење у Гит историју.
  • Чување државе несигурно. Нешифровано, откључано, јавно стање је катастрофа.
  • Не поправљам верзију. Коришћење провајдера без навођења верзије ће довести до изненадних кварова у будућности.
  • *`Радња: Широка дозвола као што је ""`.** Крши принцип најмање привилегија.
  • Игнорисање неочекиваног `уништавања`. Примена линија за брисање у Плану без питања.

Укратко

ИаЦ претвара инфраструктуру у код који се може поновити, који се може верзијама и ревидирати; Најчешћи алат је Терраформ. АИ брзо производи ХЦЛ стубове, али морате да наведете верзију, детаље специфичне за облак и безбедносна правила. Непогрешиво правило у Терраформу: видети сваку промену са планом, испитивати неочекивана брисања, чувати тајне даље од кода и чувати стање безбедно. Уништавање и замена линија у излазу плана су места која треба најпажљивије прочитати.

Задатак апликације

Нека АИ генерише малу инфраструктуру (нпр. корпу за складиштење и политику приступа) користећи горњи шаблон „Генериши скицу инфраструктуре“. Затим: (1) нека шаблон „провера“ провери да ли су тајне или * дозволе уграђене у код; (2) ако је могуће, покрените инит + план на пробном налогу и прочитајте излаз плана са шаблоном „тумачење плана“; (3) забележити сва неочекивана брисања/промене.

контролна листа

  • [ ] Додао сам облак, верзију Терраформа/провајдера и шифровање/мрежна ограничења у свој упит.
  • [ ] У коду нема тајне отвореног текста; вредности прецизности променљиве.
  • [ ] Сузио сам ИАМ/дозволе на минималне дозволе, * Нисам га користио.
  • [ ] Покренуо сам план пре примене и прочитао излаз ред по ред.
  • [ ] Проверио сам да у Плану нема неочекиваног уништења/замена.
  • [ ] Сигуран сам да се стање чува у шифрованој, закључаној и ограниченој позадини.