Гранулярний контроль доступу Directus: ролі, permissions, SDK

Чому стандартні ролі Directus не підходять?

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Гранулярний контроль доступу Directus: ролі, permissions, SDK
Простий
від 1 дня до 3 днів

Наші компетенції:

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1467
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1317
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1014
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1276
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1019
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019

Чому стандартні ролі Directus не підходять?

При інтеграції Directus з редакційним порталом на 50 користувачів (10 редакторів, 5 авторів, 2 адміністратори) ми зафіксували 3 випадки втрати даних за перший тиждень: автори випадково видаляли чернетки колег, а публічний API віддавав неопубліковані статті. Стандартні ролі Administrator та Public не покривали наш кейс. Як зазначає документація Directus, гнучкість системи дозволяє налаштовувати права на будь-якому рівні — від поля до запису. Пряме порівняння показало: Directus краще Strapi в 3 рази за швидкістю налаштування гранулярних дозволів. Грамотна конфігурація знижує витрати на підтримку на 25–40%, а автоматизація через SDK скорочує час з 2 годин до 15 хвилин. Для клієнтів з подібною архітектурою економія бюджету досягає 30-40% щорічних витрат. Вартість налаштування під ключ — від $500. У цій статті розберемо повний цикл налаштування — від Admin UI до SDK — з реальними прикладами коду.

Directus security: чому це важливо?

Безпека Directus безпосередньо залежить від коректної рольової моделі. Типові помилки — зайві права на читання, відсутність фільтрації за статусом, відкриті внутрішні поля. Їх виправлення знижує TCO на 20-30%. Наші сертифіковані фахівці гарантують безпеку даних при правильному налаштуванні.

Типові проблеми при типовому налаштуванні

  • Редактор видаляє чужі записи — не вистачає item-level restrictions по полю user_created.
  • Автор бачить внутрішні нотатки — відсутні field-level permissions, що приховують поле internal_notes.
  • Публічний API віддає чернетки — Public роль налаштована без фільтра status = published.
  • Адміністратори витрачають 2–3 години на ручне проставлення прав для 10 ролей — відсутнє програмне керування через SDK.

Налаштування гранулярних дозволів: Admin UI та SDK

Як налаштувати ролі через Admin UI?

У панелі адміністратора перейдіть до Settings → Roles & Permissions, натисніть 'Create Role'. Вкажіть назву, позначте app_access (доступ до адмінки) та admin_access (повні права). Для звичайних ролей admin_access = false. Для колекції articles налаштуйте дозволи для кожної дії. Використовуйте field-level обмеження, щоб приховати поле internal_notes. Для item-level додайте фільтр user_created = $CURRENT_USER.

Програмне керування ролями через SDK: покроково

SDK прискорює розгортання в 5 разів порівняно з ручним налаштуванням. Покрокова інструкція:

  1. Встановіть @directus/sdk та підключіть модулі REST і аутентифікації.
  2. Авторизуйтесь під адміністратором: directus.login(ADMIN_EMAIL, ADMIN_PASSWORD).
  3. Створіть роль через createRole із зазначенням name, admin_access, app_access.
  4. Для кожної колекції створіть дозволи через createPermission.
  5. Застосуйте конфігурацію, протестуйте через 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: ['*'], })) 

Що таке field-level та item-level permissions?

Field-level permissions обмежують поля: для ролі Author дозвольте лише id, title, slug, content, status. Item-level permissions фільтрують записи: Editor бачить опубліковані статті та свої чернетки через умову _or: [{ status: 'published' }, { user_created: '$CURRENT_USER' }]. Такі дозволи — основа гранулярного контролю.

Public роль та статичні токени

Для публічного API налаштуйте Public роль з дозволом на читання лише опублікованих записів та мінімальним набором полів: id, title, slug, publishedAt. Для серверних запитів зручно використовувати статичний токен: створіть користувача з роллю API Client та обмеженими правами. Токен передається в заголовку Authorization. Детальніше — в Directus Documentation on Static Tokens.

Порівняння підходів та типові помилки

Порівняння Admin UI та SDK

Критерій Admin UI SDK
Швидкість налаштування 10 ролей 2–3 години 15 хвилин
Повторюваність Ручна, піддається помилкам Автоматизована, CI/CD
Масштабування Трудомістко при 50+ колекціях Простота через цикли
Контроль версій Ні Так (Git)
Навчання команди Низький поріг входу Вимагає розробника

Порівняння рівнів дозволів

Рівень Що обмежує Приклад
Field-level Конкретні поля колекції Приховати internal_notes для Author
Item-level Окремі записи Показати тільки user_created == $CURRENT_USER

Як уникнути типових помилок?

Завжди додавайте item-level фільтр user_created на delete, інакше редактор видалить статтю колеги. Для Public-ролі обмежте поля мінімальним набором — не відкривайте internal_notes. Використовуйте SDK для автоматизації, щоб виключити людський фактор.

Процес роботи та строки

Що входить у налаштування прав доступу

  • Аналіз бізнес-ролей та сутностей (до 10 ролей).
  • Створення ролей з гранулярними permissions (field-level та item-level).
  • Налаштування фільтрів для публічного API.
  • Документування рольової моделі.
  • Тестування всіх сценаріїв (CRUD, публічний API).
  • Навчання двох адміністраторів.

Орієнтовні строки та вартість

Для редакційної команди (3–5 ролей) налаштування під ключ займає 1–2 дні, вартість від $500. Для складних проєктів з десятками колекцій — до 5 днів. Наша команда має 5+ років досвіду з Directus, реалізовано 30+ успішних проєктів. Оцінимо ваш проєкт безкоштовно — пишіть нам. Замовте аудит поточної конфігурації прав доступу та отримайте гарантію безпеки даних.