Solr: защита документов и вложенных документов - PullRequest
0 голосов
/ 29 января 2012

У меня довольно-таки очень большая проблема с Solr.Индекс содержит группу документов о сотрудниках, которая имеет набор полей общего доступа и набор безопасных полей.На основании учетных данных пользователя (которые могут быть проиндексированы в документе как одно поле), если документ соответствует, все его открытые поля и некоторые защищенные поля, к которым он имеет доступ.Этот список безопасных полей изменяет документ для документа в том же индексе.Пример: руководитель отдела (принадлежащий одной компании) может просматривать все защищенные поля сотрудников (doc) под ним, но не для тех, кто не работает под ним (будь то в той же компании или нет).Но он все еще может видеть ВСЕ открытые поля ВСЕХ сотрудников (совпавшие и отфильтрованные документы).

Таким образом, будучи менеджером, я могу видеть все (открытые + защищенные) поля всех, работающих под мной, кроме моегоAsst может видеть только некоторые из безопасных полей, которые находятся под ним.Как реализовать это в Solr.Спасибо.

Ответы [ 2 ]

3 голосов
/ 29 января 2012

В документации говорится, что Solr не заботится о безопасности на уровне документа.

Solr предназначен для того, чтобы быть индексом ваших данных, а не заменой вашей базы данных (Контроль доступа является важной функцией БД, только добавляет сложности в индекс)

Мои предложения:

  1. Удалить все конфиденциальные данные из индекса .Каждый документ Solr может содержать ссылку (или ссылку) на стороннюю систему / базу данных, содержащую конфиденциальные данные, требующие контроля доступа.
  2. Шифрование конфиденциального содержимого в индексе Использование открытого / закрытого ключашифрование, вы можете контролировать, кто может расшифровать чувствительные поля документа Solr.(Это решение не очень хорошо масштабируется и не позволяет искать зашифрованные поля)
  3. Создать секретный поисковый индекс для каждого менеджера : использовать механизм аутентификации веб-сервера для управления доступомв индекс и загружать конфиденциальные данные там.
0 голосов
/ 29 января 2012

Я бы предложил предпринять следующие шаги:

  1. для разделения открытого и безопасного контента, вы можете использовать два отдельных ядра.
  2. добавить ServletFilter, который находится между пользователем иSOLR webapp, а затем вы можете использовать базовую защиту на основе ACL поверх результатов SOLR, чтобы отфильтровать контент в соответствии с требованиями вашего приложения.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...