제5회 정보를 찾는 사람에 맞추다 – 부서별·권한별 검색 결과 제어

들어가며

지난 회에서는 여러 데이터 소스를 통합하여 횡단 검색하는 방법을 소개했습니다. 그러나 횡단 검색이 가능해지면 새로운 과제가 부상합니다. 바로 “보여도 되는 정보”와 “보여서는 안 되는 정보”의 제어입니다.

인사부의 기밀 자료가 전 직원의 검색 결과에 표시되면 곤란합니다. 본 기사에서는 Fess의 롤 기반 검색을 활용하여 이용자의 소속이나 권한에 따른 검색 결과 제어를 설계·구축합니다.

대상 독자

  • 검색 결과의 접근 제어가 필요한 분

  • 사내 정보 보안을 고려한 검색 기반을 구축하고 싶은 분

  • Active Directory나 LDAP의 기본적인 지식이 있는 분

시나리오

어느 기업에 3개의 부서가 있습니다.

  • 영업부: 고객 정보, 견적서, 제안서를 관리

  • 개발부: 설계서, 소스 코드 사양서, 회의록을 관리

  • 인사부: 인사 평가, 급여 정보, 취업 규칙을 관리

모든 부서가 공통으로 참조할 수 있는 문서(사내 규정, 복리후생 안내 등)도 있습니다.

실현하고 싶은 검색 경험은 다음과 같습니다.

  • 영업부 직원은 영업부와 공통 문서만 검색할 수 있다

  • 개발부 직원은 개발부와 공통 문서만 검색할 수 있다

  • 인사부 직원은 인사부와 공통 문서만 검색할 수 있다

  • 경영층은 모든 문서를 검색할 수 있다

롤 기반 검색의 구조

Fess의 롤 기반 검색은 다음과 같은 흐름으로 동작합니다.

  1. 크롤 시: 문서에 롤 정보(어떤 롤이 접근할 수 있는지)를 부여

  2. 로그인 시: 이용자의 롤 정보를 취득(Fess 내부 인증 또는 외부 인증 연계)

  3. 검색 시: 이용자의 롤에 일치하는 문서만 검색 결과에 표시

이 구조를 통해 검색 엔진 수준에서 접근 제어가 이루어집니다.

롤 설계

사용자와 그룹의 설계

먼저 Fess에서의 사용자·그룹·롤의 관계를 정리합니다.

롤 설계
그룹 접근 가능한 문서
sales(영업부) sales_role 영업부 문서 + 공통 문서
engineering(개발부) engineering_role 개발부 문서 + 공통 문서
hr(인사부) hr_role 인사부 문서 + 공통 문서
management(경영층) management_role 모든 문서

Fess에서의 그룹·롤 설정

롤의 생성

  1. 관리 화면의 [사용자] > [롤]을 선택

  2. 다음 롤을 생성

    • sales_role

    • engineering_role

    • hr_role

    • management_role

그룹의 생성

  1. [사용자] > [그룹]을 선택

  2. 다음 그룹을 생성

    • sales

    • engineering

    • hr

    • management

사용자의 생성과 롤 할당

  1. [사용자] > [사용자]를 선택

  2. 각 사용자에게 그룹과 롤을 할당

크롤 설정에서 퍼미션을 할당하기

문서에 접근 제어 정보를 부여하려면 크롤 설정에서 퍼미션을 지정합니다. 퍼미션은 {role}롤명, {group}그룹명, {user}사용자명 형식으로 줄바꿈 구분으로 입력합니다.

부서별 크롤 설정

영업부의 파일 서버

  1. [크롤러] > [파일 시스템] > [새로 만들기]

  2. 아래를 설정

    • 패스: smb://fileserver/sales/

    • 퍼미션: {role}sales_role{role}management_role 을 줄바꿈 구분으로 입력

이 설정을 통해 영업부의 파일 서버에서 크롤된 문서는 sales_rolemanagement_role 을 가진 사용자만 검색 결과에서 열람할 수 있습니다.

개발부의 파일 서버

  1. [크롤러] > [파일 시스템] > [새로 만들기]

  2. 아래를 설정

    • 패스: smb://fileserver/engineering/

    • 퍼미션: {role}engineering_role{role}management_role 을 줄바꿈 구분으로 입력

인사부의 파일 서버

  1. [크롤러] > [파일 시스템] > [새로 만들기]

  2. 아래를 설정

    • 패스: smb://fileserver/hr/

    • 퍼미션: {role}hr_role{role}management_role 을 줄바꿈 구분으로 입력

