تعدد المستأجرين والعزل
كيف يعزل 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 | عقل واحد | بيانات ذلك العقل فقط |
| 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 مشترك)
النمط 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