Skip to main content

Ç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.

Mind Key izolasyonu birincil güvenlik sınırıdır. Sızdırılan bir Mind Key, o mind'in verilerine tam erişim sağlar — ama SADECE o mind'e.

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
Bir Mind Key paylaşmak tam okuma/yazma erişimi verir. Ekip işbirliği için doğrudan Mind Key paylaşmak yerine Sharing API'yi (JWT tabanlı) tercih edin.

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

En İyi Uygulamalar

Sonraki Adımlar