หน่วย
1. ข้อมูลเบื้องต้นเกี่ยวกับ DevOps และ Cloud AI: บทบาท ขอบเขต การรับรองความถูกต้อง ความปลอดภัย และความลับ 2. การออกแบบไปป์ไลน์ CI/CD ด้วยปัญญาประดิษฐ์: GitHub Actions และ GitLab CI 3. การจัดการโครงสร้างพื้นฐานเป็นโค้ด: ปัญญาประดิษฐ์ด้วย Terraform และ IaC 4. การบรรจุคอนเทนเนอร์: การเพิ่มประสิทธิภาพ Dockerfile และรูปภาพด้วยปัญญาประดิษฐ์ 5. Kubernetes: การจัดระเบียบแบบ Manifest, Helm และ AI 6. การตรวจสอบและการสังเกต: กฎเกณฑ์เมตริก บันทึก การติดตาม และสัญญาณเตือน 7. การจัดการเหตุการณ์และการชันสูตรพลิกศพ: การวิเคราะห์สาเหตุที่แท้จริงด้วยปัญญาประดิษฐ์ 8. การเพิ่มประสิทธิภาพต้นทุนบนคลาวด์ (FinOps): การค้นหาขยะด้วยปัญญาประดิษฐ์ 9. การสร้างสคริปต์และระบบอัตโนมัติ: Bash, Python และ PowerShell 10. การจัดการความปลอดภัยและความลับ: DevSecOps และปัญญาประดิษฐ์ 11. การตรวจสอบผลิตภัณฑ์ กลยุทธ์การเผยแพร่ และเวิร์กโฟลว์ AI แบบครบวงจร
หน่วย 3 / 11

การจัดการโครงสร้างพื้นฐานเป็นโค้ด: ปัญญาประดิษฐ์ด้วย Terraform และ IaC

กำไร:

  • Ability to understand the IaC concept and Terraform's working cycle (init, plan, apply, state, module) and have artificial intelligence produce safe HCL drafts
  • ความสามารถในการตรวจสอบการเปลี่ยนแปลงแต่ละครั้งด้วยแผนก่อนที่จะนำไปใช้และตรวจจับเส้นทำลาย/แทนที่ที่ไม่คาดคิด
  • ความสามารถในการใช้หลักการรักษาความลับไม่ให้โค้ด รักษาสถานะให้ปลอดภัย และลดสิทธิ์ IAM ให้เหลือน้อยที่สุด

ในอดีต การตั้งค่าเซิร์ฟเวอร์เป็นเรื่องของการคลิกผ่านแผงคลาวด์: สร้างเครื่องเสมือน ตั้งค่าเครือข่าย เพิ่มกฎความปลอดภัย วิธีการนี้ช้า ผิดพลาดได้ง่าย และไม่สามารถทำซ้ำได้ แทบจะเป็นไปไม่ได้เลยที่จะตั้งค่าสภาพแวดล้อมเดิมเป็นครั้งที่สอง ปัจจุบันโครงสร้างพื้นฐานได้รับการจัดการในรูปแบบโค้ด IaC (โครงสร้างพื้นฐานเป็นโค้ด) เป็นแนวทางในการอธิบายทรัพยากรระบบคลาวด์ เช่น เซิร์ฟเวอร์ เครือข่าย และฐานข้อมูลในไฟล์ข้อความแทนที่จะอธิบายด้วยตนเอง ไฟล์เหล่านี้อยู่ในการควบคุมเวอร์ชัน (Git); คุณสามารถเห็นได้ว่าใครเปลี่ยนแปลงอะไร เมื่อใด และอะไร; คุณสามารถตั้งค่าโครงสร้างพื้นฐานเดียวกันได้หลายครั้งในลักษณะเดียวกันทุกประการด้วยคำสั่งเดียว

