Birlik 6 / 11

Infratuzilmani kod sifatida boshqarish (IaC): Terraform, Ansible va Plan Control

Daromadlar:

  • IaC (Terraform, Ansible) kodini eng tor ruxsatnomalar va xavfsiz defoltlarga ega sun'iy intellekt bilan ishlab chiqarish va deklarativ yondashuvni tushunish qobiliyati
  • Reja/chek chiqishini qo'llashdan oldin o'chirish va almashtirish qatorlarini o'qish va yozib olish orqali ma'lumotlar yo'qotilishining oldini olish qobiliyati
  • Shtat faylini shifrlangan, qulflangan, masofaviy orqa qismda saqlash va o'zgarishlarni kichik, qaytariladigan bosqichlarga bo'lish orqali maxfiy oqishning oldini olish qobiliyati

Infratuzilmani kod sifatida boshqarish (IaC): AI bilan Terraform, Ansible va Plan nazorati

Ilgari serverni o'rnatish qo'lda bosish, buyruqlar va shaxsiy qaydlar bilan amalga oshirildi; Natijada takrorlanib bo'lmaydigan "qor parchalari" serverlari paydo bo'ldi, ularni qanday sozlashni hech kim bilmas edi. Kod sifatida infratuzilma (IaC) bu tartibsizlikni tugatadigan yondashuvdir: serverlar, tarmoqlar, xavfsizlik qoidalari qo'lda emas, balki versiyali matn fayllari (kod) bilan belgilanadi. Ushbu kodni ishga tushirganingizda, infratuzilma aynan siz yozganingizdek o'rnatiladi - bir xil, hujjatlashtirilgan va har safar takrorlanishi mumkin. Eng keng tarqalgan vositalar bulutli infratuzilma uchun Terraform va CloudFormation va server konfiguratsiyasi uchun Ansible. Bu erda AI ushbu IaC kodini yozish, tushuntirish va ko'rib chiqishda juda malakali. Ammo IaC ning kuchi uning xavfi hamdir: bitta noto'g'ri chiziq butun infratuzilmani yo'q qilishi mumkin; Shunday qilib, AI kod yozadi, siz "rejani" o'qiysiz, uni tasdiqlaysiz va uni bajarasiz.

Ushbu bo'limda biz deklarativ yondashuvni, reja/qo'llash farqini, davlat xavfsizligi va identifikatorni muhokama qilamiz; Siz AI va eng muhim ko'nikma, "rejani boshqarish" bilan IaC avlodini o'rganasiz.

Deklarativ tarzda o'ylash: "qanday qilish kerak" emas, "agar nima bo'lsa"

Ko'pgina IaC vositalari deklarativdir: siz tizimning yakuniy holatini tasvirlaysiz ("aytaylik, 3 ta veb-server, 1 ta yuk balansi"), asbobning o'zi bu holatga qanday erishishni hisoblab chiqadi. Bu skript yozishdan farq qiladi ("buni qiling, keyin buni bajaring" bosqichma-bosqich). Deklarativ yondashuvning katta afzalligi - bu idempotentlik: agar siz kodni o'n marta ishlatsangiz ham, natija bir xil bo'ladi, chunki asbob kerakli holat allaqachon mavjudligini tekshiradi va agar mavjud bo'lsa, unga tegmaydi. AIga IaC yozishda ushbu farqni eslang: siz "bu buyruqlarni bajaring" emas, balki "ushbu infratuzilma holatiga ruxsat bering" deb aytasiz.

Rejalashtirish/qo'llash: eng muhim xavfsizlik panjarasi

IaC ning hayotni saqlab qoladigan xususiyati reja bosqichidir. Terraform-da, terraform plan, Ansible-da, --check rejimi kodni ishga tushirishdan oldin "agar uni qo'llasam, nima o'zgaradi" ning oldindan ko'rishini ishlab chiqaradi: "2 ta manba qo'shiladi, 1 ta o'zgaradi, 0 o'chiriladi". Bu amalga oshirishdan oldin niyatingizni haqiqat bilan solishtirishning yagona yo'li. Muhim qoida: hech qachon rejani o'qimasdan qo'llamang. Ayniqsa, "yo'q qilish" qatorlarini qidiring; Agar matn terish xatosi tufayli “12 o‘zgartiriladi” o‘rniga “12 o‘chiriladi” degan yozuvni ko‘rsangiz, reja sizni falokatdan qutqardi. Kodni sun'iy intellektga chop etgandan so'ng, "Men bilan rejaning chiqish satrini satr bo'yicha ko'rib chiqing, o'chirish/rekreatsiyani o'z ichiga olgan har bir qatorni belgilang" deb ayting.

