وحدة 3 / 11

إدارة البنية التحتية كرمز: الذكاء الاصطناعي مع Terraform وIAC

المكاسب:

  • القدرة على فهم مفهوم IaC ودورة عمل Terraform (التهيئة والتخطيط والتطبيق والحالة والوحدة النمطية) وجعل الذكاء الاصطناعي ينتج مسودات HCL آمنة
  • القدرة على التحقق من كل تغيير بخطة قبل التقديم والتقاط خطوط التدمير/الاستبدال غير المتوقعة
  • القدرة على تطبيق مبادئ الحفاظ على الأسرار خارج التعليمات البرمجية، والحفاظ على الحالة بشكل آمن، وتقليل أذونات IAM

في الماضي، كان إعداد الخادم يعتمد على النقر فوق لوحة سحابية: قم بإنشاء جهاز افتراضي، وإعداد الشبكة، وإضافة قاعدة الأمان. كانت هذه الطريقة بطيئة، وعرضة للخطأ، وغير قابلة للتكرار، وكان من المستحيل تقريبًا إعداد نفس البيئة مرة أخرى. اليوم، تتم إدارة البنية التحتية كرمز. IaC (البنية التحتية كرمز) هو أسلوب لوصف الموارد السحابية مثل الخوادم والشبكات وقواعد البيانات في ملفات نصية وليس يدويًا. توجد هذه الملفات في التحكم في الإصدار (Git)؛ يمكنك أن ترى من غيّر ماذا ومتى وماذا؛ يمكنك إعداد نفس البنية التحتية عدة مرات، بنفس الطريقة تمامًا، باستخدام أمر واحد.

أداة IaC الأكثر شيوعًا هي Terraform. يأخذ Terraform التعريفات التي تكتبها بلغة قابلة للقراءة تسمى HCL (لغة تكوين HashiCorp — لغة تكوين Terraform)، ويترجمها إلى واجهة برمجة التطبيقات (AWS، وAzure، وGCP) الخاصة بموفر السحابة ويقوم بإنشاء الموارد. يعرف الذكاء الاصطناعي HCL جيدًا وينتج كتلًا معقدة بسرعة. ولكن في IaC، تكون تكلفة الخطأ مرتفعة: يمكن لتعريف خاطئ واحد أن يمحو قاعدة بيانات إنتاج بأكملها. ولهذا السبب فإن القاعدة الذهبية في Terraform هي رؤية كل تغيير من خلال "خطة" قبل تنفيذها.

وقت تشغيل Terraform

يعمل Terraform مع ثلاثة أوامر أساسية - تعد معرفة هذه الأوامر شرطًا أساسيًا للتحكم في مخرجات الذكاء الاصطناعي:

  • `terraform init`: يبدأ المشروع، ويقوم بتنزيل المكونات الإضافية الضرورية للموفر.
  • `خطة Terraform`: يقارن الوضع الحالي بالوضع المرغوب ويوضح ما يجب إضافته، وما يجب تغييره، وما يجب حذفه. لا ينفذ شيئا. إنها الخطوة الأمنية الأكثر أهمية.
  • `تطبيق التضاريس`: تطبيق الخطة فعليًا، وإنشاء/تعديل الموارد.

بالإضافة إلى ذلك، هناك مفهومان حيويان. الحالة (ملف الحالة): هذا هو الملف الذي يحتفظ فيه Terraform بالحالة الحالية للموارد التي يديرها؛ وعادة ما يتم تخزينها في مستودع بعيد ومغلق بحيث لا يمكن لشخصين تغييرها أو تدميرها في نفس الوقت. الوحدة: حزمة التكوين القابلة لإعادة الاستخدام؛ على سبيل المثال، يمكنك استخدام وحدة "إعداد شبكة" في العديد من المشاريع.

نصيحة: أخطر علامة في مخرجات Terraform هي تدمير أو -/+ (استبدال) الأسطر في مخرجات الخطة. وهذا يعني أنه سيتم حذف المورد. إذا رأيت تدميرًا غير متوقع في خطة ما، فلا تطبقه أبدًا، وافهم أولاً سبب ظهوره.

خطوة بخطوة: كتابة IaC باستخدام الذكاء الاصطناعي

  1. توضيح البنية التحتية المطلوبة. كن ملموسًا مثل "VPC واحد، وشبكتين فرعيتين، ومجموعة أمان واحدة وواحدة t3.micro EC2 على eu-central-1".
  2. تحديد الموفر والإصدار. ما هي السحابة وأي Terraform وإصدار الموفر؟ إذا لم تحدد إصدارًا، فقد يعرض الذكاء الاصطناعي صيغة قديمة/غير متوافقة.
  3. قم بإنتاج مسودة HCL. اطلب أيضًا المتغيرات والمخرجات.
  4. أخرج سرًا. يجب أن تنتقل القيم مثل كلمات المرور والمفاتيح إلى المتغير والمخزن السري، وليس إلى الكود.
  5. قم بتشغيل "init" + "plan". اقرأ مخرجات الخطة سطرًا سطرًا؛ تحقق من عمليات الحذف غير المتوقعة.
  6. ابدأ صغيرًا، ونفذ تدريجيًا. قم بتطبيقه في حساب/بيئة اختبارية معزولة أولاً.

