मल्टी-टैनेंसी और आइसोलेशन
Synapse उपयोगकर्ताओं और minds के बीच डेटा को कैसे अलग करता है — सुरक्षा सीमाओं की व्याख्या।
मल्टी-टैनेंसी और आइसोलेशन
Synapse मल्टी-टैनेंट है: कई उपयोगकर्ता, प्रत्येक के पास कई minds, जो एक-दूसरे से पूरी तरह अलग हैं। यह पृष्ठ आइसोलेशन मॉडल की व्याख्या करता है।
टैनेंट पदानुक्रम
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 के minds देख सकती है
- Bob की मेमोरीज़ एक्सेस कर सकती है (अपने JWT के साथ भी)
- Bob की खाता जानकारी सूचीबद्ध कर सकती है
लागू द्वारा: सभी तालिकाओं पर user_id कॉलम, JWT में user_id शामिल, सभी क्वेरीज़ user_id द्वारा फ़िल्टर करती हैं।
स्तर 2: Mind आइसोलेशन
किसी उपयोगकर्ता के भीतर, प्रत्येक mind अलग है। Mind A नहीं कर सकता:
- Mind B की मेमोरीज़ देख सकता है
- Mind B के कार्य, चैट, स्क्रिप्ट्स एक्सेस कर सकता है
लागू द्वारा: सभी डेटा तालिकाओं पर mind_id कॉलम, Mind Key में mind_id शामिल, सभी क्वेरीज़ mind_id द्वारा फ़िल्टर करती हैं।
प्रमाणीकरण टोकन
| टोकन | दायरा | क्या एक्सेस कर सकता है |
|---|---|---|
| Mind Key | एकल mind | केवल उस mind का डेटा |
| JWT | उपयोगकर्ता खाता | खाता प्रबंधन (minds बनाएँ/सूचीबद्ध करें/हटाएँ) |
| Computer Token | एकल कंप्यूटर | उस कंप्यूटर के कमांड्स |
क्रॉस-Mind एक्सेस
उसी उपयोगकर्ता के भीतर
उपयोगकर्ता JWT के माध्यम से अपने सभी minds एक्सेस कर सकता है (जैसे GET /minds सभी को सूचीबद्ध करता है)।
लेकिन मेमोरी डेटा पढ़ने/लिखने के लिए, उन्हें विशिष्ट Mind Key की आवश्यकता है।
उपयोगकर्ताओं के बीच
उपयोगकर्ता एक-दूसरे के डेटा को एक्सेस नहीं कर सकते — जब तक वे Sharing API के माध्यम से स्पष्ट रूप से कोई mind साझा न करें:
# Alice shares Mind A with 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 अपने JWT के माध्यम से Mind A एक्सेस कर सकता है (केवल पढ़ने के लिए यदि role=read)।
सुरक्षा सीमाएँ
┌─────────────────────────────────────────────────┐
│ Synapse Instance │
│ ┌─────────────────────────────────────────┐ │
│ │ User Account Boundary │ │
│ │ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Mind Bound. │ │ Mind Bound. │ │ │
│ │ │ (Mind Key) │ │ (Mind Key) │ │ │
│ │ │ │ │ │ │ │
│ │ │ Memories │ │ Memories │ │ │
│ │ │ Tasks │ │ Tasks │ │ │
│ │ │ Chat │ │ Chat │ │ │
│ │ │ Scripts │ │ Scripts │ │ │
│ │ └──────────────┘ └──────────────┘ │ │
│ └─────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘सामान्य मल्टी-टैनेंसी पैटर्न
पैटर्न 1: एकल उपयोगकर्ता, एकल Mind
व्यक्तिगत LLM एजेंट उपयोगकर्ताओं के लिए सबसे सामान्य।
- 1 उपयोगकर्ता खाता
- 1 mind
- 1 Mind Key
- सभी मेमोरीज़ एक दायरे में
पैटर्न 2: एकल उपयोगकर्ता, कई Minds
कई संदर्भों (कार्य, व्यक्तिगत, परियोजनाएँ) वाले उपयोगकर्ताओं के लिए।
- 1 उपयोगकर्ता खाता
- N minds (जैसे "work", "personal", "project-x")
- N Mind Keys
- प्रत्येक LLM सत्र एक Mind Key का उपयोग करता है
पैटर्न 3: टीम साझा Mind
किसी परियोजना पर सहयोग करने वाली टीमों के लिए।
- 1 उपयोगकर्ता mind बनाता है (Mind Key प्राप्त करता है)
- निर्माता JWT के माध्यम से टीम के सदस्यों के साथ साझा करता है
- सभी टीम के सदस्य JWT (या साझा Mind Key) के माध्यम से एक्सेस करते हैं
पैटर्न 4: SaaS प्रदाता
उन ऐप्स के लिए जो Synapse को अपनी मेमोरी परत के रूप में एम्बेड करते हैं।
- प्रत्येक ग्राहक = 1 उपयोगकर्ता खाता
- प्रत्येक ग्राहक परियोजना = 1 mind
- ऐप प्रति ग्राहक/परियोजना Mind Keys स्टोर करता है
- ग्राहकों के बीच पूर्ण आइसोलेशन
आइसोलेशन सत्यापन
परीक्षण: Mind Key अन्य minds एक्सेस नहीं कर सकता
# Mind A's key cannot read Mind B's memories
curl -H "Authorization: Bearer mk_aaa..." \
"https://synapse.schaefer.zone/memory/search?q=test"
# Returns only Mind A's memories
curl -H "Authorization: Bearer mk_bbb..." \
"https://synapse.schaefer.zone/memory/search?q=test"
# Returns only Mind B's memories (different results)परीक्षण: JWT सीधे मेमोरी डेटा नहीं पढ़ सकता
# JWT can list minds
curl -H "Authorization: Bearer YOUR_JWT" \
https://synapse.schaefer.zone/minds
# Returns: list of minds
# JWT CANNOT read memories (need Mind Key)
curl -H "Authorization: Bearer YOUR_JWT" \
https://synapse.schaefer.zone/memory/recall
# Returns: 401 Unauthorized