เครื่องมือ IaC ที่พบบ่อยที่สุดคือ Terraform Terraform ใช้คำจำกัดความที่คุณเขียนในภาษาที่อ่านได้ที่เรียกว่า HCL (HashiCorp Configuration Language — ภาษาการกำหนดค่าของ Terraform) แปลเป็น API ของผู้ให้บริการคลาวด์ (AWS, Azure, GCP) และสร้างทรัพยากร AI รู้จัก HCL เป็นอย่างดีและสร้างบล็อกที่ซับซ้อนได้อย่างรวดเร็ว แต่ใน IaC ความผิดพลาดมีค่าใช้จ่ายสูง คำจำกัดความที่ผิดเพียงคำเดียวสามารถล้างฐานข้อมูลที่ใช้งานจริงทั้งหมดได้ นั่นเป็นเหตุผลว่าทำไมกฎทองใน Terraform คือการเห็นทุกการเปลี่ยนแปลงด้วย 'แผน' ก่อนที่จะนำไปใช้

รันไทม์ของ Terraform

Terraform ทำงานร่วมกับคำสั่งพื้นฐานสามคำสั่ง การรู้ว่าสิ่งเหล่านี้เป็นข้อกำหนดเบื้องต้นสำหรับการควบคุมเอาต์พุต AI:

  • `terraform init`: เริ่มโปรเจ็กต์ ดาวน์โหลดปลั๊กอินของผู้ให้บริการที่จำเป็น
  • `แผนพื้นผิว`: เปรียบเทียบสถานการณ์ปัจจุบันกับสถานการณ์ที่ต้องการ และแสดงสิ่งที่ควรเพิ่ม สิ่งที่ต้องเปลี่ยนแปลง สิ่งที่ควรลบ ไม่ได้ปฏิบัติอะไรเลย เป็นขั้นตอนการรักษาความปลอดภัยที่สำคัญที่สุด
  • `ใช้พื้นผิว`: ใช้แผนจริงโดยสร้าง/แก้ไขทรัพยากร

นอกจากนี้ แนวคิดสองประการยังมีความสำคัญอีกด้วย สถานะ (ไฟล์สถานะ): นี่คือไฟล์ที่ Terraform เก็บสถานะปัจจุบันของทรัพยากรที่จัดการ โดยปกติแล้วจะถูกจัดเก็บไว้ในโกดังระยะไกลและล็อคไว้ เพื่อให้คนสองคนไม่สามารถเปลี่ยนแปลงหรือทำลายมันในเวลาเดียวกันได้ โมดูล: แพ็คเกจการกำหนดค่าที่ใช้ซ้ำได้; ตัวอย่างเช่น คุณสามารถใช้โมดูล "ตั้งค่าเครือข่าย" ในหลายโครงการ

เคล็ดลับ: สัญญาณที่อันตรายที่สุดในเอาต์พุต Terraform คือเส้นทำลายหรือ -/+ (แทนที่) ในเอาต์พุตแผน ซึ่งหมายความว่าทรัพยากรจะถูกลบ หากคุณเห็นการทำลายแบบไม่คาดคิดในแผน อย่าสมัครเลย ให้ทำความเข้าใจก่อนว่าเหตุใดจึงปรากฏขึ้น

ทีละขั้นตอน: การเขียน IaC ด้วย AI

  1. ชี้แจงโครงสร้างพื้นฐานที่ต้องการ เป็นรูปธรรมเช่น "หนึ่ง VPC, สองเครือข่ายย่อย, หนึ่งกลุ่มความปลอดภัย และหนึ่ง t3.micro EC2 บน eu-central-1"
  2. ระบุผู้ให้บริการและเวอร์ชัน คลาวด์ใด Terraform และเวอร์ชันผู้ให้บริการใด หากคุณไม่ระบุเวอร์ชัน AI อาจส่งคืนไวยากรณ์ที่ล้าสมัย/เข้ากันไม่ได้
  3. มีการผลิตแบบร่าง HCL ขอตัวแปรและเอาต์พุตด้วย
  4. เอาความลับออกไป ค่าต่างๆ เช่น รหัสผ่านและคีย์ ควรไปที่ตัวแปรและห้องนิรภัย ไม่ใช่ไปที่โค้ด
  5. เรียกใช้ `init` + `plan` อ่านผลลัพธ์ของแผนทีละบรรทัด ตรวจสอบการลบที่ไม่คาดคิด
  6. เริ่มจากเล็กๆ ค่อยๆ ปฏิบัติ นำไปใช้ในบัญชีทดสอบ/สภาพแวดล้อมที่แยกออกมาก่อน

