0Pricing
Terraform Infrastructure as Code · درس

سياسات Sentinel للحوكمة

تعلّم كتابة سياسات كرمز وفرضها باستخدام HashiCorp Sentinel لضمان الامتثال والحوكمة عبر عمليات نشر Terraform.

سياسات Sentinel للحوكمة درس مجاني في Terraform Infrastructure as Code على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Terraform Infrastructure as Code، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Terraform Infrastructure as Code 4 دروس في المجموع.

مقدمة إلى السياسات باعتبارها تعليمات برمجية وSentinel

ماذا لو تمكّنتم من ضمان توافق عمليات نشر البنية التحتية تلقائيًا مع قواعد محددة؟ هذه هي قوة السياسات باعتبارها تعليمات برمجية (PaC). تحدد PaC قواعد إنشاء البنية التحتية وتعديلها بطريقة قابلة للبرمجة، فتدمج الحوكمة في سير عمل التطوير لديكم. ويُعد HashiCorp Sentinel إطارًا قويًا لـ PaC ومصممًا لهذا الغرض.

دور Sentinel مع Terraform

يتكامل Sentinel مباشرةً مع Terraform Cloud وTerraform Enterprise. ويعمل بوصفه بوابة تحقق، إذ يقيّم خطة تنفيذ Terraform قبل تطبيق أي تغييرات على بيئتكم السحابية. وتمنع هذه الخطوة المهمة توفير بنية تحتية غير متوافقة أو غير آمنة، من خلال فرض القواعد بشكل استباقي.

السياسات ومستويات الفرض

سياسة Sentinel هي مجموعة من القواعد المكتوبة بلغة Sentinel. عند تشغيل سياسة، تُرجع القيمة true (نجاح) أو false (فشل). ويمكن ضبط السياسات باستخدام مستويات فرض مختلفة:

  • استشاري: يحذّر من الانتهاكات، لكنه يسمح بمتابعة العملية.
  • إلزامي بشكل مرن: يتطلب تجاوزًا صريحًا لمتابعة التغييرات غير المتوافقة.
  • إلزامي بشكل صارم: يحظر العمليات غير المتوافقة بالكامل، ويشترط الالتزام بالسياسة.

بنية سياسة Sentinel

تُعرَّف سياسات Sentinel في ملفات .sentinel. وتتضمن عادةً عمليات استيراد وقواعد وشرطًا رئيسيًا. وتحدد قاعدة main نتيجة نجاح السياسة أو فشلها.

قد تبدو السياسة الأساسية على النحو التالي:

import "tfplan"

main = rule {
  tfplan.resource_changes is empty
}

الوصول إلى بيانات خطة Terraform

يوفّر الاستيراد tfplan عرضًا منظمًا لخطة تنفيذ Terraform. وتستخدم السياسات هذه البيانات لفحص:

  • tfplan.resource_changes: تفاصيل الموارد التي يجري إنشاؤها أو تحديثها أو حذفها.
  • tfplan.variables: متغيرات الإدخال المقدمة إلى الإعداد.
  • tfplan.outputs: قيم الإخراج الناتجة عن الإعداد.

تُعد هذه البيانات مهمة لاتخاذ قرارات مستنيرة بشأن السياسات، استنادًا إلى ما ينوي Terraform فعله.

مثال: رفض المناطق غير المعتمدة

لنكتب سياسة Sentinel لضمان نشر جميع موارد AWS في us-east-1 فقط. تتحقق هذه السياسة من المنطقة المضبوطة لكل مورد من موارد AWS في الخطة.

import "tfplan/v2" as tfplan

allowed_regions = ["us-east-1"]

is_region_allowed = func(resource_change) {
  if resource_change.provider.name is "aws" {
    region = resource_change.provider.config.region else "us-east-1"
    return region in allowed_regions
  }
  return true # Not an AWS resource, allow
}

all_regions_compliant = all tfplan.resource_changes as _, rc {
  is_region_allowed(rc)
}

main = rule {
  all_regions_compliant
}

دوال ومعاملات السياسة

