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

Почему стандартные роли Directus не подходят?

Разработка и обслуживание любых видов сайтов:

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

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

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

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    982
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1241
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Почему стандартные роли Directus не подходят?

При интеграции Directus с редакционным порталом на 50 пользователей (10 редакторов, 5 авторов, 2 администратора) мы зафиксировали 3 случая потери данных за первую неделю: авторы случайно удаляли черновики коллег, а публичный API отдавал неопубликованные статьи. Стандартные роли Administrator и Public не покрывали наш кейс. Как отмечает документация Directus, гибкость системы позволяет настраивать права на любом уровне — от поля до записи. Прямое сравнение со Strapi показывает, что настройка гранулярных разрешений в Directus занимает в 3 раза меньше времени, а грамотная конфигурация снижает затраты на поддержку на 25–40%. Для клиентов с похожей архитектурой экономия бюджета достигает 30-40% ежегодных затрат. В этой статье разберём полный цикл настройки — от 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 дней. Для сложных проектов с десятками коллекций — до 5 дней. Стоимость рассчитывается индивидуально. Наша команда имеет опыт работы с Directus более 5 лет, реализовано 30+ проектов. Закажите аудит текущей конфигурации прав доступа или свяжитесь с нами для консультации — поможем настроить оптимальную ролевую модель.