الأمان: المخاطر الخاصة بـ IaC

IaC محفوف بالمخاطر بقدر ما هو قوي. ثلاث نقاط حرجة:

  1. هناك سر في ملف الدولة. تحتفظ حالة Terraform أحيانًا بالقيم الحساسة، مثل كلمات مرور قاعدة البيانات، في نص عادي. لا تضع الحالة أبدًا في مستودع عام؛ استخدم واجهة خلفية مشفرة ومقيدة الوصول عن بعد.
  2. لا تقم بتضمين الأسرار في HCL. تتم كتابة أسطر مثل كلمة المرور = "prod123" بشكل دائم في سجل Git. بدلاً من ذلك، استخدم متغيرًا وقم بإعطاء القيمة في وقت التشغيل من متغير البيئة (TF_VAR_...) أو المخزن السري.
  3. إذن IAM واسع جدًا. يُنتج الذكاء الاصطناعي أحيانًا كتلًا مثل الإجراء: "*" (السماح بكل شيء) "لإنجاحه". هذه ثغرة أمنية؛ تضييق الإذن إلى الحد الأدنى المطلوب.
تنبيه: بمجرد دخول السر إلى سجل Git، فإنه يظل في الماضي ويمكن اختراقه، حتى إذا قمت بحذف الملف. إذا ارتكبت خطأ، قم بإلغاء السر وتدويره على الفور؛ مجرد الحذف لا يكفي.

جدول علامات الخطة الخطرة

طباعة الخطة

معنى

ماذا تفعل

+إنشاء

سيتم إضافة مورد جديد

آمن بشكل عام، لكن قم بمراجعته

~ التحديث في المكان

سيتم تغيير المصدر في الموقع

التحقق من التأثير (هل سيكون هناك انقطاع؟)

-/+ استبدال

سيتم حذفها وإعادة إنشائها

تنبيه: قد يحدث فقدان البيانات

- تدمير

سيتم تدمير المورد

توقف: لا تنطبق أبدًا إذا كنت لا تتوقع ذلك

ثلاث حالات صغيرة

الحالة 1 - يومين عمل في 3 ساعات. كان أحد الفرق سيقوم بكتابة Terraform لإعداد بيئة اختبار جديدة (VPC، والشبكات الفرعية، وقاعدة بيانات RDS، ومجموعة ECS) لكنهم انتقلوا للتو إلى HCL. لقد وصفوا البنية والإصدارات للذكاء الاصطناعي وأنتجوا مخططًا معياريًا. لقد تحققوا من كل وحدة مع الخطة وقاموا بإعدادها وتشغيلها خلال 3 ساعات؛ سيستغرق الأمر يومين من التجربة اليدوية والخطأ.

الحالة 2 - تم حذف الخطة. قام أحد المهندسين بتشغيل خطة دون تطبيق رمز التحديث الذي تم إنشاؤه بواسطة الذكاء الاصطناعي. يحتوي الإخراج على -/+ استبدال لقاعدة بيانات الإنتاج - حاول الذكاء الاصطناعي استبدال حقل غير قابل للاستبدال، مما يعني حذف قاعدة البيانات وإعادة إنشائها. توقف المهندس عن التقديم وقام بتغيير الطريقة الآمنة. عادة التخطيط حالت دون وقوع كارثة.

الحالة 3 - تسرب سري مدفون. مبتدئ، أصدر YZ db_password = "S3cret!" لقد ارتكب الخط كما هو ودفعه. عالق في مراجعة الكود؛ تم إلغاء كلمة المرور وتغييرها على الفور، وتم نقل القيمة إلى متغير وتغذيتها من القبو السري. الدرس المستفاد: لا توجد أسرار نص عادي أبدًا في HCL.

أربعة قوالب قابلة للنسخ

1) إنشاء مشروع البنية التحتية:

اكتب البنية الأساسية التالية على [CLOUD: AWS] باستخدام Terraform (الإصدار ~> 1.7): [قائمة المصادر]. المنطقة [X]. القواعد: - اجعل جميع القيم الحساسة متغيرة، ولا تقم بتضمينها في HCL. - إصلاح إصدار الموفر (required_providers). - تقليل أذونات IAM، لا تستخدم "*". - إرجاع [X، Y] كمخرج. قم بإعطاء التعليمات البرمجية بشكل نمطي ومع التوضيحات.

2) تفسير مخرجات الخطة:

