الانتقال إلى المحتوى الرئيسي

نطاق قراءة الوكيل: لماذا يُعد الوصول الكامل إلى القرص تجريدًا خاطئًا لتعريض البيانات

لا تستطيع أذونات نظام الملفات التعبير عن ما ينوي الوكيل فعله بالبيانات. ينبغي منح نطاق القراءة حسب فئة البيانات وقصد الاستعلام، لا حسب جذر نظام الملفات.

صورة مقربة للوحة دارات تُظهر المسارات ونقاط اللحام وقاعدة معالج تحت عمق ميدان ضحل.

نظام الملفات ليس لغة سياسات

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

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

قرار Apple بتشديد الوصول الكامل إلى القرص في macOS للوكلاء الأذكياء استجابة معقولة لتغير حقيقي في ملف المخاطر. الوكيل ليس مشغلًا بشريًا. يعمل بسرعة الآلة، ويمكنه تسلسل نداءات الأدوات دون توقف للحكم، وقد يتصرف بناءً على تعليمات تصل عبر القناة نفسها التي يقرأ منها البيانات. لكن التخفيف يبقى نسخة أخشن من التجريد نفسه: تنبيه، أو مربع حوار موافقة، أو منح أضيق. يضيّق من يمكنه القراءة، لكنه لا يستطيع التعبير عن الغرض من القراءة. وحدة الثقة الحقيقية هي ثلاثية الوكيل وفئة البيانات والغرض. لا يستطيع أي نموذج أذونات لنظام الملفات التعبير عن هذه الثلاثية، لأن نظام الملفات لا يعرف مهمة الوكيل.

فئات البيانات كوحدة تحديد النطاق

البديل القابل للتطبيق هو التوقف عن معاملة نظام الملفات كحدود السياسة والبدء بمعاملة فئة البيانات كوحدة تحديد النطاق. صنّف البيانات القابلة للقراءة إلى طبقات قبل تشغيل أي وكيل:

  • عام: التوثيق، والمواد المرجعية المنشورة، ومجموعات البيانات المفتوحة.
  • تشغيلي: تهيئة الخدمات، وبيانات النشر، والسجلات غير الحساسة.
  • شخصي: سجلات المستخدمين، ونصوص الدعم، وأي شيء يحدد هوية فرد.
  • سري: بيانات الاعتماد، والرموز، والمفاتيح الخاصة، ومواد التوقيع.

يعلن الوكيل الطبقات التي يحتاجها كجزء من بيان تشغيله. وكيل استرجاع يلخص توثيقًا عامًا يعلن public. ووكيل فرز يقرأ نصوص الدعم يعلن public وpersonal. ووكيل يدوّر بيانات الاعتماد يعلن secret، وينبغي أن يكون هذا الإعلان غير معتاد بما يكفي ليثير المراجعة.

Aerial view of freight trains in a railway yard, showing industrial logistics

الإنفاذ ينتمي إلى طبقة الأدوات، لا إلى طبقة نظام التشغيل. لا يتلقى الوكيل وحدة تخزين مثبتة ومسارًا. بل يتلقى دوال: read_public_doc(id)، وread_support_ticket(id)، وread_credential_ref(name). تتحقق كل دالة من مجموعة الطبقات المعلنة للوكيل مقابل طبقة البيانات التي هي على وشك إرجاعها. إذا لم يعلن الوكيل secret، تُرجع دالة بيانات الاعتماد رفضًا، لا مقبض ملف. ولأن كود الوكيل نفسه لا يرى مسار نظام ملفات أبدًا، لا يمكنه التصعيد بفتح ملف مباشرة. الحدود خاصية للواجهة، لا لمستوى صلاحيات العملية.

ينتج عن هذا أيضًا سجل تدقيق لا يستطيع سجل نظام الملفات إعادة بنائه. يسجل سجل نظام الملفات أن العملية 4821 فتحت /etc/credentials/store. أما سجل طبقة الأدوات فيسجل أن الوكيل triage-v3، بالغرض المعلن summarise open support tickets، طلب read_support_ticket(88213) وتلقى سجلًا في الطبقة personal. وعند حدوث قراءة عابرة للطبقات، يحمل السجل الغرض المعلن إلى جانبها. هذا هو الفرق بين معرفة أن ملفًا فُتح ومعرفة ما كان الوكيل يحاول إنجازه.

آلية ملموسة

النمط هو غلاف قدرات مع فحص طبقة وطابع غرض. بإيجاز:

TIERS = {"public": 0, "operational": 1, "personal": 2, "secret": 3}

def guarded_read(agent, resource, tier):
    if TIERS[tier] > TIERS[agent.declared_max_tier]:
        audit.deny(agent.id, resource, tier, agent.purpose)
        raise ScopeError(f"{agent.id} is not scoped for {tier}")
    audit.allow(agent.id, resource, tier, agent.purpose)
    return resource.fetch()

الطبقة القصوى المعلنة للوكيل ثابتة عند بدء التشغيل. توسيعها في منتصف التشغيل ليس تغييرًا في التهيئة؛ بل هو تشغيل جديد ببيان جديد وموافقة جديدة. تيار التدقيق للإضافة فقط ومفتاحه هوية الوكيل والغرض المعلن، فيستطيع المراجع إعادة بناء ليس فقط ما قُرئ بل أي مهمة دفعت كل قراءة.

هذا ليس صندوقًا رمليًا بمعنى نظام التشغيل. إنه طبقة سياسات تفترض أن الوكيل يتفاعل مع العالم حصريًا عبClose-up of a laboratory microscope objective lens used for scientific research and analysis

ما تكلفته

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

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

المقايضة متعمدة. عمل تصنيف أولي أكبر، ومالك لانحراف الطبقات، وبيئة تشغيل تفرض العزل — مقابل سطح تعريض قابل للقراءة والإنفاذ والتدقيق. منح نظام الملفات رخيص الإصدار ومستحيل التفكير فيه بعد الواقعة. أما إعلان الطبقة فمكلف الصيانة ومقروء وقت المراجعة.

قاعدة تصميم

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

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

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

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

مشاركةXLinkedInرابط دائم6 دقيقة قراءة

قراءات ذات صلة

الأسئلة التي يجيب عنها هذا

Why is full disk access the wrong primitive for AI agents?

It is a binary grant over a file tree and cannot express why an agent is reading a file. Two reads of the same path — resolving a dependency versus extracting a credential — are indistinguishable to the filesystem, so the permission model cannot separate legitimate use from exfiltration.

What is the (agent, data class, purpose) triple?

It is the unit of trust that actually governs exposure: which agent is reading, which tier of data it is reading, and what task the read serves. Filesystem permissions cannot express this triple because the filesystem has no knowledge of the agent's task.

Where should tier boundaries be enforced?

At the tool layer, not the OS layer. The agent receives wrapped functions that check its declared tier set before returning data, so the agent's own code never sees a filesystem path and cannot escalate by opening a file directly.

What is the main trade-off of tiered read scope?

Tier classification is manual and drifts over time, so it needs an owner and a review cadence. Tool-layer enforcement also assumes the agent runs in a sandbox that cannot bypass the wrapped interfaces via direct syscalls or network access.