Я пытаюсь реализовать безопасность на уровне строк, чтобы наше приложение могло обеспечить более строгий контроль доступа.Безопасное обключение пула соединений
Одна из технологий, которую мы изучаем, представляет собой виртуальную частную базу данных Oracle, которая позволяет обеспечивать безопасность на уровне строк, в основном увеличивая все запросы к конкретным таблицам с помощью предиката предложения where
. Поскольку мы находимся в веб-среде, нам нужно настроить специальный контекст в Oracle, внутри потока одного запроса. Мы используем пул соединений с учетной записью службы.
Я начал изучать Eclipse Link и Hibernate. Eclipse Link, похоже, имеет events, который идеально вписывается в эту модель.
Это привело бы нас к миграции из спящего режима, что не является проблемой, но мы были бы привязаны к EL для этих событий.
Oracle, похоже, подразумевает, что они реализуются на уровне источника данных в Web Logic product.
Контекст устанавливается и очищается исходным кодом WebLogic.
Вопрос: ли более целесообразным сделать это на уровне DataSource с некоторой серии событий. Каковы события или методы, на которые я должен обратить внимание?
Добавлено Вопрос: Как расширить пул соединений, чтобы безопасно инициализировать контекст оракула с помощью некоторых пользовательских данных? Я копаюсь в Apache, и кажется, что расширение BasicDataSource не дает мне доступ ко всему, что позволило бы мне очистить соединение, когда Spring будет с ним.
Мне нужно настроить соединение и очистить соединение как выход/введите пул соединений. Я надеюсь на реализацию, которая настолько проста, что никто не может испортить ее, нарушив тонкий баланс продуктов.
- Specifically we are currently using Apache Commons DBCP Basic Data Source
Это позволит нам использовать различные способы подключения к базе данных и обеспечить безопасность. Но я не вижу отличного примера или набора событий для работы, и , переворачивающий мой собственный жизненный цикл безопасности - это не очень хорошая идея.
Я бы не сделал этого на стороне пула соединений, так как пулы соединений обычно не имеют (и я думаю, они не должны иметь) информацию о пользователе, выполняющем запрос или запрос вообще. – jjmontes
Не должно ли соединение JDBC оракула в конечном итоге поддерживать контекст соединения оракула? – TheNorthWes
Думаю, что да. Следовательно, необходимо настроить параметры Oracle VPD для каждого запроса и очистить их при возврате соединения с пулом, как вы заявили. Для меня подход Eclipse Link является лучшим в этом сценарии, однако я не смог найти эквивалент для Hibernate/Hibernate + Spring, но я думаю, что это лучший уровень для решения этой проблемы. – jjmontes