eDiscovery
Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다.
전자 증거 개시(eDiscovery라고도 함)는 법적 사건에서 증거로 사용할 목적으로 전자 데이터를 검색하는 절차를 말합니다.
이 페이지에서는 eDiscovery를 위해 Mattermost에서 데이터를 추출하는 방법을 설명합니다. Mattermost에서 사용자 게시물 데이터를 추출하는 데 사용할 수 있는 주요 방법은 세 가지입니다.
각 방법은 아래에서 자세히 설명합니다.
소송 보존 조치(리걸 홀드라고도 함)는 eDiscovery의 확장 개념으로, 기록을 검색하는 것에 더해 현재 또는 향후 법적 사건과 관련이 있다고 판단될 수 있는 전자 저장 정보나 종이 문서를 폐기하지 못하도록 하는 조치입니다.
Mattermost 컴플라이언스 내보내기
Mattermost Enterprise에는 컴플라이언스 리포트 내보내기 기능이 있습니다.
Mattermost는 메시지 내용과 해당 메시지를 볼 수 있었던 사람을 포함한 컴플라이언스 관련 데이터를 Actiance XML, Global Relay EML, 일반 CSV의 세 가지 형식으로 내보낼 수 있습니다. 리포트는 지연 실행 방식으로 구성해 공유 위치에 저장할 수 있습니다.
내보내기 기능과 리포팅 설정 방법에 대한 자세한 내용은 관련 문서를 참고하세요.
Mattermost RESTful API
Mattermost API를 사용하면 Mattermost Enterprise에 포함된 CSV 컴플라이언스 형식으로 사용자의 게시물을 내보낼 수 있습니다. 다음 섹션에서는 API를 사용해 특정 사용자에 대한 리포트를 생성하고 가져오는 방법을 설명합니다. Mattermost API의 전체 문서는 https://api.mattermost.com 에서 확인할 수 있습니다.
API를 사용하려면 먼저 여기에 설명된 방법으로 인증해야 합니다. 인증에 사용하는 계정에는 manage_system 권한이 있어야 합니다. curl을 사용하는 경우 다음 명령어로 인증할 수 있습니다.
curl -i -d '{"login_id": "username", "password": "password"}' https://yourmattermosturl/api/v4/users/login
Mattermost는 다음과 같은 응답을 반환합니다.
HTTP/2 200
server: nginx/1.10.3 (Ubuntu)
date: Thu, 12 Jul 2018 14:43:45 GMT
content-type: application/json
content-length: 679
set-cookie: MMAUTHTOKEN=yi94pwci6ibjfc9phbikhqutbe; Path=/; Expires=Sat, 11 Aug 2018 14:43:45 GMT; Max-Age=2592000; HttpOnly; Secure
set-cookie: MMUSERID=qfjzamfg47bu9gsyyfbqjk4s6a; Path=/; Expires=Sat, 11 Aug 2018 14:43:45 GMT; Max-Age=2592000; Secure
token: yi94pwci6ibjfc9phbikhqutbe
x-request-id: 5y45pxyfxpb8updtge1zts39he
x-version-id: 5.0.0.5.0.1.18c0fbd759664a85fe95132bb7fc04cf.true
응답으로 전달된 token 값을 이후 API 요청의 Authorization 헤더에 Bearer 방식으로 포함하세요. 예를 들면 다음과 같습니다.
curl -i -H 'Authorization: Bearer yi94pwci6ibjfc9phbikhqutbe' http://yourmattermosturl/api/v4/users/me
Mattermost에 인증한 뒤에는 Compliance API로 새 컴플라이언스 리포트를 생성할 수 있습니다. 아래 curl 예시는 인증 토큰을 기반으로 요청을 보내, 이메일 주소가 craig@mattermost.com인 사용자에 대해 2017년 12월 31일 오후 8시 15분부터 2018년 12월 31일 오후 8시 15분까지의 게시물을 포함하는 리포트를 Mattermost에 생성하도록 요청하는 방법을 보여 줍니다.
JSON 페이로드의 데이터는 Unix Epoch 형식이어야 합니다. 필요한 형식으로 변환하거나 되돌릴 때는 https://www.epochconverter.com/ 같은 도구가 유용합니다.
curl --header "Content-Type: application/json" \
--request POST \
-H 'Authorization: Bearer yi94pwci6ibjfc9phbikhqutbe' \
--data '{"id":"","create_at":0,"user_id":"craig","status":"","count":0,"desc":" ","type":"","start_at":1514769359000,"end_at": 1546305359000,"keywords":"","emails":"craig@mattermost.com"}' \
https://yourmattermosturl/api/v4/compliance/reports
요청이 성공하면 Mattermost는 다음과 같은 메시지를 반환하며, 이는 서버가 컴플라이언스 내보내기 프로세스를 실행 중임을 나타냅니다.
{"id":"du6kektczifqxexeroywpz3nbc"," create_at":1531444617901, "user_id":"qfjzamfg47bu9gsyyfbqjk4s6a", "status":"running", "count":0, "desc":" ", "type":"adhoc", "start_at":1514769359000, "end_at":1546305359000, "keywords":"", "emails":"craig@mattermost.com"}
내보내기 프로세스가 완료되면(실행 시간은 반환할 레코드 수와 현재 서버 부하에 따라 달라집니다), 리포트가 담긴 zip 파일을 가져와 다운로드하기 위해 Mattermost에 다음과 같은 curl 요청 형태로 HTTP 요청을 한 번 더 보내야 합니다.
curl --request GET \
-H 'Authorization: Bearer p9o1qx457fbc9gdrn39z9ah59o' \
--data '{"status_code":0,"id":"du6kektczifqxexeroywpz3nbc","message":"","requestion_id":""}' \
--output report-zip.zip \
https://yourmattermosturl/api/v4/compliance/reports/du6kektczifqxexeroywpz3nbc/download
요청을 보낼 때는 리포트를 생성했을 때 Mattermost가 반환한 응답에서 리포트 ID를 가져와야 합니다. 또한 파일을 저장할 이름도 지정해야 합니다. 위 예시에서는 파일이 report-zip.zip으로 저장됩니다.
Mattermost 데이터베이스
표준 SQL을 사용해 Mattermost 데이터베이스에서 메시지를 선택하는 것은 매우 간단합니다. 사용자 이름을 알고 있다면 다음 쿼리로 해당 사용자의 모든 메시지를 선택할 수 있습니다.
SELECT * FROM mattermost.Posts WHERE UserId = (SELECT Id FROM mattermost.Users WHERE Username = 'username');
메시지가 게시된 날짜와 시각을 기준으로 쿼리 결과를 제한하려면 위 쿼리를 다음과 같이 수정할 수 있습니다.
SELECT * FROM mattermost.Posts WHERE UserId = (SELECT Id FROM mattermost.Users WHERE Username = 'username' AND CreateAt > 1530405832000 AND CreateAt < 1532997832000);
Mattermost 데이터베이스는 날짜와 시각 타임스탬프를 Unix Epoch 형식으로 저장합니다. 필요한 형식으로 변환하거나 되돌릴 때는 Epoch Converter 같은 도구가 유용합니다.