Що таке безпека на рівні рядків?
Безпека на рівні рядків (RLS) — це можливість бази даних, яка визначає для кожного рядка, які записи кожен користувач може читати або змінювати, тож клієнт бачить лише свої замовлення, навіть якщо застосунок запитує більше.
Без неї правило «користувачі бачать лише свої дані» живе в коді застосунку. Якщо якийсь екран або API забуде перевірити, приватні дані можуть витекти.
З безпекою на рівні рядків правило живе в самій базі даних. Ви пишете політику на кшталт «рядок у замовленнях видно лише тоді, коли його customer_id збігається з авторизованим користувачем», і база застосовує її до кожного запиту.
Postgres підтримує безпеку на рівні рядків, і деякі серверні сервіси покладаються на неї значною мірою, бо їхні застосунки звертаються до бази даних напряму з браузера. У таких налаштуваннях таблиця без політики може бути доступна для читання будь-кому.
RLS — це один шар захисту, а не єдиний. Застосункам все одно потрібні правильний вхід, перевірки на сервері й акуратна робота з адміністративним доступом.
Приклади
- Клієнти в порталі бачать лише свої документи
- Кожна команда в інструменті бачить лише свої проєкти
Запитання
Чи потрібна мені безпека на рівні рядків?
Якщо ваш застосунок зберігає приватні дані для багатьох користувачів і якась його частина запитує базу даних напряму з браузера, то так. Якщо весь доступ іде через бекенд, який перевіряє права, RLS є додатковою страховою сіткою.
Чи те саме, що ролі?
Ні. Ролі описують, яким типом користувача є людина, наприклад адміністратор або учасник. Безпека на рівні рядків використовує такі факти, як ідентифікатор користувача або роль, щоб вирішити, до яких конкретних рядків він має доступ.
Дивіться також
Mythex · Pricing · Створюйте що завгодно з ШІ · Шаблони сайтів і застосунків · Порівняння Mythex · Глосарій створення застосунків за допомогою ШІ · Безкоштовні інструменти для створення застосунків за допомогою ШІ · English