الانتقال إلى المحتوى الرئيسي
سياسة جدار الحماية هي قائمة مرتبة من القواعد. هذه الصفحة هي المرجع الكامل لما يمكن أن تعبّر عنه القاعدة — لغة المطابقة، والأحكام، وكيف يقيّمها المحرك. تُؤلَّف القواعد في محرّر القواعد بوحدة التحكم، الذي يكتب كائنات مطابقة JSON مهيكلة. كل ما يلي يصف تلك المفردات حتى تقرأ قاعدة وتستدلّ عليها وتتحقق منها بدقة — سواء بنيتها في الواجهة أو نشرتها عبر API.

1. تشريح القاعدة

الحقلالنوعالمعنى
priorityintالأدنى يعمل أولاً. تُحسم التعادلات بمعرّف القاعدة.
labelstringاسم بشري، يُعرَض في الأحداث والتدقيق.
stageenumالسطحinbound / response / mcp / egress. فارغ = كل الأسطح.
tool_name_globstringGlob على اسم الأداة.
skill_name_globstringglob اختياري على المهارة المالكة. يُجمَع بـ AND مع glob الأداة؛ فارغ = أي مهارة.
verdictenumالإجراء — انظر §7.
args_matchobjectمُسنِد وسائط اختياري.
sanitizeobjectتكوين التنقيح، يُستخدَم عندما verdict = sanitize. انظر §5.
egressobjectقائمة سماح/حظر Host/CIDR، تُستخدَم عندما stage = egress. انظر §6.
cap_cost_centsintسقف تكلفة التشغيل، يُستخدَم عندما verdict = cap_cost.
sequenceobjectمطابقة مرتبة متعددة الخطوات، تُفرَض تفاعلياً. انظر §8.
notesstringمبرّر المؤلِّف؛ يتجاهله المحرك.
تطابق القاعدة استدعاء أداة عندما تتحقق كل شروطها المعلَنة: تطابق المرحلة (أو تكون فارغة)، ويطابق glob الأداة، ويطابق glob المهارة (أو يكون فارغاً)، وتطابق عبارات الوسائط (أو تكون غائبة)، ويطابق نطاق egress (قواعد egress فقط). يجتاز المحرك القواعد بترتيب الأولوية وأول مطابقة تفوز.

2. نمط glob لاسم الأداة

قواعد نحوية صغيرة متعمَّدة، حساسة لحالة الأحرف — بلا مفاجآت regex، زمن خطي، آمنة على المسار الساخن للترحيل:
النمطيطابق
"" أو *كل أداة.
foo.*البادئة — foo.bar، foo.exec (ليس foo المجرّد).
*.execاللاحقة — shell.exec، db.exec (ليس exec المجرّد).
*.shell.*الداخلي — local.shell.exec (يحتاج ≥1 حرف على كل جانب).
أي شيء آخرمطابقة سلسلة مضبوطة (بما في ذلك foo.*.bar).
تُسمّى الأدوات اصطلاحاً بمساحة أسماء server.tool أو category.action، فيلتقط shell.* عائلة كاملة ويلتقط *.delete فعلاً عبر الخوادم.

3. نمط glob لاسم المهارة

نفس قواعد glob النحوية، تُطابَق مقابل المهارة المالكة لاستدعاء الأداة (مثل community.*، builtin.send). يُجمَع بـ AND مع tool_name_glob، بحيث:
tool_name_glob:  http.fetch
skill_name_glob: community.*
يطابق http.fetch فقط عندما تكون مملوكة لمهارة community.* — ثق بنفس الأداة من مهارة مدمجة، واحجبها من مهارة مجتمعية. glob المهارة الفارغ يطابق أي مالك. كيف يُنسَب استدعاء أداة إلى مهارة مغطّى في المهارات.

4. عبارات الوسائط

مطابقة اسم الأداة تجيب عن أي أداة؛ وعبارات الوسائط تجيب عن بأي وسائط — الفرق بين “احجب shell.exec” و”احجب shell.exec فقط عندما يكون الأمر rm -rf”. args_match هي مجموعة عبارات، مجموعة كلها بـ AND:
{
  "clauses": [
    { "path": "$.command",    "op": "regex",      "value": "rm -rf|drop table" },
    { "path": "$.connection", "op": "in",         "value": ["prod", "replica"] },
    { "path": "$.ip",         "op": "cidr_match", "value": "10.0.0.0/8" }
  ]
}
args_match فارغ / غائب صحيح خوائياً — تطابق القاعدة على glob وحده.

العوامل

العامليطابق عندما
eqتساوٍ قياسي (تُقارَن الأرقام عددياً؛ عدم تطابق النوع ← لا مطابقة).
containsسلسلة فرعية (يجب أن يكون كلا المعاملَين سلاسل).
regexنمط Go RE2 يطابق القيمة النصية (زمن خطي، بلا مراجع خلفية).
inالقيمة عنصر في مصفوفة JSON المعطاة.
cidr_matchالـ IP النصي يقع داخل الـ CIDR المعطى.
gt / ltأكبر-من / أصغر-من عددياً (السلاسل لا تُقحَم).

