Как реализовать безопасность на уровне строк для мультитенантного приложения SAAS - PullRequest
0 голосов
/ 17 апреля 2019

Изучив различные варианты создания архитектуры многопользовательской базы данных, я решил использовать '1001 * Единая база данных и одни и те же таблицы для всех клиентов, но у нас есть tenant_id во всех таблицах, поэтому мы запрашиваем данные в соответствии с подход к конкретному клиенту благодаря простоте масштабирования и обслуживания / модернизации.

Общий подход, по-видимому, заключается в том, чтобы просто включить WHERE tenant_id = $ID для каждого запроса, однако я узнал, что вы можете дополнительно изолировать данные и избавить от необходимости включать предложение WHERE путем реализации защиты на уровне строк.

Руководства, которые я нашел о том, как это сделать, не очень ясны. Кажется, что все они реализуют защиту на уровне строк на основе зарегистрированного пользователя базы данных, что не подойдет для моего случая, поскольку у меня только один пользователь базы данных.

Обычно, когда пользователь отправляет запрос API на наш сервер, он включает веб-токен JSON, который включает идентификатор в полезной нагрузке. Затем сервер запрашивает базу данных «пользователей» для этого идентификатора, чтобы получить пользователя orgId (он же tenant_id), затем, когда сервер запрашивает базу данных в соответствии с запросом API, он установит для $ID в WHERE orgId = $ID значение это вернуло orgId значение.

Как реализовать безопасность на уровне строк в этом сценарии?

Я искал другие темы и не считаю, что это дублирующий вопрос.

1 Ответ

1 голос
/ 17 апреля 2019

Обычно с такой настройкой нельзя использовать защиту на уровне строк.

Безопасность на уровне строк обычно привязана к пользователю базы данных, поэтому ее можно использовать только в том случае, если ваше приложение реализует свою концепцию безопасности с пользователями базы данных.

Как прокомментировал a_horse_with_no_name, временное решение может заключаться в установке параметров конфигурации, таких как application_name, из вашего приложения и безопасности уровня строки базы для этого параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...