Как разграничить видимость данных в таблицах Postgresql?

Имеется некая система на Postgresql обслуживающая нескольких компаний-клиентов. Из-за специфики деятельности данные клиентов нельзя разделить на разные БД, схемы, таблицы (т.е. данные разных клиентов находятся в одних и тех же таблицах). На текущий момент разделение доступа к данным реализовано на уровне клиентского приложения. Клиенту выдаётся приложение с конкретно его идентификатором, и оно "не показывает" чужие данные, но логины/пароли пользователей внутри компании-клиента разные (необходимо для ведения аудита). Если подключиться с помощью стороннего софта с этими логинами/паролями, то будет доступ ко всем данным. Естественно, это даже дырой в безопасности сложно назвать, это просто открытые данные на ладони.

Нужен совет, как можно разграничить видимость данных, да и вообще по архитектуре подобных систем.
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
RLS то что вы хотите услышать.

Отдельный сервис между базой и неподконтрольными вам клиентами - то что вам необходимо сделать. База в мир открыта быть не должна. DoS делается довольно просто даже без знания паролей, а уж с доступом...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Переходите от прямого обращения к базе данных на клиент-серверный вариант. Тогда клиент будет видеть только то, что отдаст ему ваш сервер.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы