Как я могу обеспечить изоляцию данных в многопользовательской системе Spring 10K с помощью Spring?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу обеспечить изоляцию данных в многопользовательской системе Spring 10K с помощью Spring?

Сообщение Anonymous »

У меня есть система, которая, как ожидается, будет масштабироваться примерно до 10 тысяч пользователей. Это относительно простой инструмент управления данными CRUD для специализированной отрасли (запчасти, поставщики, инвентарь, задержки, счета и тому подобное) для малого бизнеса. По сути, вы создаете бесплатную учетную запись, создается новый арендатор (затем вы можете добавить своих коллег в свой арендатор) и при желании можете перейти на платную подписку. Все это работает на одной гигантской общей базе данных и общей схеме, поэтому я все еще могу использовать Hibernate ORM.
На весенней стороне это работает следующим образом:
У вас есть две конечные точки для входа и регистрации для создания учетной записи, которые общедоступен.
Остальные защищены мультиарендной системой. Сначала он проверяет, проверен ли ваш JWT и правильно ли он подписан. Затем система проверяет, в каком арендаторе зарегистрирован этот идентификатор пользователя, используя TenantContext (который представляет собой компонент области запроса, который показывает текущие tenantId и tenantName). С этого момента система должна быть на 100% уверена, что любой доступ базы данных к строкам, которые не принадлежат данному арендатору, невозможен.
Конечно, очень простой ответ — просто добавить byTenantId к каждой отдельной функции в каждом единый репозиторий. Но мне как бы нужно пуленепробиваемое решение. Тот, который гарантирует, что даже в случае программной ошибки система предотвратит доступ к неавторизованной строке.
Вот несколько идей, которые у меня возникли и почему я не думаю, что они сработаютСоздать новую базу данных, новую базу данных и пользователя базы данных для каждого клиента
  • Выключить спящий режим JPA
  • Кошмар миграции
  • Требуется одновременное открытие 10 000 подключений ко всем базам данных с разными пользователями
Создать новую базу данных и новая база данных и пользователь БД для каждого арендатора
  • Проблемы, аналогичные описанным выше
Создайте безопасность на уровне строк и пользователя базы данных для каждого арендатор
  • Безопасность на уровне строк не поддерживается JPA
  • Также требуется 10 000 подключений для каждого пользователя БД
  • li>
Шифровать данные строк на лету, требовать отправку специального ключа дешифрования при каждом запросе (каждая строка имеет идентификатор клиента)
  • Очень сложно реализовать
  • Ключ потерян клиентом, данные пропали
  • Объединения по-прежнему будут доступны
Есть ли у кого-нибудь опыт в этом? Или я просто слишком параноик по поводу того, что что-то идет не так?

Подробнее здесь: https://stackoverflow.com/questions/792 ... m-with-spr
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»