بنية المسار

مجموعة فرعية صغيرة من JSONPath فوق كائن وسائط الأداة:
  • $.foo، $.foo.bar — الوصول إلى الحقل
  • $.foo[0]، $.arr[1].k — فهرسة المصفوفة
  • $ — كائن الوسائط كاملاً
بلا أحرف بدل، أو مرشحات، أو شرائح، أو نزول تعاودي.
عبارات الوسائط تفشل مغلقةً — القاعدة، وليس الطلب. إذا لم يُحَل مسار، أو كانت الوسائط مشوّهة، أو كان regex/CIDR غير صالح، تُقيَّم العبارة خاطئة ولا تُطلَق القاعدة ببساطة — يسقط الاستدعاء إلى القاعدة التالية أو الحكم الافتراضي. العبارة المعطوبة لا تحجب تلقائياً أبداً ولا تُعطّل الترحيل. اكتب قاعدة “اضبط كل شيء خطير” كـ deny صريح بـ glob خاص بها بدلاً من الاعتماد على فشل عبارة بطريقة معيّنة.
تتحقق وحدة التحكم من العبارات بصرامة عند الحفظ (العوامل المجهولة، المسارات السيئة، قيم in غير المصفوفية، أنماط regex غير القابلة للترجمة، وأنماط CIDR غير الصالحة كلها مرفوضة) بحيث لا يمكن أصلاً حفظ عبارة مشوّهة.

5. المُطهّرات

حكم sanitize ينقّح السلاسل الفرعية المطابقة من وسائط الأداة ويعيد توجيه الاستدعاء المنظَّف — مفيد لتجريد الأسرار أو PII التي وضعها الوكيل في وسيطة أداة دون حجب الإجراء بأكمله.
{ "presets": ["email", "ssn_us"], "custom": ["foo-\\d+"] }
تُستبدَل مطابقات الإعداد المسبق بـ [redacted:<preset>]؛ ومطابقات regex المخصص بـ [redacted:custom]. مكتبة الإعدادات المسبقة المدمجة: aws_access_key، aws_secret_key، openai_key، anthropic_key، bearer_token، email، ssn_us، credit_card (مع فحص Luhn). يجب أن تعلن قاعدة sanitize عن إعداد مسبق واحد أو نمط مخصص واحد على الأقل — المُطهّر الفارغ مرفوض عند الحفظ. على سطح inbound لا توجد وسائط وقت الاستدعاء لتنقيحها، لذا يتصاعد حكم sanitize هناك إلى حجب.

6. قوائم وجهات egress

قاعدة egress (المرحلة egress) تطابق على وجهة صادرة — سطح SSRF والتسريب:
{
  "deny":  ["169.254.169.254", "10.0.0.0/8"],
  "allow": ["api.openai.com"]
}
تطابق المدخلات كـ CIDR، أو IP حرفي، أو اسم مضيف غير حساس لحالة الأحرف؛ وتُحَل أسماء المضيفين بأفضل جهد وتُعاد مطابقتها مقابل مدخلات IP/CIDR. تتبع القطبية الحكم: مع حكم allow تحدّد قائمة allow ما هو ضمن النطاق وتنحت deny استثناءات منه؛ ومع حكم فارض (deny) تحدّد قائمة deny ما يُحجب وتنحت allow استثناءات منه. 169.254.169.254 (نقطة نهاية بيانات وصف السحابة) ونطاقات RFC-1918 هي الأشياء الكنسية التي تُحجب — يشحن الإعداد المسبق block_ssrf_egress ومستوى الاستقلالية tight ذلك بالضبط.

7. الأحكام

الحكمالأثرملاحظات
allowيمرّر، مُسجَّل.
auditيسمح + يسجّل للمراجعة.الـ default_verdict المعتاد.
denyيحجب الاستدعاء.HTTP 400 على inbound؛ خطأ أداة على mcp.
sanitizeينقّح الوسائط، يمرّر.يحتاج مُطهّراً؛ يتصاعد إلى deny على inbound.
pending_approvalيعلّق لإنسان.يتطلب تكوين متجر الموافقات؛ مرفوض على response/egress.
cap_costيحجب بعد سقف إنفاق.يحتاج cap_cost_cents غير سالب؛ خامل على response/egress.
في وضع الظل يُخفَّض كل حكم فارض إلى audit ويُسبَق السبب بـ [shadow] would ….

8. التسلسلات