Diqqat: Terraform-ga kiritilgan ba'zi o'zgarishlar "joyida yangilash" o'rniga resursni "yo'q qiladi va qayta yaratadi". Bu ma'lumotlar bazasi uchun ma'lumotlar yo'qolishini anglatadi. Rejaning chiqishida -/+ yoki "almashtirishni majbur qiladi" ga e'tibor bermaslik eng qimmat xatolardan biridir.

Davlat fayli: sirlar va haqiqatni qayd etish

Terraform kabi vositalar o'zlari boshqaradigan infratuzilmaning joriy holatini davlat faylida saqlaydi. Ushbu fayl ikkita sababga ko'ra juda muhim. Birinchidan, u sirlarni o'z ichiga olishi mumkin (ma'lumotlar bazasi parollari, kalitlar ochiq matn holatiga tushishi mumkin); Shuning uchun, davlatni hech qachon umumiy omborga yoki AIga joylashtirmang, uni shifrlangan va kirish huquqi cheklangan masofaviy serverda saqlang. Ikkinchidan, agar davlat buzilgan yoki yo'qolgan bo'lsa, vosita haqiqiy infratuzilma va tasavvur qilingan infratuzilma o'rtasidagi aloqani yo'qotadi; Shuning uchun, davlatning zaxira nusxasi va qulflash mexanizmi (bir vaqtning o'zida ikki kishining uni buzishiga to'sqinlik qiluvchi qulf) muhim ahamiyatga ega.

Bosqichma-bosqich: AI bilan IaCni himoyalang

  1. Davlat niyati va provayderi. "AWS-da 2 ta server, Terraform bilan, bu mintaqada, bu o'lcham va xavfsizlik guruhi." Agar bulut, vosita va versiya aniq bo'lsa, AI to'g'ri sintaksisni ishlab chiqaradi.
  2. Xavfsizlik standartlarini talab qiling. "Xavfsizlik guruhini oching, shifrlashni yoqing, o'zgaruvchiga sirlarni chiqarib oling, umumiy foydalanishga ruxsat bering." AI sukut bo'yicha bo'sh namunalarni yaratishi mumkin.
  3. Kodni o'qing va tushuning. Har bir manba, har bir ruxsat, satr satr tushuning. Tushunmagan ruxsatni qo'llamang.
  4. Rejani oling va uni tekshiring. Rejani ishga tushiring/--tekshiring, AI bilan chiqishni tekshiring, o'chirish va qayta qurish qatorlarini belgilang.
  5. Kichik va qaytariladigan qo'llang. Bir vaqtning o'zida emas, balki kichik qismlarda katta o'zgarishlarni amalga oshiring. Har qadamda orqaga qaytish yo'lini biling.
  6. Davlatni himoya qilish. Masofaviy, shifrlangan backend va qulfdan foydalaning; Hech qachon oqish holati.

uchta mini holat

1-holat - Reja ma'lumotlar bazasini tikladi. Muhandis AI yordamida ishlab chiqarilgan Terraform kodi bilan ma'lumotlar bazasi hajmini oshirmoqchi edi. U terraform rejasining chiqishida "1 o'zgarishini" kutayotgan bo'lsa-da, u "1 yo'q qilish uchun, 1 qo'shish" ni ko'rdi - u tanlagan parametr joyida yangilanishni emas, balki qayta qurishni ishga tushirdi, ya'ni barcha ma'lumotlar o'chiriladi. Reja nazorati amalga oshirilishidan oldin qaytarib bo'lmaydigan ma'lumotlar yo'qotilishini to'xtatdi.

