תשובה קצרה: ניהול הרשאות ומשתמשים ב-SaaS מתחיל במודל תפקידים (RBAC) שמוגדר בתוך כל ארגון לקוח: בעלים, מנהל, משתמש וצופה. כל בקשה נבדקת קודם מול הארגון ואחר כך מול התפקיד, וכל שינוי הרשאה נרשם ביומן. כללים לפי קשרים או מאפיינים מוסיפים כשלקוחות צריכים שיתוף ברמת רשומה, ו-SSO עם SCIM כשעסקת אנטרפרייז דורשת אותם. המודל תלוי באופן שבו הלקוחות שלכם משתפים מידע.
עיקרי הדברים
- הארגון קודם לתפקיד: כל שאילתה כוללת מזהה ארגון, ותפקיד חל רק בתוכו.
- RBAC מספיק בהתחלה: מעט תפקידים שממופים להרשאות בשם, קל להסביר ולבקר.
- ReBAC מתאים לשיתוף: המאמר של גוגל על Zanzibar (USENIX ATC 2019) מתאר את מודל הקשרים שמאחורי בקרת הגישה ב-Drive, Calendar ו-YouTube, ו-OpenFGA הוא פרויקט קוד פתוח של CNCF שנבנה על בסיסו.
- אנטרפרייז מבקשים SSO ו-SCIM: כניסה דרך ספק הזהויות שלהם ומחיקת חשבון אוטומטית כשעובד עוזב.
שלושה מודלים: RBAC, ABAC ו-ReBAC
ב-RBAC ההרשאות שייכות לתפקידים והתפקידים למשתמשים. ABAC, לפי ההגדרה ב-NIST SP 800-162, מחליט לפי מאפיינים של המשתמש, המשאב, הפעולה והסביבה, למשל ״מנהל מאשר חשבוניות עד סכום מסוים״. ReBAC בודק שרשרת קשרים: המשתמש חבר בצוות, הצוות עורך את התיקייה, והתיקייה מכילה את המסמך.
| מודל | מתאים ל | המחיר |
|---|---|---|
| RBAC | פאנל ניהול, כלים פנימיים, מוצר B2B מוקדם | התפקידים מתרבים עם כל חריגה |
| ABAC | כללים לפי סכום, אזור או סטטוס | מדיניות שקשה לבחון ולהסביר |
| ReBAC | שיתוף, סביבות עבודה, תיקיות | מאגר הרשאות נפרד שצריך סנכרון |
כדאי להגדיר את ההרשאות כפעולות בשם (invoice.approve, user.invite) ולמפות אליהן תפקידים, וכך תפקיד חדש הוא שינוי הגדרה. זה נכון גם בCRM בהתאמה אישית, שבו כל איש מכירות רואה רק את הלידים שלו.
ריבוי לקוחות, הזמנות ומחזור החיים של משתמש
הבאג המסוכן ביותר בהרשאות של SaaS לעסקים הוא דליפת מידע בין ארגונים. כל שאילתה מסוננת לפי מזהה ארגון בשכבת גישה אחת או ב-Row-Level Security, ובדיקות רצות עם שני ארגונים. למשתמש יכול להיות תפקיד שונה בכל ארגון, ולכן החברות נשמרת בטבלה נפרדת (משתמש, ארגון, תפקיד).
הזמנה נושאת ארגון ותפקיד, פגה בזמן מוגדר, ורק המייל שהוזמן מקבל אותה. המסך הראשון של חבר חדש הוא חלק מאונבורדינג ושימור משתמשים באפליקציה, ותפקיד ברירת המחדל צריך לאפשר עבודה מהיום הראשון. הבדיקה רצה תמיד בשרת; הסתרת כפתור בממשק היא קוסמטיקה, כפי שמוסבר באבטחת אפליקציות מובייל.