shell.exec جيد حتى يكون الأمر
rm -rf، وdb.query جيد حتى يصيب prod. ذلك التمييز هو ما تعبّر عنه عبارة
وسائط: عبارة jsonpath لوسيطة أداة
تطابق على القيم التي يمرّرها وكيل، فيُطلق الحكم فقط على الاستدعاء الخطر ويترك
البقية وشأنها.
هذه الصفحة كتاب طبخ — حفنة من وصفات args_match_json للنسخ واللصق للحالات
الأكثر شيوعاً. لقواعد العبارات الكاملة، وجدول العوامل، ودلالات الفشل المغلق،
انظر التحقق من الوسائط ومرجع
مخطط القاعدة.
1. كيف تعمل عبارة jsonpath لوسيطة أداة
args_match_json للقاعدة هي سلسلة مرمّزة بصيغة JSON تحمل مجموعة من
العبارات، كلها مدموجة بـ AND. القيمة المفكوكة كائن، {"clauses": [ … ]}،
حيث كل عبارة ثلاثية { path, op, value }:
path— مجموعة فرعية صغيرة من JSONPath على كائن وسائط الأداة:$.command،$.foo.bar،$.items[0]، أو$للكائن كله. لا أحرف بدل أو فلاتر أو شرائح أو نزول تكراري.op— واحد من مجموعة مغلقة:eqوcontainsوregexوinوcidr_matchوgtوlt.value— الحرف الذي يُقارَن به (سلسلة، رقم، bool، أو — لـin— مصفوفة JSON).
tool_name_glob للقاعدة: تُطلق القاعدة فقط عندما
يطابق اسم الأداة و تصحّ كل عبارة. احذف args_match_json بالكامل (أو اتركها
"{}" فارغة) فتطابق القاعدة على glob وحده.
العبارات تفشل مغلقةً — القاعدة، وليس الطلب. إذا لم يُحَل مسار، أو كانت
الوسائط مشوّهة، أو كانت قيمة من النوع الخاطئ، تُقيَّم العبارة خطأ والقاعدة
ببساطة لا تُطلق — يسقط الاستدعاء إلى القاعدة التالية أو الحكم الافتراضي. عبارة
معطوبة لا ترفض تلقائياً أبداً. اكتب حاجز دعمك الصارم كـ glob
deny عادي، وليس
كعبارة تعتمد على فشلها بطريقة معيّنة.2. وصفة: احجب أمراً مدمّراً واحداً
الحالة النموذجية. اسمح بـshell.exec عموماً، ارفضها فقط عندما يبدو الأمر
مدمّراً. عبارة regex على $.command تفعلها:
$.command غير سلسلة (أو غائب) لا يطابق أبداً،
فاستدعاء مشوّه يسقط بدلاً من أن يُحجب خطأً.
3. وصفة: ارفض أداة مقابل بيئة مسمّاة
دعdb.query يعمل، لكن فقط مقابل اتصالات آمنة — ارفضه عندما يكون الهدف prod
أو replica. العامل in يطابق القيمة المُحَلّة مقابل أي عنصر من مصفوفة JSON:
in يجب أن تكون مصفوفة JSON — غير المصفوفة تُرفض عند حفظ القاعدة.
تُقارَن العناصر بمساواة قياسية، فالأرقام والسلاسل يطابق كل منها نوعه.
4. وصفة: ارفض وجهة IP خاص أو بيانات تعريف
عندما تأخذ أداة IP هدف كوسيطة،cidr_match يختبر ما إذا كان يقع داخل CIDR —
شكل SSRF لـ “وكيل يجلب 10.x أو عنوان بيانات تعريف السحابة”:
5. وصفة: ضع سقفاً لوسيطة رقمية
gt وlt يقارنان الأرقام. استخدمهما لرفض حجم دفعة سخيف، أو حد مفرط الحجم، أو
أي عدد منفلت — هنا، ارفض حذفاً دفعياً يستهدف أكثر من 100 صف:
"500" عدم تطابق نوع
ولا تطابق، فلن تُطلق القاعدة على وسيطة من نوع سلسلة. أبقِ الوسيطة رقمية، أو
طبّعها قبل أن تراها الأداة.
6. وصفة: ادمج العبارات (AND)
كل العبارات في قاعدة واحدة تُدمج بـ AND، فيمكنك تضييق حكم إلى استدعاء محدد جداً — مثلاً، ارفضshell.exec فقط عندما يكون أمراً مدمّراً و مُوجَّهاً
نحو مضيف prod:
args_match_json واحد — ألّف
قاعدتين (أو globين) بأولويات مختلفة. يجتاز المحرك القواعد بترتيب الأولوية
وأول مطابقة تفوز، فضع القواعد الضيّقة أولاً. انظر
أولوية القاعدة.
7. اختر الحكم للشكل المطابق
تقرر العبارة أي الاستدعاءات تطابق؛ ويقررverdict للقاعدة ما يحدث. deny
هو افتراضي كتاب الطبخ، لكن نفس العبارة يمكن أن تحمل حكماً أنعم:
sanitize — نقّح سراً في وسيطة
sanitize — نقّح سراً في وسيطة
عندما تحمل الوسيطة المطابقة سراً أو PII بدلاً من تعليمة خطرة،
sanitize
ينقّح السلاسل الفرعية المطابقة من وسائط الأداة ويعيد توجيه الاستدعاء
المنظَّف. ينقّح الوسائط فقط — وليس أبداً المحتوى الذي تعيده أداة. انظر
تطهير الاستجابات.pending_approval — علّق الاستدعاء المطابق لإنسان
pending_approval — علّق الاستدعاء المطابق لإنسان
علّق الشكل المحفوف بالمخاطر بالضبط للمراجعة بدلاً من حجبه صراحةً: يوافق
مراجِع أو يرفض خارج النطاق، ويعيد الوكيل تقديم الاستدعاء المعتمد مرة واحدة.
انظر الموافقات.
audit — فقط رؤيته، الآن
audit — فقط رؤيته، الآن
اضبط الحكم على
audit لتسجيل الاستدعاء المطابق دون حجب بينما تضبط
العبارة. اقرن بـ وضع الظل لقياس
deny مقابل حركة المرور الحية قبل أن يغيّر أي شيء.8. اختبر العبارة قبل أن تعتمد عليها
تبويب Test في وحدة التحكم يجري سياسة تجريبياً مقابل استدعاء أداة عينة ويعيد الحكم، والقاعدة المطابقة، والسبب — لا شيء يُرسَل، ولا شيء يُحفظ. الصق كائن وسائط واقعي وأكّد أن العبارة تُطلق على الاستدعاءات التي تقصدها وفقط تلك، إذ عبارة لا يمكنها حل قيمة لا تُطلق صامتةً. انظر اختبار القواعد.يُتحقَّق من العبارات بصرامة عند الحفظ — العوامل المجهولة، والمسارات
السيئة، وقيمة
in غير المصفوفة، وregex غير القابل للترجمة، وCIDR غير الصالحة
كلها تُرفض، فلا يمكن إبقاء عبارة مشوّهة في المقام الأول.9. من يمكنه تأليف عبارات الوسائط
كل هذا يعمل في وحدة التحكم تحت جلستك (/api/workspace/firewall/*):
| الإجراء | الدور |
|---|---|
| قراءة السياسات، الإعدادات المسبقة، الأدوات المكتشفة | Member |
| إنشاء / تحرير / حذف القواعد | Developer+ |
| صندوق رمل Test (إجراء سياسة تجريبياً) | Developer+ |
| قراءة الأحداث وتجميعات التشغيل | Developer+ |
ذات صلة
التحقق من الوسائط
حالة استخدام مطابقة الوسائط كاملةً.
حجب الأدوات
ارفض أداة كاملة بالاسم — لا حاجة لعبارة.
التحكم في egress
احكم وجهات المضيف / IP / CIDR الصادرة.
مخطط القاعدة
كل حقل يمكن أن تحمله قاعدة.
أولوية القاعدة
أول مطابقة تفوز — رتّب الضيّق قبل العريض.
استدعاءات الأدوات الخطرة
التهديد الذي تعالجه هذه الوصفات.