2-holat - Bo'shashgan standartdan qaytish. Bir jamoa AIdan xavfsizlik devori kodini so'radi. Misolni ishlatish uchun AI "internetda ommaviy" degan ma'noni anglatuvchi 0.0.0.0/0 oddiy qoidani yaratdi. Muhandis kodni o'qiyotganda buni payqadi va faqat korxona IP diapazoniga kirishni toraytirdi. Agar u tekshirilmasdan amalga oshirilsa, ma'lumotlar bazasi butun internet uchun ochiq bo'lar edi.

3-holat - Davlat oqishining oldini oldi. Kichik a'zo Terraform muammosini hal qilish uchun terraform.tfstate faylini umumiy vositaga joylashtirmoqchi edi. Katta muhandis to'xtadi: holatda ochiq matnli ma'lumotlar bazasi paroli mavjud. Buning o'rniga, muammoni tavsiflovchi shifrlangan xulosa baham ko'rildi va davlat masofaviy shifrlangan backendga ko'chirildi.

To'rt nusxa ko'chirish shablonlari

1) IaC resurslarini yaratish (xavfsiz standart):

Sizning rolingiz: bulutli infratuzilma bo'yicha katta muhandis. [Bulut, masalan. AWS] [asbob, masalan. Terraform] kod hosil qiladi. Maqsad: [maqsad].Xavfsizlik qoidalari: ommaviy (0.0.0.0/0) kirish Ochiq;eng tor ruxsat bilan boshlash; shifrlashni yoqing; sirlarni o'zgaruvchilarga ajratib oling, ularni kodga kiritmang; O'chirish/qayta tiklashga olib kelishi mumkin bo'lgan sozlamalarni tekshiring. Har bir manbani qisqacha izoh bilan tushuntiring.

2) Chiqarish auditini rejalashtirish:

Quyida [Terraform rejasi / Ansible check] chiqishi mavjud. Ayting-chi: (1) qancha resurslar qo'shiladi/o'zgartiriladi/o'chiriladi, (2) ma'lumotlarni yo'qotish xavfini tug'diruvchi "yo'q qilish" yoki "almashtirishni majburlash" qatorlarini ham belgilang, (3) kutilmagan yoki xavfli ko'rinadigan o'zgarishlarni sanab o'ting. Natija: [reja]

3) IaC kodining xavfsizligini tekshirish:

Xavfsizlik uchun quyidagi IaC kodini tekshiring: (1) haddan tashqari keng kirish/ruxsatlar bormi, (2) shifrlash o'chirilganmi, (3) kodga kiritilgan sirlar bormi, (4) hammaga ochiq manbalar bormi? Har bir topilma uchun tuzatish taklif qiling. Kod: [maskalangan kod]

4) O'zgartirishni xavfsiz qismlarga bo'ling:

Men bu katta infratuzilma o'zgarishini [tushuntirishni] birdaniga amalga oshirishni xohlamayman. Uni orqaga qaytish oson bo'lgan kichik, mustaqil bosqichlarga bo'ling. Har bir qadam uchun: qanday o'zgarishlar, rejada nimalarga e'tibor berishim kerak, muammolar mavjud bo'lsa, uni qanday bekor qilishim kerak?

Zaif taklif / Kuchli taklif

Zaif taklif:

AWS da server yaratuvchi Terraform kodini yozing.

Hudud, o'lcham, xavfsizlik, tarmoq, shifrlash noaniq. AI ish uchun eng bo'sh, eng aniq sukut bo'yicha ishlab chiqaradi - agar ishlab chiqarishga kiritilsa, bu zaiflik bo'ladi.

Kuchli so'rov:

Sizning rolingiz: bulutli infratuzilma bo'yicha katta muhandis. AWS eu-central-1 da Terraform bilan veb-serverni aniqlang: t3.small, faqat korporativ IP diapazonidan (men uni o'zgaruvchi bilan beraman), 443-port ochiq, disk shifrlangan, umumiy foydalanish imkoniyati yo'q, teglar majburiydir. O'zgaruvchiga sirlar ochiladi. Koddan keyin: Uni amalga oshirishdan oldin, menga rejada e'tibor berishim kerak bo'lgan 3 ta chiziq turini ayting va qaytish yo'lini tushuntiring.

Bosqich

Xavf

xavfsizlik panjarasi

kod yozish

Birlamchi standart (ommaga ochiq)

Eng tor ruxsat + o'qish

rejalashtirish/tekshirish

Tushunmasdan o'chirish