ความปลอดภัย: ความเสี่ยงเฉพาะของ IaC

IaC มีความเสี่ยงพอๆ กับความทรงพลัง จุดวิกฤติสามจุด:

  1. มีความลับอยู่ในไฟล์สถานะ บางครั้งสถานะ Terraform จะเก็บค่าที่ละเอียดอ่อน เช่น รหัสผ่านฐานข้อมูล ไว้ในรูปแบบข้อความธรรมดา ห้ามวาง State ไว้ในที่เก็บข้อมูลสาธารณะ ใช้แบ็กเอนด์ระยะไกลที่เข้ารหัสและจำกัดการเข้าถึง
  2. อย่าฝังความลับใน HCL บรรทัดเช่นรหัสผ่าน = "prod123" จะถูกเขียนลงในประวัติ Git อย่างถาวร ให้ใช้ตัวแปรและกำหนดค่าขณะรันไทม์จากตัวแปรสภาพแวดล้อม (TF_VAR_...) หรือ Secret Vault แทน
  3. การอนุญาต IAM ที่กว้างมาก บางครั้ง AI จะสร้างบล็อกเช่น Action: "*" (อนุญาตทุกอย่าง) เพื่อ "ทำให้มันใช้งานได้" นี่คือช่องโหว่ จำกัดการอนุญาตให้เหลือขั้นต่ำที่จำเป็น
ข้อควรพิจารณา: เมื่อข้อมูลลับเข้าสู่ประวัติ Git ข้อมูลนั้นจะยังคงอยู่ในอดีตและสามารถถูกบุกรุกได้ แม้ว่าคุณจะลบไฟล์ก็ตาม หากคุณกระทำโดยไม่ได้ตั้งใจ ให้ยกเลิกและสับเปลี่ยนข้อมูลลับทันที แค่ลบยังไม่พอ

ตารางสัญญาณแผนการเสี่ยง

วางแผนการพิมพ์

ความหมาย

จะทำอย่างไร

+สร้าง

ทรัพยากรใหม่จะถูกเพิ่ม

โดยทั่วไปแล้วปลอดภัย โปรดตรวจสอบ

~ อัปเดตในสถานที่

แหล่งที่มาจะเปลี่ยนในสถานที่

ตรวจสอบผลกระทบ (จะมีการหยุดทำงานหรือไม่)

-/+ แทนที่

จะถูกลบและสร้างใหม่

ข้อควรระวัง: ข้อมูลอาจสูญหายได้

- ทำลาย

ทรัพยากรจะถูกทำลาย

หยุด: อย่าสมัครหากคุณไม่ได้คาดหวัง

มินิเคสสามอัน

กรณีที่ 1 — ทำงาน 2 วันใน 3 ชั่วโมง ทีมหนึ่งกำลังจะเขียน Terraform เพื่อตั้งค่าสภาพแวดล้อมการทดสอบใหม่ (VPC, ซับเน็ต, ฐานข้อมูล RDS, คลัสเตอร์ ECS) แต่พวกเขาเพิ่งย้ายไปยัง HCL พวกเขาอธิบายสถาปัตยกรรมและเวอร์ชันให้กับ AI และสร้างพิมพ์เขียวแบบโมดูลาร์ พวกเขาตรวจสอบแต่ละโมดูลตามแผนและดำเนินการภายใน 3 ชั่วโมง พวกเขาจะใช้เวลาสองวันในการลองผิดลองถูกด้วยตนเอง

กรณีที่ 2 — แผนถูกลบ วิศวกรคนหนึ่งดำเนินการตามแผนโดยไม่ใช้โค้ดอัปเดตที่สร้างโดย AI เอาต์พุตมี -/+ แทนที่สำหรับฐานข้อมูลที่ใช้งานจริง - AI พยายามแทนที่ฟิลด์ที่ไม่สามารถแทนที่ได้ ซึ่งหมายถึงการลบและสร้างฐานข้อมูลใหม่ วิศวกรหยุดใช้และเปลี่ยนวิธีการที่ปลอดภัย นิสัยในการวางแผนป้องกันภัยพิบัติ

