개요
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 |
| 활성화 | 켬 |
파라미터 설정(공통)
공통 파라미터 목록
| 파라미터 | 필수 | 설명 |
|---|---|---|
tenant | 예 | Azure AD 테넌트 ID |
client_id | 예 | 앱 등록 클라이언트 ID |
client_secret | 예 | 앱 등록 클라이언트 시크릿 |
number_of_threads | 아니오 | 병렬 처리 스레드 수(기본값: 1) |
ignore_error | 아니오 | 오류 시에도 처리 계속(기본값: false) |
max_content_length | 아니오 | 가져올 콘텐츠의 최대 크기(기본값: -1, 무제한) |
cache_size | 아니오 | 사용자·그룹 정보의 캐시 크기(기본값: 10000) |
proxy_host | 아니오 | HTTP 프록시 호스트 |
proxy_port | 아니오 | HTTP 프록시 포트 |
proxy_username | 아니오 | 프록시 인증 사용자명 |
proxy_password | 아니오 | 프록시 인증 비밀번호 |
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.url- 파일 URLfile.id- 드라이브 항목 IDfile.ctag- 변경 태그(cTag)file.etag- 엔티티 태그(eTag)file.webdav_url- WebDAV URLfile.parent_id- 상위 폴더 IDfile.parent_name- 상위 폴더 이름file.parent_path- 상위 폴더 경로file.roles- 액세스 권한
참고
위 항목 외에도 file.createdby_user , file.last_modifiedby_user , file.image , file.video , file.special_folder 등의 Microsoft Graph 메타데이터 필드를 사용할 수 있습니다.
OneNote
사용 가능한 필드:
notebook.name- 노트북 이름notebook.contents- 섹션과 페이지의 통합 콘텐츠notebook.size- 콘텐츠 크기(문자 수)notebook.created- 생성 일시notebook.last_modified- 최종 수정 일시notebook.web_url- 브라우저에서 열 URLnotebook.roles- 액세스 권한
Teams
사용 가능한 필드:
message.title- 메시지 제목message.content- 메시지 콘텐츠message.body- 메시지 본문(HTML 포함 원시 데이터)message.subject- 메시지 제목(subject)message.summary- 메시지 요약message.importance- 중요도message.from- 발신자 정보message.created_date_time- 생성 일시message.last_modified_date_time- 최종 수정 일시message.last_edited_date_time- 최종 편집 일시message.deleted_date_time- 삭제 일시message.web_url- 브라우저에서 열 URLmessage.id- 메시지 IDmessage.etag- 엔티티 태그message.locale- 로케일message.chat_id- 채팅 IDmessage.reply_to_id- 답장 대상 메시지 IDmessage.channel_identity- 채널 식별 정보(팀 ID·채널 ID)message.mentions- 멘션 정보message.attachments- 첨부 파일 정보message.replies- 답장 메시지message.hosted_contents- 인라인 콘텐츠(이미지 등)message.roles- 액세스 권한
최상위 레벨 필드(채널 메시지의 경우에만 설정됩니다):
team- 팀(Microsoft Graph의Group오브젝트)channel- 채널(Microsoft Graph의Channel오브젝트)parent- 상위 메시지(답장 메시지인 경우에 설정)
데이터 스토어별 추가 파라미터
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 커넥터
데이터 저장소 크롤링 - 데이터 스토어 설정 가이드