Keuntungan:
- Keupayaan untuk menghasilkan kod IaC (Terraform, Ansible) dengan kecerdasan buatan dengan kebenaran paling sempit dan lalai selamat serta memahami pendekatan deklaratif
- Keupayaan untuk mengelakkan kehilangan data dengan membaca dan menangkap padam dan memaksa baris ganti sebelum menggunakan pelan/semak output
- Keupayaan untuk mengelakkan kebocoran rahsia dengan memastikan fail keadaan disulitkan, dikunci, di bahagian belakang jauh dan memecahkan perubahan kepada langkah kecil yang boleh diterbalikkan
Pengurusan Infrastruktur sebagai Kod (IaC): Terraform, Ansible dan Kawalan Pelan dengan AI
Pada masa lalu, menyediakan pelayan dilakukan dengan klik manual, arahan dan nota peribadi; Hasilnya ialah pelayan "kepingan salji" yang tidak boleh dihasilkan semula yang tiada siapa tahu dengan tepat cara menyediakannya. Infrastruktur sebagai Kod (IaC) ialah pendekatan yang menamatkan kekacauan ini: pelayan, rangkaian, peraturan keselamatan ditakrifkan bukan dengan tangan, tetapi oleh fail teks boleh versi (kod). Apabila anda menjalankan kod ini, infrastruktur disediakan tepat seperti yang anda tulis — sama, didokumenkan dan boleh diulang setiap kali. Alat yang paling biasa ialah Terraform dan CloudFormation untuk infrastruktur awan dan Ansible untuk konfigurasi pelayan. Di sini AI sangat mahir dalam menulis, menerangkan dan menyemak kod IaC ini. Tetapi kuasa IaC juga bahayanya: satu talian yang salah boleh menghapuskan keseluruhan infrastruktur; jadi AI menulis kod, anda membaca "pelan", meluluskannya dan melaksanakannya.
Dalam unit ini, kita akan membincangkan pendekatan deklaratif, perbezaan pelan/guna pakai, keselamatan negeri dan mati pucuk; Anda akan mempelajari penjanaan IaC dengan AI dan kemahiran paling kritikal, "kawalan pelan".
Berfikir secara deklaratif: "bagaimana jika", bukan "bagaimana untuk melakukan"
Kebanyakan alat IaC adalah deklaratif: anda menerangkan keadaan akhir sistem ("katakan 3 pelayan web, 1 pengimbang beban"), alat itu sendiri mengira cara untuk sampai ke keadaan itu. Ini berbeza daripada menulis skrip ("buat ini, kemudian lakukan itu" langkah demi langkah). Kelebihan besar pendekatan deklaratif ialah idempotensi: walaupun anda menjalankan kod sepuluh kali, hasilnya adalah sama, kerana alat menyemak untuk melihat sama ada keadaan yang diingini sudah wujud, dan jika ia berlaku, ia tidak menyentuhnya. Ingat perbezaan ini apabila anda menulis IaC kepada AI: anda membuat ia berkata "biarkan keadaan infrastruktur ini", bukan "jalankan arahan ini".
Rancang/gunakan: pagar keselamatan yang paling penting
Ciri menyelamatkan nyawa IaC ialah langkah pelan. Dalam Terraform, pelan terraform, dalam Ansible, --check mod menghasilkan pratonton "apa yang akan berubah jika saya menggunakannya" sebelum menjalankan kod: "2 sumber akan ditambah, 1 akan berubah, 0 akan dipadamkan". Ini adalah satu-satunya cara untuk membandingkan niat anda dengan realiti sebelum pelaksanaan. Peraturan kritikal: jangan sekali-kali memohon tanpa membaca pelan. Cari terutamanya untuk garisan "musnahkan"; Jika anda melihat "12 akan dipadamkan" dan bukannya "1 akan ditukar" kerana kesilapan menaip, rancangan itu telah menyelamatkan anda daripada bencana. Selepas mencetak kod ke AI, minta ia berkata "periksa baris keluaran pelan demi baris dengan saya, tandakan setiap baris yang mengandungi pemadaman/rekreasi."
Awas: Beberapa perubahan kepada Terraform "memusnahkan dan mencipta semula" sumber dan bukannya "mengemas kini di tempat". Ini bermakna kehilangan data untuk pangkalan data. Mengabaikan -/+ atau "paksa penggantian" dalam output pelan adalah salah satu kesilapan yang paling mahal.
Fail negeri: rekod rahsia dan kebenaran
Alat seperti Terraform mengekalkan keadaan semasa infrastruktur yang mereka uruskan dalam fail keadaan. Fail ini penting kerana dua sebab. Pertama, ia mungkin mengandungi rahsia (kata laluan pangkalan data, kunci mungkin jatuh ke dalam keadaan dalam teks biasa); Oleh itu, jangan sekali-kali menampal keadaan ke dalam repositori awam atau AI, simpannya dalam bahagian belakang jauh yang disulitkan dan terhad akses. Kedua, jika negeri itu rosak atau hilang, kenderaan itu kehilangan hubungan antara infrastruktur sebenar dan infrastruktur yang dibayangkan; Oleh itu, sandaran keadaan dan mekanisme kunci (kunci yang menghalang dua orang daripada memecahkannya pada masa yang sama) adalah penting.
Langkah demi langkah: Lindungi IaC dengan AI
- Nyatakan niat dan pembekal. "2 pelayan di AWS, dengan Terraform, di rantau ini, saiz ini dan kumpulan keselamatan." Jika awan, alat dan versi jelas, AI menghasilkan sintaks yang betul.
- Minta lalai keselamatan. "Buka kumpulan keselamatan, dayakan penyulitan, ekstrak rahsia kepada pembolehubah, berikan akses awam." AI boleh menjana sampel longgar secara lalai.
- Baca dan fahami kod tersebut. Fahami setiap sumber, setiap kebenaran, baris demi baris. Jangan gunakan kebenaran yang anda tidak faham.
- Dapatkan rancangan dan auditnya. Jalankan pelan/--semak, periksa output dengan AI, tandakan garisan padam dan bina semula.
- Sapukan kecil dan boleh diterbalikkan. Laksanakan perubahan besar dalam kepingan kecil, bukan sekaligus. Ketahui jalan kembali pada setiap langkah.
- Lindungi Negara. Gunakan hujung belakang yang disulitkan jauh dan kunci; Jangan sekali-kali keadaan bocor.
tiga kes mini
Kes 1 — Pelan memulihkan pangkalan data. Seorang jurutera ingin meningkatkan saiz pangkalan data dengan kod Terraform yang dihasilkannya dengan AI. Semasa dia menjangkakan "1 akan berubah" dalam keluaran pelan terraform, dia melihat "1 untuk memusnahkan, 1 untuk menambah" — parameter yang dipilihnya mencetuskan pembinaan semula, bukan kemas kini di tempat, bermakna semua data akan dipadamkan. Kawalan pelan menghentikan kehilangan data yang tidak dapat dipulihkan sebelum ia dilaksanakan.
Kes 2 — Kembali daripada lalai longgar. Satu pasukan meminta AI untuk kod firewall. Untuk menjalankan contoh, AI menghasilkan peraturan mudah 0.0.0.0/0, yang bermaksud "awam di internet". Jurutera menyedari perkara ini semasa membaca kod dan mengecilkan akses kepada hanya julat IP perusahaan. Jika ia dilaksanakan tanpa diaudit, pangkalan data akan dibuka kepada seluruh internet.
Kes 3 — Kebocoran negeri dicegah. Seorang ahli junior akan menampal fail terraform.tfstate secara utuh ke dalam alat awam untuk menyelesaikan isu Terraform. Jurutera kanan berhenti: negeri mengandungi kata laluan pangkalan data teks biasa. Sebaliknya, ringkasan yang disulitkan yang menerangkan masalah telah dikongsi dan keadaan telah dialihkan ke bahagian belakang yang disulitkan jauh.
Empat templat yang boleh disalin
1) Penjanaan sumber IaC (lalai selamat):
Peranan anda: jurutera infrastruktur awan kanan. [Awan, mis. AWS] untuk [alat, mis. Terraform] menjana kod. Tujuan: [tujuan].Peraturan keselamatan: akses awam (0.0.0.0/0) DIBUKA;mulakan dengan kebenaran yang paling sempit; hidupkan penyulitan; ekstrak rahsia ke dalam pembolehubah, jangan sematkannya dalam kod; Semak tetapan yang mungkin membawa kepada pemadaman/rekreasi. Terangkan setiap sumber dengan ulasan ringkas.
2) Rancang audit output:
Di bawah ialah keluaran [Pelan Terraform / Pemeriksaan yang boleh dilakukan]. Beritahu saya: (1) berapa banyak sumber yang akan ditambah/diubah/dipadamkan, (2) tandakan juga baris "musnahkan" atau "penggantian paksa" yang menimbulkan risiko kehilangan data, (3) senaraikan sebarang perubahan yang kelihatan tidak dijangka atau berbahaya. Output: [pelan]
3) Semakan keselamatan kod IaC:
Periksa kod IaC berikut untuk keselamatan: (1) adakah terdapat akses/kebenaran yang terlalu luas, (2) adakah penyulitan dimatikan, (3) adakah terdapat rahsia yang tertanam dalam kod, (4) adakah sumber tersedia untuk umum? Cadangkan pembetulan bagi setiap penemuan. Kod: [kod bertopeng]
4) Pisahkan perubahan kepada bahagian yang selamat:
Saya tidak mahu melaksanakan perubahan infrastruktur besar ini [penjelasan] sekaligus. Pecahkan kepada langkah-langkah kecil dan bebas yang mudah untuk kembali. Untuk setiap langkah: apakah perubahan, apakah yang perlu saya perhatikan dalam rancangan, bagaimana saya boleh membuat asalnya jika terdapat masalah?
Gesaan lemah / Gesaan kuat
Gesaan yang lemah:
Tulis kod Terraform yang mencipta pelayan pada AWS.
Rantau, saiz, keselamatan, rangkaian, penyulitan tidak jelas. AI menghasilkan lalai yang paling longgar dan paling jelas untuk berfungsi — jika dimasukkan ke dalam pengeluaran, ia akan menjadi kelemahan.
Gesaan kuat:
Peranan anda: jurutera infrastruktur awan kanan. Tentukan pelayan web dengan Terraform pada AWS eu-central-1: t3.small, hanya dari julat IP korporat (saya akan memberikannya dengan pembolehubah), port 443 dibuka, cakera disulitkan, tiada akses awam, label adalah wajib. Rahsia didedahkan kepada pembolehubah. Selepas kod: Sebelum melaksanakannya, beritahu saya 3 jenis baris yang perlu saya perhatikan dalam rancangan dan terangkan laluan kembali.
pentas
risiko
pagar keselamatan
menulis kod
lalai longgar (awam)
Keizinan paling sempit + baca
rancang/semak
Memadam tanpa disedari
Merancang pemeriksaan, memusnahkan tanda
Mohon
Perubahan besar sekali
Langkah kecil yang boleh diterbalikkan
pentadbiran negeri
Kebocoran sayu, herotan
Bahagian belakang disulitkan jauh + kunci
Kesilapan biasa
- Memohon tanpa membaca pelan. Pelan itu membayangkan pemadaman dan pembinaan semula; Jika ia dilangkau, kehilangan data tidak dapat dielakkan.
- Tidak perasan lalai yang longgar. Kejadian AI kerap menghasilkan 0.0.0.0/0; Jika ia dipindahkan ke pengeluaran, ia bermakna sumber terbuka kepada seluruh internet.
- Keadaan Bocor. Mengeksport fail keadaan ke AI atau repositori terbuka mendedahkan rahsia plaintext.
- Membenamkan rahsia dalam kod. Menulis kata laluan ke dalam kod IaC ialah kebocoran berterusan dalam sejarah versi kod.
- Tersilap bina semula sebagai kemas kini. Mengabaikan talian penggantian daya akan mengakibatkan kehilangan data dalam pangkalan data.
Petua: Walaupun semasa memberikan output rancangan kepada AI untuk disemak, asaskan keputusan akhir pada pengetahuan anda sendiri, bukan teks rancangan. AI meringkaskan rancangan dan menandakan garis berisiko; tetapi jawapan kepada soalan "adakah pemadaman ini boleh diterima" bergantung pada konteks perniagaan anda.
Secara ringkasnya
IaC membawa kebolehulangan dan dokumentasi dengan mengurus infrastruktur dengan kod boleh versi dan bukannya klik manual. AI ialah rakan kongsi yang berkuasa dalam menulis kod ini, menerangkannya dan menyemaknya untuk keselamatan. Tetapi kuasa IaC adalah bahayanya: satu talian boleh menghapuskan keseluruhan infrastruktur. Fikir deklaratif, mulakan dengan kebenaran yang paling sempit, betulkan lalai yang longgar, simpan rahsia daripada kod dan nyatakan. Pengawal yang paling penting ialah langkah pelan/periksa: jangan sekali-kali laksanakan tanpa membaca baris padam dan bina semula. Pastikan Negeri disulitkan, dikunci dan jauh. Kod itu milik AI, keputusan di tangan anda.
Tugasan permohonan
Pilih sasaran infrastruktur kecil (contohnya, mesin maya tunggal dan peraturan keselamatan). Dengan templat "Penjanaan sumber IaC" di atas, minta AI untuk kod dengan lalai yang selamat. Semak semula kod dengan templat "Semakan keselamatan kod IaC" dan cuba cari sekurang-kurangnya satu tetapan longgar. Jika boleh, jalankan pelan/--semak pada akaun ujian dan semak output dengan templat "Semakan output rancangan"; Lihat jika terdapat baris padam atau buat semula. Tulis penemuan anda dan bagaimana anda akan menjamin keadaan dalam 6 mata.
senarai semak
- [ ] Adakah saya menyatakan awan, alat dan versi kepada AI dan meminta kod dengan kebenaran yang paling sempit?
- [ ] Adakah saya telah menyemak kod untuk lalai yang longgar (0.0.0.0/0, penyulitan tertutup)?
- [ ] Adakah saya telah mengekstrak rahsia kepada pembolehubah dan bukannya membenamkannya dalam kod?
- [ ] Adakah saya membaca pelan/menyemak keluaran dan menandakan baris padam sebelum memohon?
- [ ] Adakah saya telah menilai kesan kehilangan data daripada "penggantian kuasa" / membina semula talian?
- Bukankah saya telah menyimpan fail [ ] Negeri disulitkan, dikunci, di bahagian belakang jauh dan membocorkannya?