Политики защиты строк
В современных базах данных безопасность информации является критически важным аспектом. 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 предоставляет администраторам баз данных мощный инструмент для реализации сложных сценариев контроля доступа.