Doogree
ארכיטקטורה · הרשאות

בעלות, שיתוף עמדות ו-API פר-דייר

30/06/2026 · ~6 דקות קריאה
multi-tenantהרשאותMCP3D

מערכת שמנהלת מחשבים של לקוחות חייבת לענות על שתי שאלות מנוגדות בו-זמנית: איך שומרים שהדיירים השונים לא רואים זה את זה, ובו-בזמן איך כן מאפשרים שיתוף עמדה בין משתמשים בלי לאבד בעלות. הנה איך פתרנו את שתיהן.

הפרדת דיירים — הבסיס

כל עמדה (DEVICE) קשורה ל-workspace אחד, וכל שאילתה במערכת — רשימה, חיבור, מחיקה, ואפילו ה-WebSocket — מסוננת לפי אותו workspace. בדקנו את זה לא רק בקוד אלא חי מול בסיס-הנתונים: 0 מתוך 12 עמדות ללא שיוך, וגישה חוצת-דיירים פשוט אינה אפשרית. אפילו סיסמת העמדה מוצפנת במפתח של ה-workspace, כך שעמדה של דייר אחד לא ניתנת לפענוח עם המפתח של אחר.

בעלות פר-משתמש

בתוך אותו ארגון, כל משתמש הוא דייר נפרד: העמדה שייכת למי שחיבר אותה (owner_id), והיא פרטית לו כברירת-מחדל. זו ההפרדה שחסרה כשכל חברי הצוות ראו את הכל — עכשיו עמדה לא-משותפת נשארת אצל בעליה בלבד.

שיתוף — מפורש ופר-עמדה

שיתוף הוא פעולה מכוונת: הבעלים בוחר משתמש בארגון ומשתף איתו עמדה בודדת (device_grants) או את כל העמדות שלו (account_grants), עם בחירה בין שליטה מלאה לצפייה-בלבד. העמדה המשותפת נגישה לשניהם ומתנהגת אותו דבר — חוץ מדבר אחד:

רק הבעלים מוחק. מי שחיבר את העמדה (או מנהל הארגון) הוא היחיד שיכול למחוק את ה-DEVICE. שותף יכול רק לנתק את עצמו — להסיר את הגישה שלו, בלי להשפיע על אף אחד אחר. ניתוק דו-צדדי: גם הבעלים יכול לבטל שיתוף, וגם השותף יכול לעזוב.

בלוח יש אזור "🔗 עמדות משותפות" עם שתי לשוניות — מה שיתפתי החוצה, ומה משותף איתי — כך שניהול הגישות ברור ונוח. הקריפטו לא השתנה: ה-Worker עדיין מפענח עם מפתח ה-workspace, ושורת ה-grant היא ההרשאה. אין החלפת-מפתחות ואין רוטציה — אותו מודל-אמון, רק ממוקד פר-עמדה במקום פר-ארגון.

API ו-MCP פר-דייר

כל דייר יכול להנפיק מפתח-API משלו (drk_…) שמעניק גישה תוכניתית בדיוק באותו היקף שיש לו בלוח — לא יותר. המפתח מבודד-דייר מעצם הגדרתו. הוא מפעיל גם REST (/api/v1/*) וגם שרת MCP מאורח (/api/mcp), כך שאפשר לחבר סוכן-AI (כמו Claude) ולתת לו כלים: לרשום עמדות, לראות מה משותף, ולקבל אסימון-חיבור חד-פעמי. הכל מאחורי אותה הרשאה — סוכן לא יכול לראות עמדה שאתה לא רואה.

מפת חיבורים תלת-מימדית

ולבסוף, תצוגה בסגנון FROG: כל העמדות והשרתים שלך כצמתים סביב מרכז ("אנחנו"), עטופים במעטה-הגנה שקוף, עם חצים נכנסים/יוצאים שמראים תעבורה, פעימת-ניטור שחוזרת על עצמה על כל הקישוריות, וצבע לפי בריאות כל עמדה. ממוקדת-לקוח: כל דייר רואה רק את החיבורים שלו. זו לא קישוטיות — זו דרך לתפוס במבט אחד מה מחובר, מה מוגן, ומה דורש תשומת-לב.

שורה תחתונה: בידוד קשיח בין דיירים, שיתוף מפורש ופר-עמדה עם בעלות שמורה, גישה תוכניתית מבודדת דרך API/MCP, ותמונת-מצב חזותית — הכל על אותה תשתית-אמון, בלי לפגוע בהפרדה.

← חזרה לבלוג