들어가며
기업의 정보 보안 요건은 해마다 점점 더 엄격해지고 있습니다. 검색 시스템에는 방대한 양의 기밀 문서가 집약되기 때문에 적절한 인증 및 인가 메커니즘이 필수적입니다.
본 기사에서는 제5회에서 소개한 역할 기반 검색을 더욱 발전시켜 SSO(싱글 사인온) 연동을 중심으로 한 보안 아키텍처를 설계합니다.
대상 독자
엔터프라이즈 환경에서 Fess를 운영하는 분
SSO 연동(OIDC, SAML) 설계를 담당하는 분
제로 트러스트 보안 개념을 이해하고 있는 분
보안 요건 정리
기업의 전형적인 보안 요건을 정리합니다.
| 요건 | 설명 |
|---|---|
| 싱글 사인온 | 기존 IdP와 연동하여 추가 로그인 작업을 불필요하게 함 |
| 역할 기반 접근 | 사용자의 소속 및 권한에 따른 검색 결과 제어 |
| 통신 암호화 | HTTPS를 통한 모든 통신의 암호화 |
| API 접근 제어 | 토큰 기반 API 인증 및 권한 관리 |
| 감사 로그 | 누가 무엇을 검색했는지 기록 |
SSO 연동 옵션
Fess가 지원하는 SSO 프로토콜과 각각의 적용 장면을 정리합니다.
OpenID Connect / Entra ID를 통한 SSO 연동
가장 현대적이고 권장되는 접근 방식입니다. Fess에서는 범용 OpenID Connect 연동 외에도 Entra ID(Azure AD) 전용 연동 기능이 제공됩니다. 여기서는 Entra ID와의 연동을 예로 설명합니다.
인증 흐름 개요
사용자가 Fess에 접근
Fess가 Entra ID 인증 화면으로 리다이렉트
사용자가 Entra ID에서 인증(MFA 포함)
Entra ID가 인증 토큰을 Fess에 반환
Fess가 토큰에서 사용자 정보와 그룹 정보를 취득
그룹 정보를 기반으로 역할을 할당
역할에 기반한 검색 결과를 제공
Entra ID 측 설정
Entra ID에서 애플리케이션 등록
리다이렉트 URI 설정 (Fess의 OIDC 콜백 URL)
필요한 API 권한 부여 (User.Read, GroupMember.Read.All 등)
클라이언트 ID 및 시크릿 취득
Fess 측 설정
관리 화면의 [시스템] > [일반] 페이지에서 SSO 연결 정보를 설정합니다. 주요 설정 항목은 다음과 같습니다.
OpenID Connect 프로바이더 URL (Entra ID 엔드포인트)
클라이언트 ID
클라이언트 시크릿
스코프 (openid, profile, email 등)
그룹 클레임 설정
그룹과 역할의 매핑
Entra ID의 그룹을 Fess의 역할에 매핑합니다. 이를 통해 Entra ID에서의 그룹 관리가 그대로 검색 결과 제어에 반영됩니다.
예: Entra ID 그룹 “Engineering” -> Fess 역할 “engineering_role”
SAML을 통한 SSO 연동
기존 SAML IdP가 있는 환경에서는 SAML 연동이 적합합니다.
인증 흐름 개요
SAML에서는 SP(Service Provider = Fess)와 IdP 간에 SAML Assertion을 주고받습니다.
사용자가 Fess에 접근
Fess가 SAML AuthnRequest를 IdP에 전송
IdP가 사용자를 인증
IdP가 SAML Response(사용자 속성 포함)를 Fess에 반환
Fess가 사용자 속성을 기반으로 역할을 할당
Fess 측 설정
SAML 연동에는 다음 설정이 필요합니다.
IdP의 메타데이터 URL 또는 XML 파일
SP의 엔티티 ID
Assertion Consumer Service URL
속성 매핑 (사용자 이름, 이메일 주소, 그룹)
SPNEGO / Kerberos 연동
Windows Active Directory 환경에서는 SPNEGO/Kerberos를 통한 통합 Windows 인증을 사용할 수 있습니다. 도메인에 가입된 PC에서 브라우저로 접근하면 추가 로그인 작업 없이 자동으로 인증됩니다.
이 방식은 사용자에게 가장 투명하지만 설정은 가장 복잡합니다. Active Directory 도메인 환경이 전제 조건입니다.
통신 암호화
SSL/TLS 설정
운영 환경에서는 Fess에 대한 모든 접근을 HTTPS로 수행하는 것이 권장됩니다.
리버스 프록시 방식 (권장)
Nginx 또는 Apache HTTP Server를 리버스 프록시로 배치하여 SSL 종단을 수행합니다. Fess 자체는 HTTP로 동작하며, 리버스 프록시가 HTTPS를 처리합니다.
[클라이언트] --HTTPS--> [Nginx] --HTTP--> [Fess]
이 방식의 장점은 인증서 관리가 리버스 프록시에 집약된다는 것입니다.
Fess 직접 설정 방식
Fess의 Tomcat에 직접 SSL 인증서를 설정하는 것도 가능합니다. 소규모 환경이나 리버스 프록시를 설치하지 않는 경우에 적합합니다.
API 접근 보안
제11회에서 소개한 API 연동의 보안을 강화합니다.
토큰 권한 설계
접근 토큰에 적절한 권한을 설정합니다.
| 용도 | 권한 | 비고 |
|---|---|---|
| 검색 위젯용 | 검색만 (읽기 전용) | 프론트엔드에서 사용 |
| 배치 처리용 | 검색 + 인덱싱 | 서버 측에서 사용 |
| 관리 자동화용 | 관리 API 접근 | 운영 스크립트에서 사용 |
토큰 관리
정기적인 로테이션 (3~6개월마다)
불필요한 토큰의 즉시 무효화
토큰 사용 현황 모니터링
감사 및 로그
검색 시스템의 감사 로그는 보안 인시던트 조사와 컴플라이언스 대응에 중요합니다.
Fess가 기록하는 로그
검색 로그: 누가 무엇을 검색했는지 (관리 화면의 [시스템 정보] > [검색 로그]에서 확인 가능)
감사 로그 (
audit.log): 로그인, 로그아웃, 접근, 권한 변경 등의 작업이 통합적으로 기록됨
로그 보관
보안 요건에 따라 로그 보관 기간을 설정합니다. 컴플라이언스 요건이 있는 경우 외부 로그 관리 시스템(SIEM)으로의 전송도 검토합니다.
정리
본 기사에서는 엔터프라이즈 환경에서의 Fess 보안 아키텍처를 설계했습니다.
SSO 연동의 3가지 옵션 (OIDC, SAML, SPNEGO)과 각각의 적용 장면
OpenID Connect를 통한 Entra ID 연동 설계
SSL/TLS를 통한 통신 암호화
API 접근 토큰의 권한 설계
감사 로그 관리
보안과 편의성의 균형을 유지하면서 안전한 검색 인프라를 구축하시기 바랍니다.
다음 회에서는 검색 인프라의 자동화에 대해 다룹니다.