2012-01-29 4 views
0

저는 Solr 문제를 알고 있습니다. 색인에는 공용 액세스 필드 세트와 보안 필드 세트가있는 직원 레코드의 문서 그룹이 들어 있습니다. 문서의 하나의 필드로 인덱싱 될 수있는 사용자의 보안 자격 증명을 기반으로 문서가 일치하면 공개 필드와 액세스 권한이있는 보안 필드 중 일부를 기반으로합니다. 이 보안 필드 목록은 동일한 인덱스의 문서마다 다릅니다. 예 : 부서 (한 회사에 속한)를 관리하면 그 아래 직원 (doc)의 모든 보안 분야를 볼 수 있지만 그 회사에서 일하지 않는 사람 (같은 회사인지 여부)은 볼 수 없습니다. 그러나 그는 여전히 모든 직원 (일치 및 필터링 된 문서)의 모든 공개 필드를 볼 수 있습니다.Solr : 문서 및 하위 문서 수준의 보안

관리자가되어서 모든 사람 (공개 + 보안) 필드가 모두 내 밑에서 작동하는 것을 볼 수 있지만 내 서재는 그 밑에있는 보안 필드 중 일부만 볼 수 있습니다. 이것을 Solr에서 구현하는 방법. 감사.

답변

3

documentation은 Solr이 문서 수준에서 보안과 관련이 없다고 명시합니다.

  1. :

    SOLR는 데이터의 인덱스가 아닌 데이터베이스에 대한 대체 (액세스 제어가 중요한 DB 기능에만 인덱스 복잡해)

    내 제안을 수 있도록 설계되었습니다 색인에서 모든 중요한 데이터를 제거하십시오. 각 Solr 문서에는 액세스 제어가 필요한 중요한 데이터가 들어있는 타사 시스템/데이터베이스에 대한 참조 (또는 링크)가 포함될 수 있습니다.

  2. 색인 내 민감한 내용 암호화 공개 키/개인 키 암호화를 사용하면 Solr 문서의 민감한 필드를 누가 암호 해제 할 수 있는지 제어 할 수 있습니다. (이 솔루션은 확장 성이 좋지 않으며 암호화 된 필드를 검색 할 수 없습니다)
  3. 각 관리자에 대해 민감한 검색 색인을 만듭니다 : 웹 서버의 인증 메커니즘을 사용하여 색인에 대한 액세스를 제어하고 민감한 데이터를로드합니다 그곳에.
0

나는 다음과 같은 조치를 취할 것을 제안 :

  1. 는 공공 및 보안 콘텐츠를 분리, 당신은 두 개의 코어를 사용할 수 있습니다.
  2. 사용자와 SOLR webapp 사이에있는 ServletFilter를 추가 한 다음 SOLR 결과 위에 기본 ACL 기반 보안을 사용하여 응용 프로그램 요구 사항에 따라 내용을 필터링 할 수 있습니다.