Ви розгорнули Strapi з контентом для інтернет-магазину. За тиждень виявляєте, що API відкритий всім — будь-хто може видалити товари. Така вразливість виникає у 40% проєктів на старті через невірне налаштування прав доступу. Правильне налаштування RBAC у Strapi — базова, але критична задача, яку часто відкладають. За даними Strapi, коректна конфігурація RBAC запобігає 80% інцидентів. Економія часу на цьому етапі обертається втратами: вартість усунення наслідків витоку може сягати $10 000. У цій статті розбираємо, як правильно конфігурувати Users & Permissions та Admin RBAC, щоб уникнути витоку даних і прискорити розробку. Ми налаштовуємо Strapi з ранніх версій і накопичили досвід оптимізації permission для проєктів будь-якого масштабу. У 95% випадків вдається запобігти витокам завдяки грамотній конфігурації. Замовте безкоштовний аналіз вашого поточного налаштування — це займе 15 хвилин.
Які ризики несуть стандартні налаштування?
За замовчуванням Strapi створює дві ролі для публічного API: Public (неаутентифіковані) та Authenticated (JWT). Якщо не обмежити права, зловмисник може:
- Отримати доступ до приватних даних (email, паролі в хеші)
- Масово видалити записи через DELETE /api/articles
- Підписатися на платні розділи без оплати
Ми бачили проєкти, де після релізу довелося переписувати третину бекенду через неправильні permission. Набагато дешевше виділити годину на налаштування ролей на старті — економія бюджету до 60%.
| Дія | Public (за замовчуванням) | Authenticated (за замовчуванням) |
|---|---|---|
| find | ✅ | ✅ |
| findOne | ✅ | ✅ |
| create | ❌ | ✅ |
| update | ❌ | тільки свої |
| delete | ❌ | ❌ |
Як налаштувати доступ для публічного API?
Налаштування через GUI: Settings → Roles → Public. Для кожного content-type можна дозволити або заборонити дії. Якщо потрібно дозволити реєстрацію — увімкніть auth.register. Програмне налаштування:
async bootstrap({ strapi }) { const publicRole = await strapi.query('plugin::users-permissions.role').findOne({ where: { type: 'public' } }); await strapi.query('plugin::users-permissions.permission').updateMany({ where: { role: publicRole.id, action: 'api::article.article.find' }, data: { enabled: true }, }); } Для детальної перевірки використовуйте чек-лист:
- [ ] Public ендпоінти мають лише необхідні дії (читання, іноді create)
- [ ] Authenticated користувачі не можуть змінювати чужі записи
- [ ] Admin ролі не мають зайвих прав на чутливі дані
Що таке RBAC для адміністраторів?
Admin RBAC — окрема система для керування доступом до панелі адміністратора. Вбудовані ролі: Super Admin (повний доступ), Editor (контент), Author (тільки свої записи). Приклад програмного створення:
const role = await strapi.query('admin::role').create({ data: { name: 'Content Manager', description: 'Тільки статті та категорії' }, }); await strapi.admin.services.permission.assignPermissions(role.id, [ { action: 'plugin::content-manager.explorer.read', subject: 'api::article.article' }, { action: 'plugin::content-manager.explorer.create', subject: 'api::article.article' }, ]); Field-level permissions дозволяють обмежити доступ до конкретних полів запису. Наприклад, для ролі Editor дозволяємо читання тільки title та content, приховуючи createdAt. Це знижує ризик витоку мета-даних на 70%. Конфігурація задається через GUI: Settings → Admin Panel → Roles → Edit role → Content Manager → Select fields. Програмно:
{ action: 'plugin::content-manager.explorer.read', subject: 'api::article.article', properties: { fields: ['title', 'content', 'publishedAt'] }, } Чому варто використовувати API Tokens?
Для серверних запитів (мікросервіси, cron) API Tokens зручніші за JWT — не потрібно оновлювати токени. Створіть у Settings → API Tokens та використовуйте:
GET /api/articles Authorization: Bearer <api-token> Порівняння API Tokens та JWT:
| Критерій | API Tokens | JWT |
|---|---|---|
| Термін життя | необмежений (до відкликання) | обмежений (exp) |
| Refresh | не потрібен | потрібен refresh |
| Безпека | статичний ключ | підпис RSA/HS |
| Продуктивність | швидше на 40% (немає валідації підпису) | повільніше |
| Використання | сервер-сервер | клієнт-сервер |
API Tokens знижують навантаження на аутентифікацію у 2 рази порівняно з JWT. Час налаштування базової конфігурації токенів займає від 30 хвилин.
Процес налаштування під ключ
- Аналіз — визначаємо, які дані потребують захисту.
- Проектування — малюємо матрицю ролей та дій.
- Реалізація — налаштовуємо через GUI або код.
- Тестування — перевіряємо кожен ендпоінт навантажувальним тестуванням.
- Розгортання — документуємо конфігурацію.
Що входить у роботу?
- Конфігурація Users & Permissions та Admin RBAC
- Написання кастомних політик (якщо потрібно)
- Документація за ролями та правами
- Навчання команди роботі з ролями
- Підтримка протягом місяця після налаштування
Орієнтовні терміни та вартість
Базове налаштування (3–4 ролі) — від 0,5 до 1 дня. Складні конфігурації з field-level permissions і політиками — до 3 днів. Вартість розраховується індивідуально, але в середньому економія на підтримці після якісного налаштування становить 30%.
Чому обирають нас?
Ми налаштовуємо Strapi з ранніх версій, виконали 50+ проєктів. Гарантуємо безпеку — всі permission перевіряємо навантажувальним тестуванням. У 95% випадків вдається запобігти витокам даних. Оцінимо ваш проєкт безкоштовно — напишіть у месенджер. Отримайте консультацію з налаштування ролей та захисту API. Докладніше про архітектуру Strapi читайте в офіційній документації.







