{"title":"تعدد المستأجرين والعزل","slug":"multi-tenancy","category":"concepts","summary":"كيف يعزل Synapse البيانات بين المستخدمين والعقول — شرح حدود الأمان.","audience":["human","llm"],"tags":["concept","multi-tenancy","security","isolation"],"difficulty":"intermediate","updated":"2026-06-27","word_count":522,"read_minutes":3,"lang":"ar","translated":true,"requested_lang":"ar","content_markdown":"\n# تعدد المستأجرين والعزل\n\nSynapse متعدد المستأجرين: عدة مستخدمين، كلٌّ بعدة عقول، معزولون تمامًا\nعن بعضهم البعض. تشرح هذه الصفحة نموذج العزل.\n\n## التسلسل الهرمي للمستأجرين\n\n```\nSynapse Instance\n  │\n  ├── User Account 1 (email: alice@example.com)\n  │   ├── Mind A (Mind Key mk_aaa...)\n  │   │   ├── Memories (only accessible via mk_aaa...)\n  │   │   ├── Tasks\n  │   │   └── Chat\n  │   └── Mind B (Mind Key mk_bbb...)\n  │       └── ... (isolated from Mind A)\n  │\n  ├── User Account 2 (email: bob@example.com)\n  │   └── Mind C (Mind Key mk_ccc...)\n  │       └── ... (isolated from Alice's minds)\n  │\n  └── ... (more users)\n```\n\n## مستويات العزل\n\n### المستوى 1: عزل المستخدم\n\nكل حساب مستخدم معزول. لا تستطيع Alice:\n\n- رؤية عقول Bob\n- الوصول إلى ذكريات Bob (حتى مع JWT الخاص بها)\n- سرد معلومات حساب Bob\n\nيُفرض عبر: عمود `user_id` في جميع الجداول، يحتوي JWT على `user_id`، جميع\nالاستعلامات تُصفّي حسب `user_id`.\n\n### المستوى 2: عزل العقل\n\nضمن مستخدم، كل عقل معزول. لا يستطيع العقل A:\n\n- رؤية ذكريات العقل B\n- الوصول إلى مهام العقل B، الدردشة، السكربتات\n\nيُفرض عبر: عمود `mind_id` في جميع جداول البيانات، يحتوي Mind Key على `mind_id`،\nجميع الاستعلامات تُصفّي حسب `mind_id`.\n\n> [!CRITICAL]\n> عزل Mind Key هو حدود الأمان الأساسية. Mind Key المُسرّب\n> يمنح وصولًا كاملًا لبيانات ذلك العقل — لكن ذلك العقل فقط.\n\n## رموز المصادقة\n\n| الرمز | النطاق | ما يستطيع الوصول إليه |\n|-------|-------|-------------------|\n| Mind Key | عقل واحد | بيانات ذلك العقل فقط |\n| JWT | حساب المستخدم | إدارة الحساب (إنشاء/سرد/حذف العقول) |\n| Computer Token | جهاز واحد | أوامر ذلك الجهاز |\n\n## الوصول عبر العقول\n\n### ضمن نفس المستخدم\n\nيستطيع المستخدم الوصول إلى جميع عقله عبر JWT (مثلًا `GET /minds` يسرد الكل).\nلكن لقراءة/كتابة بيانات الذاكرة، يحتاج إلى Mind Key المحدد.\n\n### عبر المستخدمين\n\nلا يستطيع المستخدمون الوصول إلى بيانات بعضهم البعض — إلا إذا شاركوا عقلًا صراحةً\nعبر Sharing API:\n\n```bash\n# Alice تشارك العقل A مع Bob\ncurl -X POST https://synapse.schaefer.zone/sharing \\\n  -H \"Authorization: Bearer ALICE_JWT\" \\\n  -d '{\"mind_id\": \"m_aaa\", \"email\": \"bob@example.com\", \"role\": \"read\"}'\n```\n\nبعد المشاركة، يستطيع Bob الوصول إلى العقل A عبر JWT الخاص به (للقراءة فقط إذا `role=read`).\n\n## حدود الأمان\n\n```\n┌─────────────────────────────────────────────────┐\n│              Synapse Instance                    │\n│  ┌─────────────────────────────────────────┐    │\n│  │         User Account Boundary           │    │\n│  │  ┌──────────────┐  ┌──────────────┐    │    │\n│  │  │  Mind Bound. │  │  Mind Bound. │    │    │\n│  │  │  (Mind Key)  │  │  (Mind Key)  │    │    │\n│  │  │              │  │              │    │    │\n│  │  │  Memories    │  │  Memories    │    │    │\n│  │  │  Tasks       │  │  Tasks       │    │    │\n│  │  │  Chat        │  │  Chat        │    │    │\n│  │  │  Scripts     │  │  Scripts     │    │    │\n│  │  └──────────────┘  └──────────────┘    │    │\n│  └─────────────────────────────────────────┘    │\n└─────────────────────────────────────────────────┘\n```\n\n## أنماط تعدد المستأجرين الشائعة\n\n### النمط 1: مستخدم واحد، عقل واحد\n\nالأكثر شيوعًا لمستخدمي وكلاء LLM الأفراد.\n\n- 1 حساب مستخدم\n- 1 عقل\n- 1 Mind Key\n- جميع الذكريات في نطاق واحد\n\n### النمط 2: مستخدم واحد، عقول متعددة\n\nللمستخدمين ذوي السياقات المتعددة (العمل، الشخصي، المشاريع).\n\n- 1 حساب مستخدم\n- N عقول (مثلًا \"work\"، \"personal\"، \"project-x\")\n- N من Mind Keys\n- كل جلسة LLM تستخدم Mind Key واحد\n\n### النمط 3: عقل مشترك للفريق\n\nللفرق المتعاونة على مشروع.\n\n- مستخدم واحد ينشئ العقل (يحصل على Mind Key)\n- المنشئ يشارك مع أعضاء الفريق عبر JWT\n- جميع أعضاء الفريق يصلون عبر JWT (أو Mind Key مشترك)\n\n> [!WARNING]\n> مشاركة Mind Key تمنح وصولًا كاملًا للقراءة/الكتابة. للتعاون الجماعي،\n> فضّل Sharing API (قائم على JWT) بدلًا من مشاركة Mind Keys مباشرة.\n\n### النمط 4: مزوّد SaaS\n\nللتطبيقات التي تُضمّن Synapse كطبقة ذاكرة لها.\n\n- كل عميل = 1 حساب مستخدم\n- كل مشروع عميل = 1 عقل\n- التطبيق يخزّن Mind Keys لكل عميل/مشروع\n- عزل كامل بين العملاء\n\n## التحقق من العزل\n\n### اختبار: Mind Key لا يستطيع الوصول إلى عقول أخرى\n\n```bash\n# مفتاح العقل A لا يستطيع قراءة ذكريات العقل B\ncurl -H \"Authorization: Bearer mk_aaa...\" \\\n     \"https://synapse.schaefer.zone/memory/search?q=test\"\n# يُرجع ذكريات العقل A فقط\n\ncurl -H \"Authorization: Bearer mk_bbb...\" \\\n     \"https://synapse.schaefer.zone/memory/search?q=test\"\n# يُرجع ذكريات العقل B فقط (نتائج مختلفة)\n```\n\n### اختبار: JWT لا يستطيع قراءة بيانات الذاكرة مباشرة\n\n```bash\n# يستطيع JWT سرد العقول\ncurl -H \"Authorization: Bearer YOUR_JWT\" \\\n     https://synapse.schaefer.zone/minds\n# يُرجع: قائمة العقول\n\n# JWT لا يستطيع قراءة الذكريات (يحتاج Mind Key)\ncurl -H \"Authorization: Bearer YOUR_JWT\" \\\n     https://synapse.schaefer.zone/memory/recall\n# يُرجع: 401 Unauthorized\n```\n\n## أفضل الممارسات\n\n> [!TIP]\n> - **استخدم عقلًا واحدًا لكل مشروع/سياق** — العزل صديقك\n> - **لا تشارك Mind Keys أبدًا** — استخدم Sharing API بدلًا من ذلك\n> - **دوّر Mind Keys** إذا تعرّضت للاختراق (احذف العقل، أنشئ واحدًا جديدًا)\n> - **دقّق العقول المشتركة** — راجع `GET /sharing` دوريًا\n> - **استخدم JWT لواجهة الإنسان** — لا ت expose Mind Keys للمستخدمين النهائيين\n\n## الخطوات التالية\n\n- [المصادقة](/docs/getting-started/authentication)\n- [Mind Key مقابل JWT](/docs/getting-started/mind-key-vs-jwt)\n- [البنية](/docs/concepts/architecture)\n","content_html":"<h1>تعدد المستأجرين والعزل</h1>\n<p>Synapse متعدد المستأجرين: عدة مستخدمين، كلٌّ بعدة عقول، معزولون تمامًا\nعن بعضهم البعض. تشرح هذه الصفحة نموذج العزل.</p>\n<h2>التسلسل الهرمي للمستأجرين</h2>\n<pre><code class=\"hljs language-plaintext\">Synapse Instance\n  │\n  ├── User Account 1 (email: alice@example.com)\n  │   ├── Mind A (Mind Key mk_aaa...)\n  │   │   ├── Memories (only accessible via mk_aaa...)\n  │   │   ├── Tasks\n  │   │   └── Chat\n  │   └── Mind B (Mind Key mk_bbb...)\n  │       └── ... (isolated from Mind A)\n  │\n  ├── User Account 2 (email: bob@example.com)\n  │   └── Mind C (Mind Key mk_ccc...)\n  │       └── ... (isolated from Alice&#x27;s minds)\n  │\n  └── ... (more users)</code></pre><h2>مستويات العزل</h2>\n<h3>المستوى 1: عزل المستخدم</h3>\n<p>كل حساب مستخدم معزول. لا تستطيع Alice:</p>\n<ul>\n<li>رؤية عقول Bob</li>\n<li>الوصول إلى ذكريات Bob (حتى مع JWT الخاص بها)</li>\n<li>سرد معلومات حساب Bob</li>\n</ul>\n<p>يُفرض عبر: عمود <code>user_id</code> في جميع الجداول، يحتوي JWT على <code>user_id</code>، جميع\nالاستعلامات تُصفّي حسب <code>user_id</code>.</p>\n<h3>المستوى 2: عزل العقل</h3>\n<p>ضمن مستخدم، كل عقل معزول. لا يستطيع العقل A:</p>\n<ul>\n<li>رؤية ذكريات العقل B</li>\n<li>الوصول إلى مهام العقل B، الدردشة، السكربتات</li>\n</ul>\n<p>يُفرض عبر: عمود <code>mind_id</code> في جميع جداول البيانات، يحتوي Mind Key على <code>mind_id</code>،\nجميع الاستعلامات تُصفّي حسب <code>mind_id</code>.</p>\n<div class=\"callout callout-critical\">عزل Mind Key هو حدود الأمان الأساسية. Mind Key المُسرّب\nيمنح وصولًا كاملًا لبيانات ذلك العقل — لكن ذلك العقل فقط.</div><h2>رموز المصادقة</h2>\n<table>\n<thead>\n<tr>\n<th>الرمز</th>\n<th>النطاق</th>\n<th>ما يستطيع الوصول إليه</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Mind Key</td>\n<td>عقل واحد</td>\n<td>بيانات ذلك العقل فقط</td>\n</tr>\n<tr>\n<td>JWT</td>\n<td>حساب المستخدم</td>\n<td>إدارة الحساب (إنشاء/سرد/حذف العقول)</td>\n</tr>\n<tr>\n<td>Computer Token</td>\n<td>جهاز واحد</td>\n<td>أوامر ذلك الجهاز</td>\n</tr>\n</tbody></table>\n<h2>الوصول عبر العقول</h2>\n<h3>ضمن نفس المستخدم</h3>\n<p>يستطيع المستخدم الوصول إلى جميع عقله عبر JWT (مثلًا <code>GET /minds</code> يسرد الكل).\nلكن لقراءة/كتابة بيانات الذاكرة، يحتاج إلى Mind Key المحدد.</p>\n<h3>عبر المستخدمين</h3>\n<p>لا يستطيع المستخدمون الوصول إلى بيانات بعضهم البعض — إلا إذا شاركوا عقلًا صراحةً\nعبر Sharing API:</p>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Alice تشارك العقل A مع Bob</span>\ncurl -X POST https://synapse.schaefer.zone/sharing \\\n  -H <span class=\"hljs-string\">&quot;Authorization: Bearer ALICE_JWT&quot;</span> \\\n  -d <span class=\"hljs-string\">&#x27;{&quot;mind_id&quot;: &quot;m_aaa&quot;, &quot;email&quot;: &quot;bob@example.com&quot;, &quot;role&quot;: &quot;read&quot;}&#x27;</span></code></pre><p>بعد المشاركة، يستطيع Bob الوصول إلى العقل A عبر JWT الخاص به (للقراءة فقط إذا <code>role=read</code>).</p>\n<h2>حدود الأمان</h2>\n<pre><code class=\"hljs language-plaintext\">┌─────────────────────────────────────────────────┐\n│              Synapse Instance                    │\n│  ┌─────────────────────────────────────────┐    │\n│  │         User Account Boundary           │    │\n│  │  ┌──────────────┐  ┌──────────────┐    │    │\n│  │  │  Mind Bound. │  │  Mind Bound. │    │    │\n│  │  │  (Mind Key)  │  │  (Mind Key)  │    │    │\n│  │  │              │  │              │    │    │\n│  │  │  Memories    │  │  Memories    │    │    │\n│  │  │  Tasks       │  │  Tasks       │    │    │\n│  │  │  Chat        │  │  Chat        │    │    │\n│  │  │  Scripts     │  │  Scripts     │    │    │\n│  │  └──────────────┘  └──────────────┘    │    │\n│  └─────────────────────────────────────────┘    │\n└─────────────────────────────────────────────────┘</code></pre><h2>أنماط تعدد المستأجرين الشائعة</h2>\n<h3>النمط 1: مستخدم واحد، عقل واحد</h3>\n<p>الأكثر شيوعًا لمستخدمي وكلاء LLM الأفراد.</p>\n<ul>\n<li>1 حساب مستخدم</li>\n<li>1 عقل</li>\n<li>1 Mind Key</li>\n<li>جميع الذكريات في نطاق واحد</li>\n</ul>\n<h3>النمط 2: مستخدم واحد، عقول متعددة</h3>\n<p>للمستخدمين ذوي السياقات المتعددة (العمل، الشخصي، المشاريع).</p>\n<ul>\n<li>1 حساب مستخدم</li>\n<li>N عقول (مثلًا &quot;work&quot;، &quot;personal&quot;، &quot;project-x&quot;)</li>\n<li>N من Mind Keys</li>\n<li>كل جلسة LLM تستخدم Mind Key واحد</li>\n</ul>\n<h3>النمط 3: عقل مشترك للفريق</h3>\n<p>للفرق المتعاونة على مشروع.</p>\n<ul>\n<li>مستخدم واحد ينشئ العقل (يحصل على Mind Key)</li>\n<li>المنشئ يشارك مع أعضاء الفريق عبر JWT</li>\n<li>جميع أعضاء الفريق يصلون عبر JWT (أو Mind Key مشترك)</li>\n</ul>\n<div class=\"callout callout-warn\">مشاركة Mind Key تمنح وصولًا كاملًا للقراءة/الكتابة. للتعاون الجماعي،\nفضّل Sharing API (قائم على JWT) بدلًا من مشاركة Mind Keys مباشرة.</div><h3>النمط 4: مزوّد SaaS</h3>\n<p>للتطبيقات التي تُضمّن Synapse كطبقة ذاكرة لها.</p>\n<ul>\n<li>كل عميل = 1 حساب مستخدم</li>\n<li>كل مشروع عميل = 1 عقل</li>\n<li>التطبيق يخزّن Mind Keys لكل عميل/مشروع</li>\n<li>عزل كامل بين العملاء</li>\n</ul>\n<h2>التحقق من العزل</h2>\n<h3>اختبار: Mind Key لا يستطيع الوصول إلى عقول أخرى</h3>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># مفتاح العقل A لا يستطيع قراءة ذكريات العقل B</span>\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer mk_aaa...&quot;</span> \\\n     <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone/memory/search?q=test&quot;</span>\n<span class=\"hljs-comment\"># يُرجع ذكريات العقل A فقط</span>\n\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer mk_bbb...&quot;</span> \\\n     <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone/memory/search?q=test&quot;</span>\n<span class=\"hljs-comment\"># يُرجع ذكريات العقل B فقط (نتائج مختلفة)</span></code></pre><h3>اختبار: JWT لا يستطيع قراءة بيانات الذاكرة مباشرة</h3>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># يستطيع JWT سرد العقول</span>\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_JWT&quot;</span> \\\n     https://synapse.schaefer.zone/minds\n<span class=\"hljs-comment\"># يُرجع: قائمة العقول</span>\n\n<span class=\"hljs-comment\"># JWT لا يستطيع قراءة الذكريات (يحتاج Mind Key)</span>\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_JWT&quot;</span> \\\n     https://synapse.schaefer.zone/memory/recall\n<span class=\"hljs-comment\"># يُرجع: 401 Unauthorized</span></code></pre><h2>أفضل الممارسات</h2>\n<div class=\"callout callout-ok\"></div><h2>الخطوات التالية</h2>\n<ul>\n<li><a href=\"/docs/getting-started/authentication\">المصادقة</a></li>\n<li><a href=\"/docs/getting-started/mind-key-vs-jwt\">Mind Key مقابل JWT</a></li>\n<li><a href=\"/docs/concepts/architecture\">البنية</a></li>\n</ul>\n","urls":{"html":"/docs/concepts/multi-tenancy","text":"/docs/concepts/multi-tenancy?format=text","json":"/docs/concepts/multi-tenancy?format=json","llm":"/docs/concepts/multi-tenancy?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}