Skip to main content

मल्टी-टैनेंसी और आइसोलेशन

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 Key उस mind के डेटा तक पूर्ण पहुँच प्रदान करती है — लेकिन केवल उसी mind तक।

प्रमाणीकरण टोकन

टोकन दायरा क्या एक्सेस कर सकता है
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) के माध्यम से एक्सेस करते हैं
Mind Key साझा करना पूर्ण पढ़ने/लिखने का एक्सेस देता है। टीम सहयोग के लिए, सीधे Mind Keys साझा करने के बजाय Sharing API (JWT-आधारित) को प्राथमिकता दें।

पैटर्न 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

सर्वोत्तम प्रथाएँ

अगले कदम