กรณีที่ 3 – ความลับที่ถูกฝังไว้รั่วไหล รุ่นน้อง YZ ออก db_password = "S3cret!" เขากำหนดเส้นตามที่เป็นอยู่และผลักมัน ติดอยู่ในการตรวจสอบโค้ด รหัสผ่านถูกยกเลิกและเปลี่ยนทันที ค่าถูกย้ายไปยังตัวแปรและป้อนจากห้องนิรภัยลับ บทเรียน: ไม่มีความลับแบบธรรมดาใน HCL

เทมเพลตที่สามารถคัดลอกได้สี่แบบ

1) การสร้างร่างโครงสร้างพื้นฐาน:

เขียนโครงสร้างพื้นฐานต่อไปนี้บน [CLOUD: AWS] ด้วย Terraform (เวอร์ชัน ~> 1.7): [รายการแหล่งที่มา] ภูมิภาค [X] กฎ:- ทำให้ค่าที่ละเอียดอ่อนทั้งหมดเป็นตัวแปร อย่าฝังไว้ใน HCL- แก้ไขเวอร์ชันของผู้ให้บริการ (required_providers)- ลดสิทธิ์ IAM ให้เหลือน้อยที่สุด อย่าใช้ "*"- ส่งกลับ [X, Y] เป็นเอาต์พุต ให้โค้ดแบบแยกส่วนและมีคำอธิบาย

2) การตีความผลลัพธ์ของแผน:

วิเคราะห์ผลลัพธ์ 'แผนภูมิประเทศ' ด้านล่าง ระบุรายชื่อฉัน:(1) ทรัพยากรใดบ้างที่ถูกเพิ่ม/เปลี่ยนแปลง/ลบ,(2) แถวที่เสี่ยงต่อการสูญหายหรือการหยุดชะงักของข้อมูล,(3) คำถาม 3 ข้อที่ฉันควรถามก่อนสมัคร แผน: [เอาต์พุต]

3) ตรวจสอบ HCL ที่มีอยู่เพื่อความปลอดภัย:

ตรวจสอบรหัส Terraform ต่อไปนี้เพื่อความปลอดภัย: ข้อมูลลับแบบฝัง, สิทธิ์ IAM ที่กว้างเกินไป, กฎเครือข่ายแบบเปิด (0.0.0.0/0), พื้นที่เก็บข้อมูลที่ไม่ได้เข้ารหัส เขียนสิ่งที่ค้นพบแต่ละข้อตามลำดับความสำคัญและแก้ไข รหัส: [HCL]

4) แปลงรหัสซ้ำเป็นโมดูล:

แปลงโค้ด Terraform ที่ซ้ำกันต่อไปนี้ให้เป็นโมดูลที่นำมาใช้ซ้ำได้: ค่าใดควรเป็นตัวแปร ส่วนต่อประสานของโมดูลควรเป็นอย่างไร แสดงตัวอย่างการใช้งานด้วย รหัส: [HCL]

พรอมต์อ่อน / พรอมต์แข็งแกร่ง

จุดอ่อน: "สร้างฐานข้อมูลด้วย Terraform"

ผลลัพธ์: ไม่ชัดเจนว่าคลาวด์ใด เอ็นจิ้นใด เวอร์ชันใด เข้ารหัสหรือไม่ ด้วยไวยากรณ์แบบเดิม AI สามารถจัดเตรียมตัวอย่างที่เปิดเผยต่อสาธารณะซึ่งฝังรหัสผ่านลงในโค้ด

แข็งแกร่ง: "สร้างอินสแตนซ์ RDS PostgreSQL 15 บน AWS ด้วย Terraform ~> 1.7 สร้างตัวแปรรหัสผ่าน อย่าฝังไว้ในโค้ด พื้นที่เก็บข้อมูลได้รับการเข้ารหัส เข้าถึงได้จากซับเน็ตส่วนตัวเท่านั้น ไม่ใช่แบบสาธารณะ แก้ไขเวอร์ชันของผู้ให้บริการ ส่งคืนจุดสิ้นสุดเป็นเอาต์พุต"

