Как правильно создать роль для одного клиента?

Рейтинг: 0Ответов: 1Опубликовано: 02.02.2023

Как правильно создать роль для одного customer?

Задание: надо взять любого, который есть в базе и дать ему возможность смотреть только свою инфу в двух таблицах.
Не знаю как привязать конкретного человека к роли, и помимо этого в результате избежать ошибку бесконечной рекурсии. Если подскажете/дадите рандомный пример, буду очень благодарна, я еще новичок в Postgre.

Ответы

▲ 0

То что вам нужно сделать достаточно подробно расписано в справке 5.8. Политики защиты строк. Там в качестве примера разбирается как раз ваш случай. Доступ записям сопоставленным с ролью пользователя. Нужно понимать что в PostgreSQL деление между ролью и пользователем весьма условное, пользователь это просто роль с правом входа.

ЗЫ:

Этот подход мне показался интересным, я потратил довольно много времени что бы решить как вписать его в свое решение, но в результате я пришел к выводу что применение политик защиты строк неоправданно усложняет защиту данных, так как скрывает часть общего поведения системы защиты, "размазывает" средства безопасности по доменному уровню и уровню доступа к данным, нарушая принципы аспектно-ориентированного проектирования, усложняя реализацию сквозной функциональности. В общем я настоятельно рекомендую вам хорошо продумать общую бизнес-модель прежде чем использовать.