רשומות למידה
RODMENA LRS
זמין לפי בקשהמאגר הראיות ללמידה, המתעד מה קרה פעם אחת ושומר זאת במדויק.
RODMENA LRS הוא מאגר רשומות למידה (Learning Record Store). הוא מקבל רשומות של פעילות למידה בפורמט xAPI, שומר אותן ללא שינוי ומחזיר אותן באמצעות ממשק השאילתות הסטנדרטי של xAPI. הוא עובר את כל הבדיקות ב-ADL LRS Conformance Test Suite עבור xAPI 1.0.3 ועבור xAPI 2.0. מסד הנתונים עצמו שומר על הפרדה בין רשומות של לקוחות שונים. תוכן הרשומות מוצפן במנוחה (at rest). מזהי לומדים נשמרים אך ורק בצורה פסאודונימית עם מפתח (keyed). לא ניתן לשנות רשומות שמורות, אם כי ניתן למחוק נתונים אישיים של לומד על פי בקשה, והמחיקות נרשמות ביומן עם יכולת זיהוי שיבושים (tamper-evident).
למי זה מיועד. פלטפורמות למידה וספקי הדרכה הזקוקים למאגר תואם-תקן עבור רשומות פעילות לומדים. זהו שירות צד-שרת (back-end) שעליו נבנים מוצרים ושאליו הם קוראים מהשרתים שלהם, ולומדים ודפדפנים אינם מתקשרים איתו ישירות. REES הוא הצרכן הראשון שלו.
- סטטוס
- זמין לפי בקשה
- חלק מ
- היצע
- רישיון
- קנייני. זכויות יוצרים RODMENA LIMITED, כל הזכויות שמורות.
- תאימות
- 1,365 בדיקות תאימות xAPI 1.0.3, כולן עברו
- 1,435 בדיקות תאימות xAPI 2.0, כולן עברו
- אומת ב-23 בספטמבר 2026
- תגיות
- xAPIרשומות למידהתאימותמרובה לקוחות (multi-tenant)הגנת נתוניםיומן ביקורת
מפרט טכני
נכתב עבור מעריך טכני. שורה ללא ערך שנמדד מושמטת.
תקנים
- xAPI 1.0.3
- ADL Experience API Specification, גרסה 1.0.3
- xAPI 2.0
- IEEE 9274.1.1-2023
- בחירת גרסה
- לפי בקשה, באמצעות כותרת ה-X-Experience-API-Version. הגרסאות 1.0.x ו-2.0.x מתקבלות, וגרסה חסרה או לא מוכרת נדחית עם קוד 400.
- חבילת בדיקות תאימות
- ADL LRS Conformance Test Suite, הרצה אחרונה 23 בספטמבר 2026
- תוצאת תאימות
- xAPI 1.0.3: 1,365 מתוך 1,365. xAPI 2.0: 1,435 מתוך 1,435.
- מעבר לחבילת הבדיקות
- במקרים שבהם חבילת הבדיקות (suite) מציינת שהיא אינה בודקת דרישה מסוימת, בדיקה ייעודית מכסה אותה. מצאנו גם שש בדיקות בחבילה שאינן מבצעות שום בדיקת נאותות (assert) וכיסינו אותן בנפרד.
- מעצם התכנון
- OAuth 1.0 נחשב מיושן (deprecated) ואינו מתקבל. מוצרים שנבנו על גבי השירות קוראים לו בתצורת שרת לשרת (server-to-server). הוא אינו מקבל קריאות חוצות-מקור (cross-origin) מדפדפן.
ממשק
- משאבים
- רשומת statement, State, Activity גרסת הדרישות (Profile), Agent גרסת הדרישות (Profile), Activities, Agents ו-About. כל נתיבי ה-GET עונים גם ל-HEAD.
- אימות
- HTTP Basic באמצעות אישורי גישה שהשירות מנפיק. מפתחות סודיים (secrets) הם באורך 256 סיביות ונשמרים אך ורק כמאמת עם מפתח (keyed verifier). אישורי גישה לא מוכרים, מושבתים או שפג תוקפם מקבלים תגובות 401 זהות ברמת הבייט.
- Alternate Request Syntax
- נתמך תחת 1.0.3 ונדחה תחת 2.0, כפי שמחייב מפרט זה.
- רשומות statement חתומות
- JWS עם RS256, RS384 ו-RS512, מאומת כאשר תעודה כלולה.
- קבצים מצורפים
- multipart/mixed, מותאם לפי גיבוב SHA-2. 5 MiB לכל קובץ מצורף ו-1 MiB לכל גוף של רשומת statement, ושניהם ניתנים להגדרה.
- עימוד
- סמנים (cursors) חתומים ללא שמירת מצב (stateless) שנשארים תקפים גם לאחר הפעלה מחדש. כל תגובות רשומות statement כוללות את כותרת העקביות של xAPI.
- אידמפוטנטיות
- שליחה חוזרת של רשומה עם מזהה statement זהה מתקבלת ללא כפילות. רשומה סותרת נדחית עם 409.
- הגבלת קצב
- לכל אישור גישה, בתוספת תקציב נפרד לכל כתובת לקוח עבור כשלים באימות.
בידוד ואבטחה
- בידוד לקוחות (tenants)
- אבטחה ברמת השורה של PostgreSQL, מופעלת ונאכפת בכפייה על כל טבלה המחזיקה נתוני לקוחות (tenants). תפקיד מסד הנתונים של היישום אינו הבעלים של אף אובייקט ואינו יכול לעקוף אותה. כל טרנזקציה מזהה את הלקוח שלה מתוך אישור הגישה המאומת בלבד.
- בידוד, נאכף
- בדיקת קטלוג מכשילה את הבנייה אם טבלת לקוחות כלשהי, או מחיצה כלשהי שנוצרה בזמן ריצה, חסרה את המדיניות.
- הצפנה במנוחה
- AES-256-GCM על גופי רשומות ה-statement, מסמכים, קבצים מצורפים, הגדרות פעילות וזהויות אישורי גישה, תחת מפתח לכל רשומה הנגזר באמצעות HKDF-SHA256.
- קישור טקסט מוצפן
- טקסט מוצפן נקשר לזהות השורה שלו ולא יפוענח אם יועבר לשורה אחרת.
- משמורת מפתחות
- שלושה מפתחות המוחזקים מחוץ למסד הנתונים, בקבצי מפתח בהרשאות 0600 או בסביבה. אין מפתח ברירת מחדל, והשירות מסרב לעלות בלעדיהם.
- החלפת מפתחות (rotation)
- מפתח האינדקס מוחלף באמצעות החלפת מפתח (rekey) שאינה מקוונת וניתנת לחידוש, והחלפת מפתח אישורי הגישה מנפיקה מחדש אישורי גישה. מאחר שרשומות שומרות את המזהה של המפתח שכתב אותן, החלפת מפתח אינה דורשת הגירת נתונים.
- מזהי לומדים
- נשמרים אך ורק כאסימוני HMAC-SHA256 תחת מפתח ייעודי לכל לקוח (tenant), ולומד אחד אצל שני לקוחות (tenants) מניב שני אסימונים בלתי קשורים. שום עמודה אינה מחזיקה את זהות הלומד בטקסט גלוי.
- היקפי אישורי גישה
- קבוצת הטווחים (scopes) של xAPI הכוללת statements/write, statements/read, statements/read/mine, state, profile, all/read ו-all. הטווח הצר ביותר קורא אך ורק את רשומת ה-statement שאותו אישור גישה עצמו כתב.
- אי-ניתנות לשינוי
- טריגרים במסד הנתונים שומרים על רשומות statement וקבצים מצורפים במצב של הוספה בלבד (append-only) על ידי דחיית פעולות UPDATE, DELETE ו-TRUNCATE. השינויים המותרים היחידים הם סימון ביטול (voiding flag) ומחיקה (erasure).
- תעבורת מסד נתונים
- TLS עם אימות מלא של תעודות ושמות מארח (hostname) הוא חובה, והשירות מסרב לפעול בלעדיו.
- אירועי ביקורת לכל בקשה
- אירוע מובנה אחד לכל בקשה, הכולל מזהה בקשה, מזהה המפתח של אישור הגישה, לקוח (tenant), מתודת HTTP, משאב, סטטוס, מספר רשומות, משך ושמות מסננים. ערכי לומדים במסננים עוברים טוקניזציה לפני שהם נרשמים ביומן.
- זיהוי שיבוש (tamper evidence)
- יומן המחיקות מקושר בשרשרת גיבוב (hash-chained), ופקודה אחת מאמתת את השרשרת כולה מהחוליה הראשונה ועד לאחרונה.
הגנת נתונים
- מחיקה
- השחרה עם פסאודונימיזציה. הלומד מוחלף בכינוי אקראי בכל מיקום שבו רשומת statement יכולה לציין את שמו, תשובות טקסט חופשי וקבצים מצורפים מוסרים, ומסמכי ה-State וה-Agent Profile שלו נמחקים. לא נעשה שימוש במחיקה פיזית.
- מחיקה, מתועדת
- מחיקות נרשמות ביומן בשרשור גיבוב (hash-chained log). מאחר שהפקודה מסרבת למחיקה שאינה תואמת לשום דבר, לומד שהוקלד שגוי אינו יכול להיחשב כמחיקה שהושלמה.
- גיבויים
- מחיקה נחשבת שלמה רק לאחר שפג תוקפם של הגיבויים שנוצרו לפניה. לאחר שחזור, יומן המחיקות מורץ מחדש.
- שימור
- לפי חודש קלנדרי, לכל מופע. החודש מנותק, מיוצא כקובץ אחד לכל לקוח (tenant), ומוסר. ההסרה נדחית אלא אם מספר השורות שיוצאו תואם.
- שימור, לפי לקוח
- לקוח שזקוק לתקופת שימור משלו זקוק למופע משלו.
- ייצוא בעת יציאה
- באמצעות ממשק ה-xAPI הסטנדרטי, לקוח יכול לעבור בין כל הרשומות שלו והקבצים המצורפים שלהן כ-xAPI JSON ולקחת את הכול.
- מיקום נתונים
- מופע פועל באזור שחוזה מחייב. השירות זקוק רק למסד נתונים PostgreSQL.
תפעול ואימות
- מודל פריסה
- מופע משותף מרובה לקוחות (multi-tenant), או מופע ייעודי לכל לקוח.
- בדיקות מוכיחות שהן יכולות להיכשל
- ה-harness לא יחשיב מעבר (pass) מאף אחת מ-47 בדיקות ההתנהגות (probes) עד שיוכח כי אותה בדיקה נכשלה (FAIL) מול build שבור בכוונה. אנו מריצים גם את ה-conformance suite מול builds שבורים.
מה זה עושה
-
נבדק לתאימות
עובר את כל 1,365 הבדיקות של ADL LRS Conformance Test Suite עבור xAPI 1.0.3, ואת כל 1,435 עבור xAPI 2.0.
-
רשומות אינן משתנות
לאחר שנשמרה, לא ניתן לערוך או לדרוס רשומת statement, אלא רק לבטל אותה (void), כפי שהתקן מגדיר.
-
מבודד מעצם התכנון
רשומות הלקוחות מופרדות זו מזו באמצעות כללים שמסד הנתונים אוכף, בנוסף לקוד האפליקציה.
-
מוצפן ופסאודונימי
תוכן הרשומות מוצפן במנוחה, ומזהי הלומדים נכללים באינדקס רק כאסימונים עם מפתח.
-
מחיקה עם יומן ביקורת
על פי בקשה, הנתונים האישיים של לומד מוסרים מהרשומות שלו, והמחיקה נרשמת ביומן משורשר-גיבוב (hash-chained) המאפשר זיהוי שיבושים (tamper-evident).
-
אישורי גישה מוגבלי היקף
אישור גישה מוגבל לפעולות הנדרשות לו בלבד, עד כדי קריאת הרשומות שהוא עצמו כתב בלבד.
לתיעוד, לפיילוט או לאינטגרציה, צרו קשר.