Skip to main content

تعدد المستأجرين والعزل

كيف يعزل Synapse البيانات بين المستخدمين والعقول — شرح حدود الأمان.


تعدد المستأجرين والعزل

Synapse متعدد المستأجرين: عدة مستخدمين، كلٌّ بعدة عقول، معزولون تمامًا عن بعضهم البعض. تشرح هذه الصفحة نموذج العزل.

التسلسل الهرمي للمستأجرين

Synapse Instance
  │
  ├── User Account 1 (email: alice@example.com)
  │   ├── Mind A (Mind Key mk_aaa...)
  │   │   ├── Memories (only accessible via mk_aaa...)
  │   │   ├── Tasks
  │   │   └── Chat
  │   └── Mind B (Mind Key mk_bbb...)
  │       └── ... (isolated from Mind A)
  │
  ├── User Account 2 (email: bob@example.com)
  │   └── Mind C (Mind Key mk_ccc...)
  │       └── ... (isolated from Alice's minds)
  │
  └── ... (more users)

مستويات العزل

المستوى 1: عزل المستخدم

كل حساب مستخدم معزول. لا تستطيع Alice:

  • رؤية عقول Bob
  • الوصول إلى ذكريات Bob (حتى مع JWT الخاص بها)
  • سرد معلومات حساب Bob

يُفرض عبر: عمود user_id في جميع الجداول، يحتوي JWT على user_id، جميع الاستعلامات تُصفّي حسب user_id.

المستوى 2: عزل العقل

ضمن مستخدم، كل عقل معزول. لا يستطيع العقل A:

  • رؤية ذكريات العقل B
  • الوصول إلى مهام العقل B، الدردشة، السكربتات

يُفرض عبر: عمود mind_id في جميع جداول البيانات، يحتوي Mind Key على mind_id، جميع الاستعلامات تُصفّي حسب mind_id.

عزل Mind Key هو حدود الأمان الأساسية. Mind Key المُسرّب يمنح وصولًا كاملًا لبيانات ذلك العقل — لكن ذلك العقل فقط.

رموز المصادقة

الرمز النطاق ما يستطيع الوصول إليه
Mind Key عقل واحد بيانات ذلك العقل فقط
JWT حساب المستخدم إدارة الحساب (إنشاء/سرد/حذف العقول)
Computer Token جهاز واحد أوامر ذلك الجهاز

الوصول عبر العقول

ضمن نفس المستخدم

يستطيع المستخدم الوصول إلى جميع عقله عبر JWT (مثلًا GET /minds يسرد الكل). لكن لقراءة/كتابة بيانات الذاكرة، يحتاج إلى Mind Key المحدد.

عبر المستخدمين

لا يستطيع المستخدمون الوصول إلى بيانات بعضهم البعض — إلا إذا شاركوا عقلًا صراحةً عبر Sharing API:

# Alice تشارك العقل A مع Bob
curl -X POST https://synapse.schaefer.zone/sharing \
  -H "Authorization: Bearer ALICE_JWT" \
  -d '{"mind_id": "m_aaa", "email": "bob@example.com", "role": "read"}'

بعد المشاركة، يستطيع Bob الوصول إلى العقل A عبر JWT الخاص به (للقراءة فقط إذا role=read).

حدود الأمان

┌─────────────────────────────────────────────────┐
│              Synapse Instance                    │
│  ┌─────────────────────────────────────────┐    │
│  │         User Account Boundary           │    │
│  │  ┌──────────────┐  ┌──────────────┐    │    │
│  │  │  Mind Bound. │  │  Mind Bound. │    │    │
│  │  │  (Mind Key)  │  │  (Mind Key)  │    │    │
│  │  │              │  │              │    │    │
│  │  │  Memories    │  │  Memories    │    │    │
│  │  │  Tasks       │  │  Tasks       │    │    │
│  │  │  Chat        │  │  Chat        │    │    │
│  │  │  Scripts     │  │  Scripts     │    │    │
│  │  └──────────────┘  └──────────────┘    │    │
│  └─────────────────────────────────────────┘    │
└─────────────────────────────────────────────────┘

أنماط تعدد المستأجرين الشائعة

النمط 1: مستخدم واحد، عقل واحد

الأكثر شيوعًا لمستخدمي وكلاء LLM الأفراد.

  • 1 حساب مستخدم
  • 1 عقل
  • 1 Mind Key
  • جميع الذكريات في نطاق واحد

النمط 2: مستخدم واحد، عقول متعددة

للمستخدمين ذوي السياقات المتعددة (العمل، الشخصي، المشاريع).

  • 1 حساب مستخدم
  • N عقول (مثلًا "work"، "personal"، "project-x")
  • N من Mind Keys
  • كل جلسة LLM تستخدم Mind Key واحد

النمط 3: عقل مشترك للفريق

للفرق المتعاونة على مشروع.

  • مستخدم واحد ينشئ العقل (يحصل على Mind Key)
  • المنشئ يشارك مع أعضاء الفريق عبر JWT
  • جميع أعضاء الفريق يصلون عبر JWT (أو Mind Key مشترك)
مشاركة Mind Key تمنح وصولًا كاملًا للقراءة/الكتابة. للتعاون الجماعي، فضّل Sharing API (قائم على JWT) بدلًا من مشاركة Mind Keys مباشرة.

النمط 4: مزوّد SaaS

للتطبيقات التي تُضمّن Synapse كطبقة ذاكرة لها.

  • كل عميل = 1 حساب مستخدم
  • كل مشروع عميل = 1 عقل
  • التطبيق يخزّن Mind Keys لكل عميل/مشروع
  • عزل كامل بين العملاء

التحقق من العزل

اختبار: Mind Key لا يستطيع الوصول إلى عقول أخرى

# مفتاح العقل A لا يستطيع قراءة ذكريات العقل B
curl -H "Authorization: Bearer mk_aaa..." \
     "https://synapse.schaefer.zone/memory/search?q=test"
# يُرجع ذكريات العقل A فقط

curl -H "Authorization: Bearer mk_bbb..." \
     "https://synapse.schaefer.zone/memory/search?q=test"
# يُرجع ذكريات العقل B فقط (نتائج مختلفة)

اختبار: JWT لا يستطيع قراءة بيانات الذاكرة مباشرة

# يستطيع JWT سرد العقول
curl -H "Authorization: Bearer YOUR_JWT" \
     https://synapse.schaefer.zone/minds
# يُرجع: قائمة العقول

# JWT لا يستطيع قراءة الذكريات (يحتاج Mind Key)
curl -H "Authorization: Bearer YOUR_JWT" \
     https://synapse.schaefer.zone/memory/recall
# يُرجع: 401 Unauthorized

أفضل الممارسات

الخطوات التالية