Политики защиты строк
В современных базах данных безопасность информации является критически важным аспектом. PostgreSQL предлагает мощный механизм Row-Level Security (RLS), который позволяет администраторам гибко управлять доступом к данным на уровне отдельных строк таблицы.
Политики защиты строк (RLS) — механизм ограничения доступа к строкам таблицы на уровне запросов.
Цели:
-
Обеспечить безопасность данных без изменения приложения
-
Реализовать многопользовательские системы с разделением данных
-
Соответствовать требованиям GDPR, HIPAA и другим стандартам
Когда использовать:
-
Мультитенантные системы
-
Персональные данные пользователей
-
Системы с вертикальным разделением прав
Активация RLS
Создаем таблицу:Типы политик
| Тип политики | Описание | Команда |
|---|---|---|
| SELECT | Чтение | CREATE POLICY select_policy ON documents FOR SELECT... |
| INSERT | Вставка | CREATE POLICY insert_policy ON documents FOR INSERT... |
| UPDATE | Обновление | CREATE POLICY update_policy ON documents FOR UPDATE... |
| DELETE | Удаление | CREATE POLICY delete_policy ON documents FOR DELETE... |
| ALL | Все операции | CREATE POLICY all_policy ON documents FOR ALL... |
Примеры политик
Политика 1: Доступ только владельцу
Политика 2: Публичные документы
Политика 3: Только свои документы + админы
Особые случаи
-
Обход политик:
BYPASSRLSатрибут для суперпользователей -
Изменение политик:
ALTER POLICY... -
Удаление:
DROP POLICY policy_name ON table_name
Практические примеры
Задание 1: Базовая реализация
Создайте таблицу сообщений:
Включите RLS и создайте политики:
Задание 2: Сложный сценарий
Создайте политику для HR-отдела:
Проверьте доступ с разных ролей
Задание 3: Аудит политик
Механизм Row-Level Security в PostgreSQL предоставляет администраторам баз данных мощный инструмент для реализации сложных сценариев контроля доступа.