ความแตกต่าง: พรอมต์ที่สองระบุกลไก เวอร์ชัน การเข้ารหัส ข้อจำกัดของเครือข่าย และกฎลับ — เอาต์พุตมีความปลอดภัยและใกล้เคียงกับผลิตภัณฑ์

ข้อผิดพลาดทั่วไป

  • เพื่อ `นำไปใช้' โดยไม่ต้องจัดทำ 'แผน' ข้อผิดพลาดที่แพงที่สุดใน IaC วางแผนก่อนเสมอ
  • การฝังความลับใน HCL สร้างการรั่วไหลอย่างถาวรในประวัติ Git
  • การจัดเก็บรัฐไม่ปลอดภัย สถานะสาธารณะที่ไม่ได้เข้ารหัสและปลดล็อคถือเป็นหายนะ
  • ไม่ได้แก้เวอร์ชั่น.. การใช้ผู้ให้บริการโดยไม่ระบุเวอร์ชันจะทำให้เกิดความล้มเหลวอย่างกะทันหันในอนาคต
  • *`การดำเนินการ: การอนุญาตแบบกว้างๆ เช่น ""`** ละเมิดหลักการของสิทธิพิเศษน้อยที่สุด
  • ละเลย 'การทำลาย' ที่ไม่คาดคิด การใช้บรรทัดลบในแผนโดยไม่ต้องตั้งคำถาม

โดยสรุป

IaC เปลี่ยนโครงสร้างพื้นฐานให้เป็นโค้ดที่ทำซ้ำได้ กำหนดเวอร์ชันได้ และตรวจสอบได้ เครื่องมือที่พบบ่อยที่สุดคือ Terraform AI สร้าง HCL stub อย่างรวดเร็ว แต่คุณต้องระบุเวอร์ชัน รายละเอียดเฉพาะคลาวด์ และกฎความปลอดภัย กฎที่ไม่มีข้อผิดพลาดใน Terraform: เพื่อดูทุกการเปลี่ยนแปลงตามแผน เพื่อค้นหาการลบที่ไม่คาดคิด เพื่อเก็บความลับให้ห่างจากโค้ด และเพื่อรักษาสถานะให้ปลอดภัย บรรทัดทำลายและแทนที่ในเอาต์พุตแผนคือตำแหน่งที่ควรอ่านอย่างระมัดระวังที่สุด

งานสมัคร

ให้ AI สร้างโครงสร้างพื้นฐานขนาดเล็ก (เช่น บัคเก็ตการจัดเก็บข้อมูลและนโยบายการเข้าถึง) โดยใช้เทมเพลต "สร้างภาพร่างโครงสร้างพื้นฐาน" ด้านบน จากนั้น: (1) ให้เทมเพลต "vetting" ตรวจสอบความลับหรือการอนุญาต * ที่ฝังอยู่ในโค้ด (2) หากเป็นไปได้ ให้รัน init + plan ในบัญชีทดสอบ และอ่านผลลัพธ์ของแผนด้วยเทมเพลต "การตีความแผน" (3) บันทึกการลบ/การเปลี่ยนแปลงที่ไม่คาดคิด

รายการตรวจสอบ

  • [ ] ฉันเพิ่มคลาวด์, Terraform/เวอร์ชันของผู้ให้บริการ และข้อจำกัดด้านการเข้ารหัส/เครือข่ายในข้อความแจ้งของฉัน
  • [ ] ไม่มีความลับแบบข้อความธรรมดาในโค้ด ตัวแปรค่าความแม่นยำ
  • [ ] ฉันจำกัด IAM/สิทธิ์ให้แคบลงให้เหลือเพียงสิทธิ์ขั้นต่ำ * ฉันไม่ได้ใช้
  • [ ] ฉันวางแผนก่อนสมัครและอ่านผลลัพธ์ทีละบรรทัด
  • [ ] ฉันตรวจสอบแล้วว่าไม่มีการทำลาย/ทดแทนโดยไม่คาดคิดในแผน
  • [ ] ฉันแน่ใจว่าสถานะถูกเก็บไว้ในแบ็กเอนด์ที่เข้ารหัส ล็อค และถูกจำกัด