SLAtech Vantage שומר את המידע של ארגונים רבים במסד נתונים אחד ומפריד ביניהם במסנן שמוחל על כל שאילתה. הכניסה היא בקוד חד-פעמי בלי סיסמאות, המפתחות של מערכות מחוברות מוצפנים, פרטים אישיים מוחלפים בתוויות לפני שטקסט נשלח למודל השפה, והמזמין קורא בעצמו את יומן הגישה לנתוני הפרויקט שלו. בהמשך כל מנגנון מתואר כפי שהוא בנוי בקוד, ולצידו מה הוא לא מכסה.
מי רואה מה: ארגונים, פרויקטים והשתתפויות
הנתונים של כל הארגונים נמצאים במסד נתונים אחד. את ההפרדה עושים מסנני שאילתה גלובליים: כל שאילתה לנתוני פרויקט מוגבלת לפרויקטים שהארגון של המשתמש משתתף בהם. המסנן מתורגם ל-SQL ורץ במסד הנתונים עצמו, ולא בזיכרון של האפליקציה.
- הגישה נגזרת מההשתתפות. ארגון משתתף בפרויקט כמזמין או כספק. אין שדה גישה שמישהו ממלא ידנית: אין השתתפות פעילה, אין נתונים. השתתפות שהסתיימה לא מוחקת דבר, אבל עוצרת את הגישה.
- בלי כניסה רואים ריק. בקשה בלי אימות מקבלת רשימת פרויקטים ריקה, ולא "הכול".
- ספק רואה את המשימות שלו. משימה גלויה לספק רק אם הארגון שלו משויך אליה. ספק חדש בפרויקט מקבל את הידע על הפרויקט, אבל לא את ההתכתבות ואת התעריפים של הספק הקודם.
- ההרשאות נבנות מחדש. רשימת הפרויקטים נשמרת בכרטיס הכניסה ונבנית מחדש מההשתתפויות מדי פעם, כברירת מחדל כל 30 דקות. לכן השתתפות שבוטלה לא מפסיקה לפעול באותה שנייה.
החשבונות של מפעיל הפלטפורמה, כלומר SLAtech, ותהליכי רקע (סנכרון, אינדוקס) לא מוגבלים במסנן: בלי זה אי אפשר לשייך נתונים נכנסים לפרויקטים או לטפל בתקלה. איך זה משתקף ביומן הגישה, כתוב בהמשך.
כניסה: קוד חד-פעמי במקום סיסמה
אין סיסמאות במערכת, ולכן אין מה לנחש, למחזר או לאבד בדליפה של מאגר אחר. מזינים כתובת דואר אלקטרוני, ואם קיים חשבון, נשלח אליה קוד בן 6 ספרות שתקף ל-10 דקות. לכתובת שאינה רשומה המסך עונה בדיוק אותו דבר, ושום הודעה לא נשלחת.
- במסד הנתונים נשמר גיבוב של הקוד, לא הקוד עצמו. הקוד חד-פעמי: אחרי הכניסה הוא מבוטל.
- לכל קוד יש 5 ניסיונות. ניסיון נספר בעדכון מותנה אחד עוד לפני ההשוואה, כך שבקשות מקבילות לא עוקפות את המגבלה.
- לכל כתובת: עד 5 קודים בשעה, ולא יותר מקוד אחד בכל 30 שניות.
- כתובת רשת שממנה נשלחו 10 בקשות קוד בלי שאף אחד מהם אומת נחסמת, עד שעוברת שעה מהבקשה האחרונה. קוד נכון מאפס את המונה, ולכן משרד שכולו יוצא לרשת מכתובת אחת לא נחסם.
- החיבור נשמר 7 ימים ומתארך כל עוד עובדים. גם טוקנים של הזמנות, כמו הקודים, נשמרים כגיבוב.
מונה כתובות הרשת נשמר בזיכרון התהליך ומתאפס כשהתהליך עולה מחדש. המגבלות לכל כתובת דואר לא תלויות בזה: הן נשמרות במסד הנתונים.
הרשאות בתוך הארגון, ומה נשאר פנימי
בעל הארגון נותן הרשאות לכל אדם בנפרד: כסף (תעריפים וסכומים, כבוי כברירת מחדל), דוחות ופתיחת משימות. בעל הארגון עצמו רואה כסף תמיד.
- מי שאין לו הרשאת כסף לא רואה סכומים במסכים וביומן הגישה: שורת האירוע נשארת, והערכים יורדים ממנה. בטקסט של מכתבים ובתשובות הצ'אט מוסתרים ממנו מספרים שלידם מופיע מטבע או מילה על מחיר.
- הערות פנימיות והפתרון הפנימי של משימה לא מוצגים למזמין, לא במסך ולא בתשובות הצ'אט. בשבילו נכתב תיאור נפרד של מה שנעשה.
- הפירוק הפנימי של שעות הספק לא מגיע לפורטל הלקוח, ל-PDF, ל-Excel ולדוח החודשי. בדיקה אוטומטית שומרת על זה: אם השדה יופיע בנתונים שהולכים למזמין, הבדיקה תיכשל לפני השחרור.
הסתרת הסכומים בטקסט נשענת על התבנית "מספר ליד מטבע או מילה על מחיר". משפט בלי מספר, כמו "לפי התעריף הרגיל", לא מוסתר.
מה נשלח למודל השפה ואיך הוא ממוסך
הצ'אט, החיפוש בפרויקט וחלק מהניתוחים עובדים עם מודל שפה חיצוני. לפני השליחה הטקסט עובר מיסוך: פרטים אישיים מוחלפים בתוויות, המודל רואה רק תוויות, והערכים האמיתיים חוזרים לתשובה רק אצלנו. המשתמש רואה את הנתונים האמיתיים, והתוויות קיימות רק בגבול שמול המודל.
- מה מוחלף: כתובות דואר אלקטרוני; מספרי טלפון ישראליים; מספרי תעודת זהות, ח.פ. ועוסק מורשה שעברו בדיקת ספרת ביקורת; מספרי דרכון שמופיעים ליד המילה דרכון; שמות של אנשים ממילון השמות ומכרטיסי אנשי הקשר של הפרויקט.
- סודות נמחקים בלי דרך חזרה. סיסמאות, מפתחות API, טוקנים ומחרוזות חיבור שכתובים בטקסט, גם בתוך כתובות של קישורים, מוחלפים בתווית שאי אפשר לפתוח, לא למודל ולא לנו.
- לכל פרויקט יש מאגר תוויות משלו. הערכים האמיתיים שמאחורי התוויות נשמרים מוצפנים. ההחזרה נעשית רק לפי המפה של הבקשה הנוכחית, ולכן אי אפשר לפתוח תווית שנלקחה מתשובה אחרת. מחרוזות שנראות כמו התוויות שלנו ונכתבות בצ'אט נמחקות לפני העיבוד.
- אינדקס החיפוש נבנה מטקסט ממוסך. לצורך האינדקס המודל מקבל את אותו טקסט עם התוויות.
- זיהוי טקסט בסריקות רץ על השרת שלנו, ולא בשירות חיצוני, כדי שסריקה של מסמך לא תצא החוצה רק בשביל הזיהוי.
המיסוך מופעל בכל מקום שבו הקוד פונה למודל. בדיקה אוטומטית עוברת על כל המקומות האלה ונכשלת אם אחד מהם לא ממסך את הטקסט וגם לא מופיע ברשימת החריגים עם סיבה כתובה. הבדיקה מוכיחה שלא שכחו את המיסוך, אבל לא שהוא תפס הכול.
מה המיסוך לא מכסה
המיסוך בנוי על תבניות ועל מילון, ויש לו מגבלות ידועות:
- שם שאינו במילון ולא בכרטיסי אנשי הקשר יכול להגיע למודל גלוי.
- שמות של עובדים וספקים פעילים מכרטיסי אנשי הקשר של הפרויקט לא ממוסכים כשהם כתובים במלואם או כשם פרטי בלבד: המודל צריך להבין מי עושה מה. שם משפחה לבדו כן ממוסך.
- אפיון שמעלים לקבלת הערכת שעות, והטקסט שממנו מורכב אפיון, נשלחים למודל כמו שהם, כולל התמונות. עדיף לא לשים פרטים אישיים במסמכים כאלה.
- כדי להעשיר את מילון השמות נשלחות למודל מילים בודדות בלי הטקסט שסביבן, והמודל קובע אם כל אחת מהן היא שם או מילה רגילה.
- ניתוח הקוד של משימה, במקום שבו הוא מופעל, קורא עותק של המאגר בהרשאות קריאה וחיפוש בלבד. הקוד עצמו לא עובר מיסוך, רק טקסט המשימה.
מפתחות של מערכות מחוברות, ומה אנחנו כותבים חזרה
כדי למשוך משימות, שעות, קוד ודואר, SLAtech Vantage צריך גישה למערכת שלכם: טוקן של Jira או של GitHub, מפתח API של Freshservice, הרשאה של Google או של Microsoft לקריאת תיבת דואר.
- המפתח מוצפן לפני שהוא נכתב למסד הנתונים. לכל סוג מפתח יש מפתח הצפנה משלו, כך שחשיפה של סוג אחד לא פותחת את האחרים. מפתחות ההצפנה נשמרים מחוץ למסד הנתונים.
- אחרי השמירה המפתח לא חוזר לממשק ולא נכתב ליומני השרת.
- המפתח שייך לאדם שחיבר אותו, ומפתח של מישהו אחר לא נלקח במקומו. כשמסירים חיבור, המפתח המוצפן נמחק איתו.
- הדואר מתחבר בהרשאת קריאה בלבד (gmail.readonly, Mail.Read). משימות, קוד, שגיאות ושעות רק נקראים.
חיבור אחד כותב למערכת החיצונית, Freshservice: שינוי סטטוס של קריאה ותשובה פומבית בה, כשהספק עושה זאת מכרטיס המשימה. SLAtech Vantage לא כותב דבר למאגר הקוד שלכם, ל-Jira או לכלי ניטור השגיאות.
יומן גישה: המזמין קורא אותו בפורטל שלו
בפורטל הלקוח יש פריט "יומן גישה". שם המזמין רואה מי, מאיזה ארגון ומתי נגע בנתוני הפרויקט שלו. נרשמים שני סוגי אירועים:
- שינויים: נוצר, שונה, נמחק. בשינוי נרשם אילו שדות השתנו ולמה. הרישום קורה מעצמו בזמן השמירה למסד הנתונים, ולא בקריאה מכל מסך, ולכן מסך חדש נכנס ליומן בלי עבודה נוספת.
- הוצאה החוצה: קובץ שהורד (אפיון והקבצים שלו, הצעה, קובץ מצורף של משימה, של מכתב או של שיחה, קובץ מבסיס הידע), דוח חודשי שיוצא, קישור ציבורי להצעה שנמסר.
סוגי הנתונים ביומן: משימות, רישומי שעות, חיובים קבועים, מחלקות, הפרויקט וההשתתפויות בו, הזמנות להצטרפות, אנשי קשר, מסנני דואר, שיחות, אפיונים, הצעות והשורות שלהן, הזמנות רכש, שגיאות ותחומי שגיאות, מאמרים בבסיס הידע. הרשימה סגורה: מה שאינו בה לא נרשם.
המגבלות. צפייה במסכים לא נרשמת. תהליכי רקע שאין מאחוריהם אדם לא נרשמים. יותר מ-20 פריטים מאותו סוג בשמירה אחת מתקפלים לשורה אחת עם מונה. עדכונים גורפים שעוקפים את השמירה הרגילה לא מגיעים ליומן. עובד של SLAtech שנכנס לפרויקט כמפעיל הפלטפורמה, ולא כספק של הפרויקט הזה, לא נרשם. הפורטל מציג את 200 הרשומות האחרונות. הרשומות נשמרות שבע שנים.
קבצים, תקופות שמירה ויומני שרת
- קבצים (קבצים מצורפים למכתבים, קבצים של משימות ושל אפיונים, בסיס הידע) נשמרים באחסון אובייקטים סגור, בלי כתובות ציבוריות. ההורדה עוברת דרך האפליקציה אחרי בדיקת הרשאה, והורדה של משתמש מחובר נרשמת ביומן הגישה.
- יומן הגישה נשמר שבע שנים: זו התקופה שבה עדיין אפשר להגיש בישראל תביעה על התחייבות. אפשר לשנות את התקופה בהגדרות.
- יומן הפעילות בפורטל (כניסות של המזמין, צפייה בדפים ובדוחות, ייצוא) נשמר 12 חודשים ומתנקה במשימה יומית.
- שאלות לצ'אט והתשובות להן נשמרות ביומן הצ'אט בלי מחיקה אוטומטית.
- יומני השרת מתחלפים לפי יום ולפי גודל, ונשמרים 20 הקבצים האחרונים. דיווחי תקלות נשלחים לשירות חיצוני לניטור שגיאות בלי כתובות דואר, בלי עוגיות ובלי גוף הבקשה, וסודות נמחקים מכתובת הבקשה.
- נתוני הפרויקט לא נמחקים אוטומטית אחרי תקופה. משימה שנמחקת בממשק עוברת לארכיון ולא נמחקת ממסד הנתונים.
חיבור, כותרות, ומה אין לנו
- האתר והאפליקציה עובדים רק ב-HTTPS: בקשה ב-HTTP מופנית מחדש, וכותרת HSTS לשנה לא מאפשרת לדפדפן לפתוח את האתר בלי הצפנה.
- התשובות כוללות
X-Content-Type-Options: nosniffו-Referrer-Policy: strict-origin-when-cross-origin, ואסור להטמיע את הדפים במסגרות של אתרים אחרים. - בדפים שנפתחים מקישור לאישור מסמך, מדיניות אבטחת התוכן (CSP) פעילה וחוסמת סקריפטים זרים. בשאר הדפים היא עדיין עובדת במצב דיווח: הפרות נאספות, אבל לא נחסמות.
SLAtech Vantage נבנה מתוך מחשבה על חוק הגנת הפרטיות בישראל, כולל תיקון 13: פחות מידע יוצא החוצה, הלקוחות מופרדים, ונרשם מה נעשה בנתונים. זו אינה הצהרה על עמידה בחוק.
אין לנו הסמכת ISO 27001, SOC 2 או הסמכה אחרת, והעמוד הזה לא טוען לכזו. גם מבדק חדירה חיצוני איננו טוענים כאן.
שאלות נפוצות
האם עובד של SLAtech יכול לראות את נתוני הפרויקט שלנו?
האם ארגון אחד יכול לראות נתונים של ארגון אחר?
אילו נתונים נשלחים למודל שפה חיצוני?
מה נרשם ביומן הגישה, ומה לא?
איך נשמרים המפתחות של Jira או GitHub שלנו?
האם ל-SLAtech Vantage יש הסמכת ISO 27001 או SOC 2?
רוצים לבדוק את כל זה על הנתונים שלכם? אפשר להתחיל בתקופת ניסיון בלי כרטיס אשראי.
התחילו ניסיון חינם