بعض المخاطر لا تكون مرئية إلا عبر عدة استدعاءات — اقرأ 50 سجل CRM، ثم صدّر، ثم اضرب مضيفاً خارجياً. قاعدة sequence تطابق سلسلة مرتبة بدلاً من استدعاء واحد:
{
  "window_seconds": 600,
  "steps": [
    { "match": "crm.*",   "min_count": 3 },
    { "match": "*.export" },
    { "match": "*",       "egress": true }
  ]
}
كل خطوة هي glob أداة مع min_count اختياري (الافتراضي 1) وegress: true اختياري (يجب أن تكون الخطوة استدعاء egress). يجب أن تقع الخطوات بالترتيب — التداخل مع استدعاءات أخرى لا بأس به — ويجب أن تكتمل السلسلة كاملةً ضمن window_seconds (0 = بلا حد).
تُفرَض التسلسلات تفاعلياً بواسطة مطابِق غير متزامن، وليس مضمّناً على كل استدعاء — وإلا فإن تسلسلاً بخطوة * سيطابق كل استدعاء أداة. تُضيء تغذية الأحداث ويمكنها تشغيل إجراء لاحق، لكنها لا تحجب الاستدعاء الفردي الذي يكمل السلسلة في الوقت الفعلي.

9. الإعدادات المسبقة المدمجة

ابدأ من إعداد مسبق بدلاً من قاعدة فارغة. تُؤلَّف من جانب الخادم بحيث تصف وحدة التحكم وهذه المستندات السلوك نفسه بالضبط:
الإعداد المسبقماذا يفعل
block_destructive_shellيحجب أوامر shell المدمّرة (rm -rf، mkfs، dd، قنابل التفرّع، …) عبر مجموعة من قواعد deny-by-glob.
block_ssrf_egressيدقّق egress إلى نقطة نهاية البيانات الوصفية ونطاقات RFC-1918.
block_secrets_in_argsموجَّه للكشف — يعلّم الاعتمادات الظاهرة في وسائط الأدوات.
block_pii_in_tool_resultsموجَّه للكشف — يُبرز PII في نتائج الأدوات.
طبّق إعداداً مسبقاً كبذرة، ثم حرّر بحرية — الإعداد المسبق نقطة انطلاق، وليس قفلاً.

10. التقييم، الحدود، والسلامة

  • أول مطابقة تفوز. تعمل القواعد بترتيب priority ASC, id ASC؛ أول قاعدة تتحقق كل شروطها تقرر الحكم. لا تطابق أي قاعدة ← default_verdict للسياسة.
  • حتمية وخالية من التبعيات. مطابقة glob والعبارات عمليات سلسلة/JSON نقية بلا استدعاء شبكي، آمنة للتشغيل على كل استدعاء أداة. أنماط regex هي RE2 — زمن خطي، بلا تراجع كارثي.
  • عبارات fail-closed. العبارة التي لا يمكن تقييمها تجعل قاعدتها لا تُطلَق بدلاً من الحجب التلقائي (§4).
  • تحقّق صارم وقت الحفظ. اقترانات الحكم/المرحلة، وعدم خواء المُطهّر، ووجود cap_cost_cents، وشكل العبارة، وحل المراجع كلها تُفحَص عند الحفظ — لا يمكن حفظ القواعد غير الصالحة.
  • مُدقَّقة. كل إنشاء/تحديث/حذف لقاعدة يكتب صف تدقيق بعد أن يُثبَّت التغيير؛ لا تُكتَب كتل القواعد والأسرار أبداً في سجل التدقيق.

مرجع API

تعيش القواعد تحت سياسة وضمن نطاق مساحة العمل؛ الكتابات تتطلب Developer+.
الطريقة والمسارالدورالغرض
POST /api/workspace/firewall/rulesDeveloper+إنشاء قاعدة.
PUT /api/workspace/firewall/rulesDeveloper+تحديث قاعدة (المعرّف في الجسم).
DELETE /api/workspace/firewall/rules/:idDeveloper+حذف قاعدة.
GET /api/workspace/firewall/presetsMemberقائمة الإعدادات المسبقة المدمجة.
POST /api/workspace/firewall/testDeveloper+تشغيل تجريبي لسياسة (مع القواعد) مقابل استدعاء أداة عينة.
لمعاينة قاعدة قبل الاعتماد عليها، استخدم Test — يعيد الحكم، والقاعدة المطابقة، والسبب دون إرسال أي شيء.

انظر أيضاً

تتعمّق أكثر في أمان الوكلاء؟ تضع أدلة أمّن وكلاءك - الثقة الصفرية هذه الميزة ضمن سير عمل قائم على الثقة الصفرية.

ابنِ سياسة جدار حماية

حرّر سياسة قائمة على الثقة الصفرية خطوة بخطوة، ثم شغّلها في وضع الظل قبل أن تفرضها.

مرجع مخطط القواعد

كل حقل قاعدة — أنماط globs، ومُسنِدات الوسائط، وegress، وسقوف التكلفة.