يوفّر Sentinel دوالًا ومعاملات مضمّنة قوية للتعامل مع المنطق المعقد:

  • دوال المجموعات: all وany وfilter وmap للتكرار على القوائم/الخرائط.
  • دوال الأنواع: is وtype_of للتحقق من أنواع البيانات.
  • المعاملات: منطقية (and وor وnot) ومعاملات مقارنة (== و!= و> و<).

تساعدكم هذه العناصر في إنشاء سياسات متينة ومرنة للتعامل مع سيناريوهات متنوعة.

مثال: فرض العلامات المطلوبة

من متطلبات الحوكمة الشائعة فرض علامات محددة على الموارد لتوزيع التكاليف أو التعريف بها. تضمن هذه السياسة أن تحتوي جميع موارد aws_instance الجديدة أو المحدّثة على علامة Project.

import "tfplan/v2" as tfplan

required_tags = ["Project"]

resource_has_required_tags = func(resource_change) {
  if resource_change.type is "aws_instance" {
    # Check if 'tags' attribute exists in the planned state
    if not ("tags" in resource_change.change.after) {
      return false
    }
    
    missing_tags = filter required_tags as tag {
      not (tag in resource_change.change.after.tags)
    }
    return missing_tags is empty
  }
  return true # Not an aws_instance, allow
}

all_instances_tagged = all tfplan.resource_changes as _, rc {
  (rc.change.actions contains "create" or rc.change.actions contains "update") ?
    resource_has_required_tags(rc) :
    true # Only check on create/update actions
}

main = rule {
  all_instances_tagged
}

اختبار السياسات محليًا

قبل نشر السياسات إلى Terraform Cloud/Enterprise، يمكنكم اختبارها محليًا باستخدام Sentinel CLI. يتيح لكم الأمر sentinel test تعريف حالات اختبار ببيانات tfplan وهمية. ويساعدكم ذلك في التحقق من سلوك السياسة واكتشاف الأخطاء مبكرًا، بما يضمن عمل سياساتكم كما هو مقصود دون التأثير في البيئات الحية.

التحقق من منطق السياسة

تحتاجون إلى إنشاء سياسة Sentinel تمنع إنشاء أي حاوية AWS S3 مع إتاحة القراءة العامة. ما الجزء المحدد من بيانات tfplan الذي ستفحصونه بشكل أساسي لفرض ذلك؟

مراجعة: الحوكمة باستخدام Sentinel

استكشفنا HashiCorp Sentinel، وهو إطار قوي للسياسات باعتبارها تعليمات برمجية من أجل الحوكمة:

  • يتكامل مع Terraform Cloud/Enterprise لفرض القواعد.
  • تقيّم السياسات tfplan قبل تطبيق البنية التحتية.
  • تتحكم مستويات الفرض المختلفة (استشاري، ومرن، وصارم) في تأثير السياسة.
  • يمكنكم كتابة سياسات لرفض المناطق وفرض العلامات وغير ذلك الكثير.
  • يضمن الاختبار المحلي عمل السياسات كما هو مقصود قبل النشر.

يُعد Sentinel عنصرًا أساسيًا للحفاظ على الامتثال والأمان والمعايير التشغيلية عبر عمليات نشر البنية التحتية لديكم.

الأسئلة الشائعة

هل درس «سياسات Sentinel للحوكمة» مجاني؟

نعم — نص درس «سياسات Sentinel للحوكمة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Terraform Infrastructure as Code، انتقل إلى CoddyKit PRO. تتضمن دورة Terraform Infrastructure as Code 4 دروس في المجموع.

ماذا ستتعلم في «سياسات Sentinel للحوكمة»؟

تعلّم كتابة سياسات كرمز وفرضها باستخدام HashiCorp Sentinel لضمان الامتثال والحوكمة عبر عمليات نشر Terraform. تتمرن على Terraform Infrastructure as Code مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Terraform Infrastructure as Code؟

لا تُشترط خبرة سابقة. Terraform Infrastructure as Code على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «سياسات Sentinel للحوكمة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Terraform Infrastructure as Code هذا؟

نعم. كل درس في Terraform Infrastructure as Code يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أنماط السحابة المتعددة والسحابة الهجينة
  2. سياسات Sentinel للحوكمة
  3. Terraform Cloud وEnterprise
  4. بناء موفّرات مخصصة
← العودة إلى Terraform Infrastructure as Code