Tekshiruvni rejalashtirish, markalashni yo'q qilish

Murojaat qiling

Bir martalik katta o'zgarish

Kichik, qaytariladigan qadamlar

davlat boshqaruvi

Yaltiroq oqishi, buzilish

Masofaviy shifrlangan backend + qulflash

Umumiy xatolar

  • Rejani o'qimasdan ariza berish. Reja o'chirish va qayta qurishni bashorat qiladi; Agar u o'tkazib yuborilsa, ma'lumotlar yo'qolishi muqarrar.
  • Bo'shashgan standartni sezmaslik. AI misollari tez-tez 0.0.0.0/0 hosil qiladi; Agar u ishlab chiqarishga o'tkazilsa, bu butun internet uchun ochiq manba degan ma'noni anglatadi.
  • Oqish holati. Davlat faylini AI yoki ochiq omborga eksport qilish ochiq matn sirlarini ochib beradi.
  • Kodga sirlarni kiritish. Parolni IaC kodiga yozish - bu kod versiyasi tarixida doimiy ravishda sizib chiqish.
  • Qayta qurishni yangilash deb xato qilish. Kuchlarni almashtirish liniyasiga e'tibor bermaslik ma'lumotlar bazalarida ma'lumotlarning yo'qolishiga olib keladi.
Maslahat: Ko'rib chiqish uchun AIga reja natijasini berganingizda ham, yakuniy qarorni reja matniga emas, balki o'z bilimingizga asoslang. AI rejani umumlashtiradi va xavfli chiziqlarni belgilaydi; ammo "bu o'chirish maqbulmi" degan savolga javob sizning biznes kontekstingizga bog'liq.

Xulosa

IaC infratuzilmani qo'lda bosish o'rniga versiyali kod bilan boshqarish orqali takroriylik va hujjatlarni olib keladi. AI ushbu kodni yozishda, uni tavsiflashda va xavfsizlikni tekshirishda kuchli sherikdir. Ammo IaC ning kuchi uning xavfi: bitta chiziq butun infratuzilmani yo'q qilishi mumkin. Deklarativ o'ylab ko'ring, eng tor ruxsatnomadan boshlang, bo'shashgan defoltlarni tuzating, sirlarni koddan va holatdan saqlang. Eng muhim qo'riqchi - bu rejalashtirish/tekshirish bosqichi: hech qachon o'chirish va qayta qurish qatorlarini o'qimasdan bajarmang. Shtatni shifrlangan, qulflangan va masofadan turib saqlang. Kod AIniki, qaror sizniki.

Ilova vazifasi

Kichik infratuzilma maqsadini tanlang (masalan, bitta virtual mashina va xavfsizlik qoidasi). Yuqoridagi "IaC resurs yaratish" shablonini ishlatib, AIdan xavfsiz standartga ega kodni so'rang. Kodni "IaC kod xavfsizligini tekshirish" shablonini ikki marta tekshiring va kamida bitta bo'sh sozlamani topishga harakat qiling. Iloji bo'lsa, sinov hisobi bo'yicha plan/--checkni ishga tushiring va "Plan chiqishni tekshirish" shablonini ko'rib chiqing; O'chirish yoki qayta yaratish qatori mavjudligini tekshiring. Xulosalaringizni va davlatni qanday himoya qilishingizni 6 ballga yozing.

nazorat ro'yxati

  • [ ] AI uchun bulut, vosita va versiyani belgiladimmi va eng tor ruxsatlarga ega kod so‘radimmi?
  • [ ] Men kodni bo'shashmagan standart sozlamalar (0.0.0.0/0, yopiq shifrlash) uchun tekshirdimmi?
  • [ ] Men ularni kodga kiritish oʻrniga oʻzgaruvchining sirlarini chiqarib oldimmi?
  • [ ] Men qo'llashdan oldin reja/chek chiqishini o'qib chiqdimmi va o'chirish satrlarini belgiladimmi?
  • [ ] Men "kuchlarni almashtirish" / chiziqlarni qayta tiklashning ma'lumotlar yo'qolishiga ta'sirini baholadimmi?
  • Men [ ] shtat faylini shifrlangan, qulflangan holda masofaviy backendda saqlamadimmi va uni tashqariga chiqarib yubormadimmi?