개요
Box 커넥터는 Box.com의 클라우드 스토리지에서 파일을 가져와 Fess 의 인덱스에 등록하는 기능을 제공합니다.
이 커넥터는 JWT(서버 인증)를 사용하여 엔터프라이즈에 연결하고, 엔터프라이즈에 소속된 각 사용자를 가장(impersonation)하여 각 사용자가 접근할 수 있는 파일을 재귀적으로 크롤링합니다. 크롤링 대상 사용자는 filter_term 파라미터로 좁힐 수 있습니다.
이 기능에는 fess-ds-box 플러그인이 필요합니다.
전제 조건
플러그인 설치가 필요합니다
Box 개발자 계정 및 애플리케이션 생성이 필요합니다
JWT(JSON Web Token)인증 설정이 필요합니다
플러그인 설치
방법1: JAR 파일을 직접 배치
방법2: 관리 화면에서 설치
「시스템」→「플러그인」 열기
JAR 파일 업로드
Fess 재시작
설정 방법
관리 화면에서 「크롤러」→「데이터스토어」→「신규 작성」으로 설정합니다.
기본 설정
| 항목 | 설정 예 |
|---|---|
| 이름 | Company Box Storage |
| 핸들러 이름 | BoxDataStore |
| 사용 | 켜기 |
파라미터 설정
JWT 인증 예:
파라미터 목록
인증 파라미터(필수)
크롤링 파라미터(임의)
| 파라미터 | 기본값 | 설명 |
|---|---|---|
max_size | 10000000 | 크롤링 대상 최대 파일 크기(바이트). 기본값은 10MB. |
supported_mimetypes | .* | 크롤링 대상 MIME 타입(정규 표현식). 쉼표로 구분하여 복수 지정 가능. |
include_pattern | (없음) | 크롤링 대상에 포함할 URL 패턴 |
exclude_pattern | (없음) | 크롤링 대상에서 제외할 URL 패턴 |
number_of_threads | 1 | 크롤링 처리 스레드 수 |
ignore_folder | true | 폴더를 인덱싱 대상에서 제외할지 여부. 현재 구현에서는 폴더 자체는 인덱싱되지 않으므로(파일만 대상),이 파라미터는 효과가 없습니다. |
ignore_error | true | 오류 발생 시 처리를 계속할지 여부 |
filter_term | (없음) | 크롤링 대상 엔터프라이즈 사용자를 좁히는 필터 조건. 지정하지 않으면 모든 엔터프라이즈 사용자가 대상이 됩니다. |
fields | (전체 필드) | Box API에서 가져올 필드 지정 |
접속 파라미터(임의)
| 파라미터 | 기본값 | 설명 |
|---|---|---|
base_url | https://app.box.com | 브라우저에서 파일을 열 URL(file.url)을 구성하기 위한 기본 URL. Box SDK가 사용하는 API 엔드포인트에는 영향을 주지 않습니다. |
max_retry_count | 10 | API 호출 최대 재시도 횟수 |
proxy_host | (없음) | HTTP 프록시 호스트명 |
proxy_port | (없음) | HTTP 프록시 포트 번호 |
refresh_token_interval | 3540 | 토큰 갱신 간격(초). 기본값은 59분. |
스크립트 설정
사용 가능한 필드
주요 필드
| 필드 | 설명 |
|---|---|
file.url | 브라우저에서 파일을 여는 링크 |
file.contents | 파일의 텍스트 콘텐츠 |
file.mimetype | 파일의 MIME 타입 |
file.filetype | 파일 타입 |
file.name | 파일명 |
file.size | 파일 크기(바이트) |
file.created_at | 생성 일시 |
file.modified_at | 최종 수정 일시 |
file.download_url | Box 직접 다운로드 URL |
file.id | Box 아이템 ID |
file.description | 파일 설명 |
file.extension | 파일 확장자 |
file.sha1 | 파일의 SHA1 해시 |
file.path_collection | 폴더 경로 목록 |
메타데이터 필드
| 필드 | 설명 |
|---|---|
file.type | 아이템 타입(”file” 또는 “folder”) |
file.file_version | 파일 버전 정보 |
file.sequence_id | 시퀀스 ID |
file.etag | ETag 해시 |
file.trashed_at | 휴지통 이동 일시 |
file.purged_at | 완전 삭제 일시 |
file.content_created_at | 콘텐츠 생성 일시 |
file.content_modified_at | 콘텐츠 수정 일시 |
file.created_by | 생성자 정보 |
file.modified_by | 수정자 정보 |
file.owned_by | 소유자 정보 |
file.shared_link | 공유 링크 정보 |
file.parent | 상위 폴더 정보 |
file.item_status | 아이템 상태 |
file.version_number | 버전 번호 |
file.comment_count | 댓글 수 |
file.permissions | 권한 정보 |
file.tags | 태그 정보 |
file.lock | 잠금 정보 |
file.is_package | 패키지 플래그 |
file.is_watermark | 워터마크 플래그 |
file.collections | 컬렉션 정보 |
file.representations | 표현 형식 정보 |
file.api | Box 파일 API 객체(협업 및 권한 정보 취득용) |
자세한 내용은 Box File Object 를 참조하세요.
Box 인증 설정
JWT 인증 설정 절차
1. Box Developer Console에서 애플리케이션 생성
https://app.box.com/developers/console 에 접속:
「Create New App」 클릭
「Custom App」 선택
인증 방법에서 「Server Authentication (with JWT)」 선택
앱 이름 입력 후 생성
2. 애플리케이션 설정
「Configuration」 탭에서 설정:
Application Scopes:
「Read all files and folders stored in Box」 체크
Advanced Features:
「Generate a Public/Private Keypair」 클릭
생성된 JSON 파일 다운로드(중요!)
App Access Level:
「App + Enterprise Access」 선택
3. 엔터프라이즈에서 승인
Box 관리 콘솔에서:
「Apps」→「Custom Apps」 열기
생성한 앱 승인
4. 인증 정보 취득
다운로드한 JSON 파일에서 다음 정보를 취득:
비밀 키 형식
private_key 는 개행을 \n 으로 치환하여 한 줄로 만듭니다:
사용 예
기업 Box 스토리지 전체 크롤링
파라미터:
스크립트:
특정 폴더만 크롤링
include_pattern 파라미터로 폴더 경로에 의한 필터링이 가능합니다.
파라미터:
스크립트:
PDF 파일만 크롤링
supported_mimetypes 파라미터로 MIME 타입에 의한 필터링이 가능합니다.
파라미터:
스크립트:
문제 해결
인증 오류
증상: Authentication failed 또는 Invalid grant
확인 사항:
client_id와client_secret이 올바른지 확인비밀 키가 올바르게 복사되었는지 확인(개행이
\n으로 되어 있는지)패스프레이즈가 올바른지 확인
Box 관리 콘솔에서 앱이 승인되었는지 확인
enterprise_id가 올바른지 확인
비밀 키 형식 오류
증상: Invalid private key format
해결 방법:
비밀 키의 개행이 올바르게 \n 으로 변환되었는지 확인:
파일을 가져올 수 없음
증상: 크롤링은 성공하지만 파일이 0건
확인 사항:
Application Scopes에서 「Read all files and folders」가 활성화되어 있는지 확인
App Access Level이 「App + Enterprise Access」로 되어 있는지 확인
Box 스토리지에 실제로 파일이 존재하는지 확인
서비스 계정에 적절한 권한이 있는지 확인
파일이 대량으로 있는 경우
증상: 크롤링에 시간이 걸리거나 타임아웃 발생
해결 방법:
데이터스토어 설정에서 처리를 분할:
크롤링 간격 조정
복수의 데이터스토어로 나누어 설정(폴더 단위 등)
number_of_threads파라미터로 스레드 수 증가스케줄 설정으로 부하 분산
권한과 접근 제어
Box 협업 권한 반영
file.api 필드가 제공하는 BoxFileAPI 객체를 통해, Box의 협업 정보를 Fess 의 검색 롤에 매핑할 수 있습니다. file.api.collaborationRoles 는 파일에 접근할 수 있는 사용자 및 그룹에 해당하는 검색 롤 목록을 반환합니다.
스크립트에서 권한을 설정:
참고
file.api.collaborationRoles 는 파일마다 협업 정보를 가져오기 때문에, Box API 호출 횟수가 증가하여 크롤링에 시간이 걸릴 수 있습니다.
모든 파일에 고정 롤을 할당하는 경우에는 다음과 같이 지정합니다:
참고 정보
데이터스토어 커넥터 개요 - 데이터스토어 커넥터 개요
Dropbox 커넥터 - Dropbox 커넥터
Google Workspace 커넥터 - Google Workspace 커넥터
데이터 저장소 크롤링 - 데이터스토어 설정 가이드