개요
Microsoft 365 커넥터는 Microsoft 365 서비스(OneDrive, OneNote, Teams, SharePoint)에서 데이터를 가져와서 Fess 인덱스에 등록하는 기능을 제공합니다.
이 기능을 사용하려면 fess-ds-microsoft365 플러그인이 필요합니다.
지원 서비스
OneDrive: 사용자 드라이브, 그룹 드라이브, 공유 문서
OneNote: 노트북(사이트, 사용자, 그룹)
Teams: 채널, 메시지, 채팅
SharePoint Document Libraries: 문서 라이브러리 메타데이터
SharePoint Lists: 목록과 목록 항목
SharePoint Pages: 사이트 페이지, 뉴스 기사
전제조건
플러그인 설치가 필요합니다
Azure AD 애플리케이션 등록이 필요합니다
Microsoft Graph API 권한 설정과 관리자 동의가 필요합니다
Java 21 이상, Fess 15.2.0 이상
플러그인 설치
방법 1: JAR 파일 직접 배치
방법 2: 소스에서 빌드
설치 후 |Fess|를 재시작하세요.
설정 방법
관리 화면에서 “크롤러” → “데이터 스토어” → “새로 만들기”에서 설정합니다.
기본 설정
| 항목 | 설정 예 |
|---|---|
| 이름 | Microsoft 365 OneDrive |
| 핸들러 이름 | OneDriveDataStore / OneNoteDataStore / TeamsDataStore / SharePointDocLibDataStore / SharePointListDataStore / SharePointPageDataStore |
| 활성화 | 켬 |
파라미터 설정(공통)
공통 파라미터 목록
Azure AD 애플리케이션 등록
1. Azure Portal에서 애플리케이션 등록
https://portal.azure.com 에서 Azure Active Directory를 열기:
“앱 등록” → “새 등록” 클릭
애플리케이션 이름 입력
지원되는 계정 유형 선택
“등록” 클릭
2. 클라이언트 시크릿 생성
“인증서 및 비밀”에서:
“새 클라이언트 시크릿” 클릭
설명과 유효기간 설정
시크릿 값 복사(나중에 확인 불가하므로 주의)
3. API 권한 추가
“API 권한”에서:
“권한 추가” 클릭
“Microsoft Graph” 선택
“애플리케이션 권한” 선택
필요한 권한 추가(아래 참조)
“관리자 동의 부여” 클릭
데이터 스토어별 필요 권한
OneDriveDataStore
필수 권한:
Files.Read.All
조건부 권한:
User.Read.All- user_drive_crawler=true인 경우Group.Read.All- group_drive_crawler=true인 경우Sites.Read.All- shared_documents_drive_crawler=true인 경우
OneNoteDataStore
필수 권한:
Notes.Read.All
조건부 권한:
User.Read.All- user_note_crawler=true인 경우Group.Read.All- group_note_crawler=true인 경우Sites.Read.All- site_note_crawler=true인 경우
TeamsDataStore
필수 권한:
Team.ReadBasic.AllGroup.Read.AllChannel.ReadBasic.AllChannelMessage.Read.AllChannelMember.Read.AllUser.Read.All
조건부 권한:
Chat.Read.All- chat_id를 지정하는 경우Files.Read.All- append_attachment=true인 경우
스크립트 설정
OneDrive
사용 가능한 필드:
file.name- 파일명file.description- 파일 설명file.contents- 텍스트 콘텐츠file.mimetype- MIME 타입file.filetype- 파일 타입file.created- 생성 일시file.last_modified- 최종 수정 일시file.size- 파일 크기file.web_url- 브라우저에서 열 URLfile.roles- 액세스 권한
OneNote
사용 가능한 필드:
notebook.name- 노트북 이름notebook.contents- 섹션과 페이지의 통합 콘텐츠notebook.size- 콘텐츠 크기(문자 수)notebook.created- 생성 일시notebook.last_modified- 최종 수정 일시notebook.web_url- 브라우저에서 열 URLnotebook.roles- 액세스 권한
Teams
사용 가능한 필드:
message.title- 메시지 제목message.content- 메시지 콘텐츠message.created_date_time- 생성 일시message.last_modified_date_time- 최종 수정 일시message.web_url- 브라우저에서 열 URLmessage.roles- 액세스 권한message.from- 발신자 정보
데이터 스토어별 추가 파라미터
OneDrive
OneNote
Teams
SharePoint Document Libraries
SharePoint Lists
SharePoint Pages
사용 예
OneDrive 전체 드라이브 크롤링
파라미터:
스크립트:
특정 팀의 Teams 메시지 크롤링
파라미터:
스크립트:
문제 해결
인증 오류
증상: Authentication failed 또는 Insufficient privileges
확인 사항:
테넌트 ID, 클라이언트 ID, 클라이언트 시크릿이 올바른지 확인
Azure Portal에서 필요한 API 권한이 부여되었는지 확인
관리자 동의가 부여되었는지 확인
클라이언트 시크릿 유효기간 확인
API 속도 제한 오류
증상: 429 Too Many Requests
해결 방법:
데이터를 가져올 수 없음
증상: 크롤링은 성공하지만 문서가 0개
확인 사항:
대상 데이터가 존재하는지 확인
API 권한이 올바르게 설정되었는지 확인
사용자/그룹 드라이브 크롤러 설정 확인
로그에서 오류 메시지 확인
대량 데이터 크롤링
해결 방법:
여러 데이터 스토어로 분할(사이트 단위, 드라이브 단위 등)
스케줄 설정으로 부하 분산
``number_of_threads``를 조정하여 병렬 처리
특정 폴더/사이트만 크롤링
참고 정보
데이터스토어 커넥터 개요 - 데이터 스토어 커넥터 개요
Google Workspace 커넥터 - Google Workspace 커넥터
데이터 저장소 크롤링 - 데이터 스토어 설정 가이드