Çok Kiracılılık & İzolasyon
Synapse'in kullanıcılar ve mind'ler arasında verileri nasıl izole ettiği — güvenlik sınırları açıklaması.
Çok Kiracılılık & İzolasyon
Synapse çok kiracılıdır: birden çok kullanıcı, her biri birden çok mind ile, birbirinden tamamen izole. Bu sayfa izolasyon modelini açıklar.
Kiracı Hiyerarşisi
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)İzolasyon Düzeyleri
Düzey 1: Kullanıcı İzolasyonu
Her kullanıcı hesabı izoledir. Alice şunları yapamaz:
- Bob'un mind'lerini görmek
- Bob'un belleklerine erişmek (JWT'si ile bile)
- Bob'un hesap bilgilerini listelemek
Şununla uygulanır: tüm tablolarda user_id sütunu, JWT user_id içerir, tüm sorgular user_id ile filtrelenir.
Düzey 2: Mind İzolasyonu
Bir kullanıcı içinde her mind izoledir. Mind A şunları yapamaz:
- Mind B'nin belleklerini görmek
- Mind B'nin görevlerine, sohbetine, betiklerine erişmek
Şununla uygulanır: tüm veri tablolarında mind_id sütunu, Mind Key mind_id içerir, tüm sorgular mind_id ile filtrelenir.
Kimlik Doğrulama Token'ları
| Token | Kapsam | Neyi erişebilir |
|---|---|---|
| Mind Key | Tek mind | Yalnızca o mind'in verileri |
| JWT | Kullanıcı hesabı | Hesap yönetimi (mind oluşturma/listeleme/silme) |
| Computer Token | Tek bilgisayar | O bilgisayarın komutları |
Mind'ler Arası Erişim
Aynı kullanıcı içinde
Kullanıcı JWT ile tüm mind'lerine erişebilir (örn. GET /minds hepsini listeler). Ancak bellek verilerini okumak/yazmak için belirli Mind Key gerekir.
Kullanıcılar arası
Kullanıcılar birbirlerinin verilerine erişemez — Sharing API ile açıkça bir mind paylaşmadıkça:
# 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"}'Paylaşımdan sonra Bob, JWT'si ile Mind A'ya erişebilir (role=read ise salt okunur).
Güvenlik Sınırları
┌─────────────────────────────────────────────────┐
│ Synapse Instance │
│ ┌─────────────────────────────────────────┐ │
│ │ User Account Boundary │ │
│ │ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Mind Bound. │ │ Mind Bound. │ │ │
│ │ │ (Mind Key) │ │ (Mind Key) │ │ │
│ │ │ │ │ │ │ │
│ │ │ Memories │ │ Memories │ │ │
│ │ │ Tasks │ │ Tasks │ │ │
│ │ │ Chat │ │ Chat │ │ │
│ │ │ Scripts │ │ Scripts │ │ │
│ │ └──────────────┘ └──────────────┘ │ │
│ └─────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘Yaygın Çok Kiracılılık Desenleri
Desen 1: Tek Kullanıcı, Tek Mind
Bireysel LLM ajan kullanıcıları için en yaygın olan.
- 1 kullanıcı hesabı
- 1 mind
- 1 Mind Key
- Tüm bellekler tek bir kapsamda
Desen 2: Tek Kullanıcı, Birden Çok Mind
Birden çok bağlamı olan kullanıcılar için (iş, kişisel, projeler).
- 1 kullanıcı hesabı
- N mind (örn. "work", "personal", "project-x")
- N Mind Key
- Her LLM oturumu bir Mind Key kullanır
Desen 3: Ekip Paylaşımlı Mind
Bir proje üzerinde işbirliği yapan ekipler için.
- 1 kullanıcı mind'i oluşturur (Mind Key alır)
- Oluşturucu, ekip üyeleriyle JWT üzerinden paylaşır
- Tüm ekip üyeleri JWT (veya paylaşılan Mind Key) ile erişir
Desen 4: SaaS Sağlayıcısı
Synapse'i bellek katmanı olarak gömen uygulamalar için.
- Her müşteri = 1 kullanıcı hesabı
- Her müşteri projesi = 1 mind
- Uygulama Mind Key'leri müşteri/proje başına saklar
- Müşteriler arasında tam izolasyon
İzolasyon Doğrulaması
Test: Mind Key başka mind'lere erişemez
# 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)Test: JWT doğrudan bellek verilerini okuyamaz
# 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