공통 문서

  1. [크롤러] > [웹] 또는 [파일 시스템] > [새로 만들기]

  2. 퍼미션: 기본값인 {role}guest 그대로 유지

기본적으로 {role}guest 가 자동 입력됩니다. 게스트 사용자를 포함한 모든 사용자가 guest 롤을 가지므로 모든 사용자가 검색 결과를 열람할 수 있습니다.

외부 인증과의 연계

실제 기업 환경에서는 Fess 자체의 사용자 관리가 아니라 기존의 디렉터리 서비스와 연계하고 싶은 경우가 대부분입니다.

Active Directory / LDAP 연계

Fess는 LDAP 연계를 지원하며, Active Directory의 사용자 정보를 사용하여 인증과 롤 할당을 수행할 수 있습니다.

LDAP 연계를 활성화하려면 Fess의 설정 파일에서 LDAP 접속 정보를 설정합니다.

주요 설정 항목은 다음과 같습니다.

  • LDAP 서버의 URL

  • 바인드 DN(접속용 계정)

  • 사용자의 검색 베이스 DN

  • 그룹의 검색 베이스 DN

  • 사용자 속성의 매핑

LDAP 연계가 활성화된 경우 이용자는 Active Directory 계정으로 Fess에 로그인할 수 있습니다. 소속 그룹의 정보가 자동으로 롤에 반영되므로 Fess에서 사용자별로 롤을 수동 설정할 필요가 없습니다.

SSO 연계

더 나아간 구성으로 싱글 사인온(SSO)과의 연계도 가능합니다. Fess는 다음 SSO 프로토콜을 지원합니다.

  • OpenID Connect (OIDC): Entra ID (Azure AD), Keycloak 등

  • SAML: 각종 IdP와의 연계

  • SPNEGO/Kerberos: Windows 통합 인증

SSO 연계를 통해 이용자는 평소의 로그인 정보로 자동으로 Fess에도 접근할 수 있으며 롤 정보도 자동으로 반영됩니다. SSO 연계의 상세한 내용은 제15회 “안전한 검색 기반”에서 자세히 다룹니다.

동작 확인

롤 기반 검색의 설정이 완료되면 동작을 확인합시다.

확인 절차

  1. 영업부 사용자로 로그인하고 “견적서”로 검색 → 영업부와 공통 문서만 표시되는지 확인

  2. 개발부 사용자로 로그인하고 동일한 키워드로 검색 → 영업부 문서가 표시되지 않는지 확인

  3. 경영층 사용자로 로그인하고 동일한 키워드로 검색 → 모든 부서의 문서가 표시되는지 확인

확인 포인트

  • 권한이 없는 문서가 검색 결과에 일절 표시되지 않을 것

  • 공통 문서는 모든 사용자에게 표시될 것

  • 로그인하지 않은 상태에서의 검색 동작(게스트 표시 범위)

설계상의 고려 사항

롤의 세분화 수준

롤의 세분화 수준은 조직 구조와 보안 요건에 따라 결정합니다.

거친 세분화: 부서 단위로 롤을 설정(본 기사의 시나리오)

  • 장점: 설정이 단순하고 관리가 용이

  • 단점: 부서 내 세밀한 접근 제어가 불가능

세밀한 세분화: 프로젝트나 팀 단위로 롤을 설정

  • 장점: 세밀한 접근 제어가 가능

  • 단점: 롤 수가 증가하여 관리가 복잡해짐

우선 거친 세분화부터 시작하고 필요에 따라 세밀하게 해 나가는 접근 방식이 권장됩니다.

파일 서버의 ACL과의 연계

파일 서버를 크롤하는 경우 파일의 ACL(접근 제어 목록) 정보를 이용한 권한 제어도 가능합니다. 이 경우 파일 시스템상의 권한 설정이 그대로 검색 결과의 표시 제어에 반영됩니다.

파일 서버의 ACL을 활용하는 경우에는 크롤 설정의 권한 관련 설정 항목을 확인하십시오.

정리

본 기사에서는 Fess의 롤 기반 검색을 사용하여 부서별 검색 결과 제어를 설계·구축했습니다.

  • 롤·그룹·사용자의 설계와 등록

  • 크롤 설정에의 롤 할당

  • Active Directory / LDAP 연계에 의한 자동 롤 반영

  • SSO 연계의 선택지(OIDC, SAML, SPNEGO)

롤 기반 검색을 통해 정보 보안을 확보하면서 횡단 검색의 편리성을 제공할 수 있습니다. 기초편은 여기까지입니다. 다음 회부터는 실전 솔루션편으로 개발팀의 지식 허브 구축을 다룹니다.

참고 자료