السياسة كمدونة
1) ما يعتبر «سياسة»
السياسة هي قاعدة حتمية تجيب على السؤال «يمكن/لا يمكن» (أو «كيف يمكن بالضبط») بالنظر إلى السياق:- الوصول/الإذن: RBAC/ABAC، ReBAC، تصدير البيانات، زيادة (MFA).
- أمن البنية التحتية: التحكم في القبول Kubernetes، الصورة/السياسة السرية، قواعد الشبكة.
- الامتثال والخصوصية: إدارة الموافقة، ووضع علامات PII، وأيام الإبلاغ المحلية، والقيود الجغرافية.
- التكوينات والجودة: «رفض: أحدث،» حدود الموارد، علامات الموارد الإلزامية (السحابة).
- البيانات و ML: حظر التدريب على المجموعات دون موافقة، وإخفاء الهوية، وميزانيات DP، ونسب البيانات الثابتة.
2) نموذج PaC المعماري
PAP (نقطة إدارة السياسات): عمليات المستودع والإدارة (MR/PR، استعراض، نسخة).
PDP (نقطة قرار السياسة): المحرك الذي يحسب قرار السياسة (OPA، محرك الأرز، مترجم أصلي).
PEP (نقطة إنفاذ السياسة): نقطة التطبيق (بوابة API، إدارة خطاف الويب في K8s، محول ETL، SDK).
PIP (نقطة معلومات السياسة): مصادر السمات/الحقائق: IdP، أدلة الموارد، مستودع البيانات، معدل المخاطر.
سجل القرار/مراجعة الحسابات: سجلات الحلول غير القابلة للتغيير (لتحليل الحوادث والامتثال لها).
الدفق: طلب → شكل PEP سياق → حقائق تحميل PDP (PIP) → يحسب الحل → PEP ينطبق (السماح/الرفض/التحرير) → log/metrics.
3) الأدوات والمجالات
OPA/Rego هو محرك ولغة عالميان للسياسات التصريحية (إدارة خطاف الويب في K8s: Gatekeeper، في CI - Conftest، في API - sidecar/service).
Kyverno - سياسات إعلانية لـ Kubernetes في YAML، التصحيح/التحقق/التوليد.
Cedar (AWS/portable) هي لغة سياسة تركز على من فوق الإذن.
IAM السحابي (AWS/GCP/Azure) - سياسات الموارد السحابية (يفضل التحقق من PaC الثابت وفي خطط IaC).
مخصص - DSL/قواعد على JSON/SQL للتفاصيل (على سبيل المثال، امتثال ML).
4) دورة حياة السياسة
1. تعريف الهدف والنطاق: «حظر تحميل الحاويات ذات نقاط الضعف العالية/الحرجة».
2. إضفاء الطابع الرسمي في الرمز: Rego/Cedar/YAML.
3. الاختبارات: جداول الحقيقة، الحالات السلبية، على أساس الملكية.
4. فحص CI: بطانة، وحدة، تكامل على بيانات/طلبات وهمية.
5. الإصدار والتوزيع: النشر في حزمة، التوقيع، التسليم إلى PDP/edge.
6. المراقبة: معدل الضرب، زمن الكمون p95/p99، رفض المشاركة، لوحات القيادة العائمة.
7. الاستثناءات/الإعفاءات: الوقت/الحجم المحدود، مراجعة الحسابات والمملوكة.
8. إعادة التشكيل والأرشيف: النسخ، التوافق، الهجرات.
5) التخزين والتوزيع
إعادة التخطيط: "السياسات/< المجال >/< السياسة> .rego" cedar "yaml'،" الاختبارات/"، "الحزم/"،" المخططات/".
Versioning: semver and «policy _ version» in PDP responses.
حزم - حزم سياسات مضغوطة + مخططات + تكوينات، موقعة (أمن سلسلة التوريد).
التوزيع: سحب (PDP يسحب من registry/S3) أو دفع (وحدة التحكم ترسل).
التقييم الجزئي: يتوقع سياسات التنفيذ السريع في المحيط.
6) نموذج البيانات والمخططات
عقد السياق الواحد: 'الموضوع'، 'المورد'، 'الإجراء'، 'env'، 'القانوني'.
JSON-Schema/Protobuf: التحقق من صحة النماذج الفعلية ؛ عدم تطابق المخطط - سبب «إنكار → غير محدد».
تطبيع السمات: أسماء موحدة (على سبيل المثال، «مستأجر _ معرف»، «مخاطرة _ مستوى»، «pii _ tags'،» صورة. vulns ').
7) الأداء والموثوقية
مخبأ الحل: المفتاح '(subject_hash، resource_key، العمل، policy_version)' ؛ TTL قصيرة، الإعاقة حسب الحدث (تغيير الدور/العلامة).
الحقائق المحلية: لا تسحب PIPs الثقيلة على المسار الساخن - لقطات مزامنة.
فشل فتح مقابل فشل مغلق: أمن المجال الحرج - فشل مغلق ؛ بالنسبة لـ UX-critical - التدهور (الطبعة بدلاً من الإنكار).
ميزانية الكمون: الهدف «<3-10 مللي ثانية» لكل حل في ذاكرة PDP، «<30-50 مللي ثانية» باستخدام PIP.
8) إدارة الاستثناء (الإعفاءات)
الوقت المحدود (مثلاً) 7 أيام)، مع المالك الإلزامي والعقل.
مقرونة بما يلي: حسب الموارد/المشاريع/مساحة الأسماء ؛ حظر عالمي «إلى الأبد».
مراجعة الحسابات والتذكيرات: تقارير عن الإعفاءات المنتهية الصلاحية والإغلاق التلقائي/التصعيد.
9) المقاييس وقابلية الرصد
تغطية السياسات: نسبة المسارات/نقاط النهاية التي تحميها السلطة الفلسطينية.
معدل انتظار اتخاذ القرار/نظام تحديد الكميات/الأخطاء.
Deny Rate and False Positive/Culture (via dry-run/shadow mode).
الانجراف: التناقض بين الخطة (IaC) والحقيقة (مباشر)، بين حلول SDK والخادم.
Аудит: 'decision _ id, policy_ids, version, attributes_digest, effect, reason'.
10) الأنماط المضادة
السياسات «صلبة» في رمز بدون إصدارات واختبارات.
عدم وجود مخططات/تصديق السياق → قرارات لا يمكن التنبؤ بها.
ملف واحد متجانس "ميجا. ريغو"
لا توجد عملية استثنائية → الجولات اليدوية والفوضى.
تطبيق وقت التشغيل فقط دون تغيير اليسار في CI (الإخفاقات المتأخرة).
الآثار الجانبية الخفية في السياسة (ينبغي أن تكون السياسة العامة وظيفة خالصة).
11) أمثلة
11. 1 Rego (OPA) - حرم الصور الضعيفة في K8s
rego package k8s. admission. vulns
deny[msg] {
input. kind. kind == "Pod"
some c img:= input. request. object. spec. containers[c].image vulns:= data. registry. scan [img] # actual-snapshot from PIP count ({v v:= vulns[_]; v.severity == "CRITICAL"}) > 0 msg:= sprintf("image %s has CRITICAL vulns", [img])
}
11. 2 Rego: بيانات التصدير من MFA و IP الأبيض فقط
rego package api. export
default allow = false
allow {
input. action == "export"
input. subject. mfa_verified == true net. cidr_contains("203. 0. 113. 0/24", input. env. ip)
}
11. 3 الأرز: اقرأ فقط للمالك أو أعضاء الفريق
cedar permit(
principal in Group::"team_members",
action in [Action::"read"],
resource in Photo::"")
when { resource. owner == principal resource. team_id in principal. team_ids };
11. 4 كيفيرنو (YAML): الحظر ': الأحدث' والإلزامي. الموارد
yaml apiVersion: kyverno. io/v1 kind: ClusterPolicy metadata:
name: disallow-latest-and-require-limits spec:
validationFailureAction: Enforce rules:
- name: disallow-latest match: { resources: { kinds: ["Pod"] } }
validate:
message: "Image tag 'latest' is not allowed."
pattern:
spec:
containers:
- name: ""
image: "!:latest"
- name: require-limits match: { resources: { kinds: ["Pod"] } }
validate:
message: "resources. limits.{cpu,memory} required."
pattern:
spec:
containers:
- resources:
limits:
cpu: "?"
memory: "?"
11. 5 Conftest in CI for Terraform Plan
bash terraform plan -out tf. plan terraform show -json tf. plan > tf. json conftest test tf. json --policy policies/terraform
12) تضمين القدرات الحالية
RBAC/ABAC: PaC - طبقة الإعلان ؛ يتم إعادة استخدام PDP/PEP من مقالة محرك الدور.
إدارة الموافقة: سياسة «الإعلانات/التخصيص» كشروط للوصول إلى البيانات/نقاط النهاية.
إخفاء الهوية: تحظر السياسات التدريب/التصدير دون إخفاء الهوية وموجزات ميزانية مدير البرنامج.
التوجيه الجغرافي: سياسة لتوجيه حركة المرور/البيانات حسب منطقة التخزين.
13) العمليات والأشخاص
مالكو مجالات السياسة: الأمن والمنصة والبيانات والمنتج/التسويق.
المراجعون: الأمان + أصحاب النطاق.
فهرس السياسات: وصف الهدف، المخاطر، SLO، الاتصال، الأمثلة، روابط الحوادث.
التدريب: أدلة ومقتطفات للمطورين (كيفية كتابة الاختبارات، وكيفية تنقيح Rego).
14) قائمة مراجعة المهندس المعماري
1. تحديد الحد الأدنى لمجموعة المجالات والمالكين ؟
2. مستودع السياسات مع الاختبارات، البطانة و CI ؟
3. هل يتم وضع PDPs/PEPs على المحيط، في واجهة برمجة التطبيقات، في K8s، وفي خطوط أنابيب البيانات ؟
4. هل هناك مخططات السياق والتحقق من الصحة ؟
5. حزم التوقيع والتسليم والمخابئ واستراتيجية الإعاقة ؟
6. المقاييس (الكمون والإنكار والانجراف) وسجل القرار والتدقيق ؟
7. عملية الاستثناء مع TTL والإبلاغ ؟
8. الجري/وضع الظل قبل الإنفاذ ؟
9. التقييم الجزئي/التعويض المسبق للبقع الساخنة ؟
10. كتيب عن التدهور (فشل مغلق/السماح مع التنقيح) ؟
خامسا - الاستنتاج
تجعل السياسة كمدونة القواعد قابلة للتكرار ويمكن التحقق منها وإدارتها على نفس مبادئ التطبيق: مدونة المراجعة والاختبارات و CI/CD والمقاييس والتراجع. من خلال ربط PaC بالترخيص (RBAC/ABAC) والامتثال وأمن النظام الأساسي، تحصل على حلقة تحكم واحدة يمكن التنبؤ بها وقابلة للتطوير لسلوك النظام - من التحكم في القبول إلى صادرات البيانات وخطوط أنابيب ML.