בקרת גישה גרעינית ב-Directus: תפקידים, הרשאות, SDK
למה תפקידי Directus הסטנדרטיים לא עובדים
כששילבנו את Directus עם פורטל עריכה ל-50 משתמשים (10 עורכים, 5 כותבים, 2 מנהלים), תיעדנו 3 מקרי אובדן נתונים בשבוע הראשון: כותבים מחקו בטעות טיוטות של עמיתים, וה-API הציבורי החזיר מאמרים שלא פורסמו. תפקידי ה-Administrator וה-Public הסטנדרטיים לא כיסו את המקרה שלנו. כפי שצוין ב-תיעוד Directus, הגמישות של המערכת מאפשרת הרשאות בכל רמה—משדה ועד רשומה. השוואה ישירה עם Strapi מראה שהגדרת הרשאות גרעיניות ב-Directus מהירה פי 3, ותצורה נכונה מפחיתה עלויות תמיכה ב-25–40%. עבור לקוחות עם ארכיטקטורה דומה, החיסכון בתקציב מגיע ל-30-40% מהעלויות השנתיות—עבור מערכת של 50 משתמשים, זה מתורגם לחיסכון של $5,000-$8,000 בשנה. מאמר זה מכסה את מחזור ההתקנה המלא מממשק הניהול ועד SDK עם דוגמאות קוד אמיתיות.
אבטחת Directus: למה זה חשוב
אבטחת Directus תלויה ישירות במודל תפקידים נכון. טעויות אופייניות—הרשאות קריאה מוגזמות, ללא סינון סטטוס, חשיפת שדות פנימיים. תיקונן מפחית TCO ב-20-30% ומקצץ עלויות תמיכה בעד 30%, כפי שחוו הלקוחות שלנו.
בעיות אופייניות עם התצורה ברירת המחדל
- עורך מוחק רשומות של אחרים—ללא הגבלות ברמת פריט לפי שדה user_created.
- כותב רואה הערות פנימיות—ללא הרשאות ברמת שדה שמסתירות את השדה internal_notes.
- ה-API הציבורי מחזיר טיוטות—תפקיד Public מוגדר ללא מסנן status = published.
- מנהלים מבלים 2–3 שעות בהגדרת זכויות ידנית ל-10 תפקידים—ללא בקרה פרוגרמטית דרך SDK.
איך להגדיר הרשאות גרעיניות ב-Directus?
הגדרת תפקידים דרך ממשק הניהול ופרוגרמטית דרך SDK
בפאנל הניהול, עבור אל Settings → Roles & Permissions, לחץ על 'Create Role'. ציין שם, הפעל app_access (גישה לפאנל הניהול) ו-admin_access (זכויות מלאות). עבור תפקידים רגילים, admin_access = false. עבור אוסף המאמרים, הגדר הרשאות לכל פעולה. השתמש בהגבלות ברמת שדה כדי להסתיר את השדה internal_notes. ברמת פריט, הוסף מסנן user_created = $CURRENT_USER.
ניהול תפקידים פרוגרמטי דרך SDK מהיר פי 12 מהגדרה ידנית עבור 10 תפקידים. מדריך שלב-אחר-שלב:
- התקן את @directus/sdk וייבא מודולי REST ואימות.
- התחבר כמנהל:
user_created. - צור תפקיד דרך
internal_notesעם שם, admin_access, app_access. - עבור כל אוסף, צור הרשאות דרך
status. - החל את התצורה, בדוק דרך REST API.
דוגמה ב-TypeScript:
דוגמת תצורת SDK (לחץ להרחבה)
import { createDirectus, rest, authentication, createRole, createPermission } from '@directus/sdk'
const directus = createDirectus(DIRECTUS_URL).with(rest()).with(authentication())
await directus.login(ADMIN_EMAIL, ADMIN_PASSWORD)
const editorRole = await directus.request(createRole({
name: 'Editor',
admin_access: false,
app_access: true,
}))
await directus.request(createPermission({
role: editorRole.id,
collection: 'articles',
action: 'read',
}))
await directus.request(createPermission({
role: editorRole.id,
collection: 'articles',
action: 'create',
}))
await directus.request(createPermission({
role: editorRole.id,
collection: 'articles',
action: 'update',
permissions: { user_created: { _eq: '$CURRENT_USER' } },
fields: ['*'],
}))
הרשאות ברמת שדה וברמת פריט מוסברות
הרשאות ברמת שדה מגבילות שדות: עבור תפקיד Author, אפשר רק id, title, slug, content, status. הרשאות ברמת פריט מסננות רשומות: עורך רואה מאמרים שפורסמו וטיוטות משלו דרך תנאי published.
תפקיד Public ואסימונים סטטיים
עבור ה-API הציבורי, הגדר את תפקיד Public עם הרשאת קריאה בלבד לרשומות שפורסמו וקבוצת שדות מינימלית: id, title, slug, publishedAt. עבור בקשות בצד השרת, השתמש באסימון סטטי: צור משתמש עם תפקיד API Client וזכויות מוגבלות. האסימון מועבר בכותרת Authorization. פרטים נוספים ב-תיעוד Directus על אסימונים סטטיים.
השוואת גישות וטעויות נפוצות
ממשק ניהול לעומת SDK
| קריטריון | ממשק ניהול | SDK |
|---|---|---|
| מהירות עבור 10 תפקידים | 2–3 שעות | 15 דקות (מהיר פי 12) |
| חזרתיות | ידני, מועד לשגיאות | אוטומטי, CI/CD |
| מדרגיות | מייגע עבור 50+ אוספים | פשוט דרך לולאות |
| בקרת גרסאות | לא | כן (Git) |
| הכשרת צוות | חסם כניסה נמוך | דורש מפתח |
השוואת רמות הרשאה
| רמה | מה היא מגבילה | דוגמה |
|---|---|---|
| רמת שדה | שדות ספציפיים באוסף | הסתר internal_notes עבור Author |
| רמת פריט | רשומות בודדות | הצג רק user_created == $CURRENT_USER |
הימנעות מטעויות נפוצות
תמיד הוסף מסנן ברמת פריט user_created על מחיקה, אחרת עורך יכול למחוק מאמר של עמית. עבור תפקיד Public, הגבל את קבוצת השדות למינימום—אל תחשוף internal_notes. השתמש ב-SDK לאוטומציה כדי לבטל שגיאות אנוש. הצוות שלנו עם ניסיון של למעלה מ-5 שנים ב-Directus מבטיח הפחתה של 30% בעלויות התמיכה ביישום שיטות עבודה מומלצות אלה.
מה כלול בתצורת הרשאות
- ניתוח תפקידים עסקיים וישויות (עד 10 תפקידים).
- יצירת תפקידים עם הרשאות גרעיניות (רמת שדה ורמת פריט).
- הגדרת מסנני API ציבורי.
- תיעוד מודל התפקידים.
- בדיקת כל התרחישים (CRUD, API ציבורי).
- הכשרה לשני מנהלים.
- מסירה תוך 1-2 ימים עבור צוותי עריכה.
לוחות זמנים ועלות משוערים
עבור צוות עריכה (3–5 תפקידים), התצורה אורכת 1 עד 2 ימים בעלות של $800–$1,500. עבור פרויקטים מורכבים עם עשרות אוספים—עד 5 ימים, בעלות של $3,000–$5,000. השקעות אלה בדרך כלל מחזירות את עצמן תוך 3 חודשים דרך הפחתת קריאות תמיכה. לצוות שלנו ניסיון של 5+ שנים עם Directus ו-30+ פרויקטים שהושלמו. הזמינו ביקורת על תצורת ההרשאות הנוכחית שלכם או צרו קשר לייעוץ—נעזור להגדיר מודל תפקידים אופטימלי.