قم بتحليل مخرجات "خطة Terraform" أدناه. أدرجني: (1) ما هي الموارد التي تمت إضافتها/تغييرها/حذفها، (2) الصفوف المعرضة لخطر فقدان البيانات أو انقطاعها، (3) 3 أسئلة يجب أن أطرحها قبل التقديم. الخطة: [الإخراج]

3) فحص HCL الموجود للأمان:

تحقق من رمز Terraform التالي للأمان: سر مضمن، إذن IAM واسع للغاية، قاعدة الشبكة المفتوحة (0.0.0.0/0)، تخزين غير مشفر؟ اكتب كل نتيجة حسب الأهمية والتصحيح. الكود: [HCL]

4) تحويل الكود المتكرر إلى الوحدة:

قم بتحويل كود Terraform المتكرر التالي إلى وحدة نمطية قابلة لإعادة الاستخدام: ما هي القيم التي يجب أن تكون متغيرات، وما هي واجهة الوحدة؟ اعرض أيضًا مثالًا للاستخدام. الكود: [HCL]

موجه ضعيف / موجه قوي

ضعيف: "إنشاء قاعدة بيانات باستخدام Terraform."

النتيجة: غير واضح أي سحابة، أي محرك، أي إصدار، مشفر أم لا؛ باستخدام البنية القديمة، يمكن للذكاء الاصطناعي تقديم مثال متاح للعامة يقوم بتضمين كلمة المرور في الكود.

Strong: "قم بإنشاء مثيل RDS PostgreSQL 15 على AWS باستخدام Terraform ~> 1.7. قم بإنشاء متغير كلمة المرور، ولا تقم بتضمينه في التعليمات البرمجية. التخزين مشفر، ويمكن الوصول إليه فقط من شبكة فرعية خاصة، وليس عامة. قم بإصلاح إصدار الموفر. قم بإرجاع نقطة النهاية كمخرج."

الفرق: الموجه الثاني يعطي المحرك والإصدار والتشفير وقيد الشبكة والقاعدة السرية - الإخراج آمن وقريب من المنتج.

الأخطاء الشائعة

  • "للتقديم" دون وضع "خطة". أغلى خطأ في IaC؛ خطط دائمًا أولاً.
  • تضمين السر في HCL ينشئ تسربًا دائمًا إلى سجل Git.
  • تخزين الدولة غير آمن. إن الحالة العامة غير المشفرة والمفتوحة هي كارثة.
  • عدم إصلاح النسخة. سيؤدي استخدام الموفر دون تحديد الإصدار إلى حدوث أعطال مفاجئة في المستقبل.
  • *`الإجراء: إذن واسع النطاق مثل ""`.** ينتهك مبدأ الامتياز الأقل.
  • تجاهل "التدمير" غير المتوقع. تطبيق بنود الحذف في الخطة دون سؤال.

باختصار

يقوم IaC بتحويل البنية التحتية إلى تعليمات برمجية قابلة للتكرار وقابلة للإصدار والتدقيق؛ الأداة الأكثر شيوعًا هي Terraform. يقوم الذكاء الاصطناعي بإنتاج بذرة HCL بسرعة، ولكن يجب عليك توفير الإصدار والتفاصيل الخاصة بالسحابة وقواعد الأمان. القاعدة المعصومة في Terraform: رؤية كل تغيير بخطة، والاستعلام عن عمليات الحذف غير المتوقعة، وإبعاد الأسرار عن التعليمات البرمجية، والحفاظ على الحالة بشكل آمن. إن أسطر التدمير والاستبدال في مخرجات الخطة هي الأماكن التي يجب قراءتها بعناية أكبر.

مهمة التطبيق

اطلب من الذكاء الاصطناعي إنشاء بنية تحتية صغيرة (مثل مجموعة تخزين وسياسة وصول) باستخدام قالب "إنشاء رسم تخطيطي للبنية التحتية" أعلاه. بعد ذلك: (1) اطلب من قالب "الفحص" التحقق من الأذونات السرية أو * المضمنة في الكود؛ (2) إذا أمكن، قم بتشغيل init +plan في حساب اختباري واقرأ مخرجات الخطة باستخدام قالب "تفسير الخطة"؛ (3) لاحظ أي عمليات حذف/تغييرات غير متوقعة.

قائمة مرجعية

  • [ ] أضفت السحابة، وإصدار Terraform/الموفر، وقيود التشفير/الشبكة إلى المطالبة الخاصة بي.
  • [ ] لا يوجد سر نص عادي في الكود؛ قيم الدقة متغيرة.
  • [ ] لقد قمت بتضييق نطاق IAM/الأذونات إلى الحد الأدنى من الأذونات، * لم أستخدمها.
  • [ ] قمت بتشغيل الخطة قبل التقديم وقراءة الإخراج سطرًا تلو الآخر.
  • [ ] لقد تحققت من عدم وجود تدمير/استبدال غير متوقع في الخطة.
  • [ ] أنا متأكد من أن الحالة محفوظة في واجهة خلفية مشفرة ومقفلة ومقيدة.