데이터 유출 대응
Entry, Enterprise Advanced 플랜에서 사용할 수 있습니다.
데이터 유출 대응 기능은 우발적인 데이터 유출을 예방하고, 협업을 방해하지 않으면서 시스템 관리자가 잠재적 유출에 신속히 대응할 수 있도록 돕습니다. 이 기능을 활성화하면 Mattermost 사용자가 민감하거나 규제 대상이거나 부적절한 정보를 담았을 수 있는 메시지를 신고할 수 있고, 지정된 콘텐츠 검토자가 이를 평가해 격리된 메시지를 삭제하거나 기각하는 등 적절한 조치를 취할 수 있습니다.
모든 팀 구성원이 민감 데이터 노출에 대한 1차 방어선이 되도록 함으로써, 데이터 유출 대응 기능은 미션 크리티컬한 보안 배포를 강화하고 조직·규제 데이터 취급 기준의 준수를 뒷받침합니다.
시작하기 전에
Mattermost 시스템 관리자여야 합니다. 격리된 메시지를 검토할 콘텐츠 검토자를 정하고, 검토 중인 격리 메시지를 Mattermost 사용자에게 숨길지 여부를 결정해야 합니다.
활성화
데이터 유출 대응 기능은 기본적으로 활성화되어 있지 않습니다. 활성화하려면 다음과 같이 하세요.
- System Console > Site Configuration > Data Spillage Handling(시스템 콘솔 > 사이트 구성 > 데이터 유출 대응)으로 이동합니다.
- Enable Data Spillage Handling을 True로 설정합니다.
또는 config.json 파일이나 환경 변수로 데이터 유출 대응 기능을 구성할 수도 있습니다.
구성
- Content Reviewers 아래에서 격리된 콘텐츠를 검토할 사람을 지정합니다.
- Same reviewers for all teams: True로 설정하면 모든 팀에 하나의 전역 검토자 목록을 적용하고, False로 설정하면 팀별로 검토자를 구성합니다.
- Reviewers: 입력을 시작해 콘텐츠 검토자로 지정할 사용자를 검색합니다.
중요검토자를 신중하게 선정하세요. 검토자 역할을 부여하면 민감할 수 있는 정보에 접근할 수 있게 되며, 비공개 채널의 데이터가 노출될 수 있습니다.
- 전역 검토자는 자신이 멤버가 아닌 비공개 채널을 포함해 모든 팀과 채널의 격리된 메시지를 볼 수 있습니다.
- 팀별 검토자는 자신이 멤버가 아닌 비공개 채널을 포함해, 배정된 팀의 격리된 메시지를 볼 수 있습니다.
- Additional reviewers: 선택적으로 다음을 포함할 수 있습니다.
- System Administrators: 시스템 관리자는 자신이 속한 모든 팀의 격리된 메시지를 받습니다.
- Team Administrators: 팀 관리자는 각자의 팀에 대한 격리된 메시지를 받습니다.
- Notification Settings 아래에서 콘텐츠가 격리되거나 검토될 때 격리 워크플로의 각 단계에서 누가 알림을 받을지 지정합니다.
- Notify when content is quarantined: 검토자, 작성자.
- Notify when a reviewer is assigned: 검토자.
- Notify when content is removed: 검토자, 작성자, 신고자.
- Notify on dismissal: 검토자, 작성자, 신고자.
모든 알림은 Data Spillage Bot이 다이렉트 메시지로 전송합니다.
- Additional Settings 아래에서 격리 워크플로의 동작 방식을 구성합니다.
- Reasons for quarantine: 사용자에게 표시되는 격리 대화 상자의 사전 정의 사유 항목을 정의합니다(예: Classification mismatch, Need-to-know violation, Personally identifiable information (PII) exposure, Operational security (OPSEC) concern, Controlled Unclassified Information (CUI) violation).
- Require reporters to add comment: True로 설정하면 사용자가 메시지를 격리할 때 짧은 설명을 반드시 입력해야 합니다.
- Require reviewers to add comment: True로 설정하면 검토자가 격리를 종결할 때 코멘트를 반드시 입력해야 합니다.
- Hide message from channel while it is being reviewed: True로 설정하면 검토가 완료될 때까지 격리된 메시지를 채널에서 자동으로 숨깁니다. 루트 게시물이 격리되면 스레드 전체가 숨겨집니다.
투명성과 책임성을 유지하고 조치에 대한 감사 가능한 기록을 남기려면 Hide message from channel while it is being reviewed를 활성화하고 신고자와 검토자 양쪽에 코멘트를 요구하는 것을 권장합니다.
격리된 메시지 모니터링
사용자가 메시지를 격리하면 Data Spillage Bot이 모든 콘텐츠 검토자에게 다이렉트 메시지를 보냅니다.
Data Spillage Bot의 다이렉트 메시지는 중앙화된 조정 큐 역할을 하며, 검토자는 Mattermost를 벗어나지 않고 격리된 메시지를 확인하고 배정하고 조치할 수 있습니다. 검토자는 이를 통해 잠재적 데이터 유출을 모니터링하고, 대응을 조율하며, 검토 활동에 대한 감사 가능한 기록을 유지할 수 있습니다.
격리된 메시지는 다음 정보를 담은 카드 형식의 메시지로 표시됩니다.
- Quarantined by: 메시지를 신고한 사용자.
- Status: 검토의 현재 상태. 모든 격리 콘텐츠는 Pending 상태에서 시작합니다.
- Reason: 신고자가 선택한 사유(예: Classification mismatch, Need-to-know violation).
- Message preview: 작성자, 타임스탬프, 원래 채널을 포함한 격리 메시지의 일부.
- Reviewer: 현재 해당 메시지 검토에 배정된 사용자(처음에는 Unassigned).
- Channel: 메시지가 원래 게시된 채널의 이름.
- Team: 격리된 메시지의 팀 컨텍스트.
- Comment: 신고자가 제공한 맥락 정보.
- Post ID: 감사 목적으로 사용하는 원본 메시지의 시스템 식별자.
검토자는 View details를 선택해 다음과 같은 조치를 취할 수 있습니다.
- 격리된 메시지 검토를 담당할 Reviewer를 배정합니다.
- Remove message: 격리된 메시지를 원래 채널에서 모든 사용자에 대해 영구 삭제합니다. 격리된 메시지의 상태가 Removed로 바뀝니다.
- Keep message: 격리를 기각하고, 메시지가 숨겨져 있었다면 복원합니다. 격리된 메시지의 상태가 Retained로 바뀝니다.
- Add a comment: 필요한 경우 결정 사유를 기록합니다.
- Generate a report: 기록 보관이나 사고 대응을 위해 격리된 메시지와 검토 활동에 대한 보고서를 내려받습니다. 자세한 내용은 격리 메시지 보고서 생성을 참고하세요.
- Download exposure report: Mattermost v11.11부터, 격리된 메시지가 채널에 표시되어 있는 동안 그 메시지에 노출되었을 수 있는 사용자 목록 보고서를 내려받습니다. 자세한 내용은 게시물 노출 보고서 생성을 참고하세요.
조치를 취하면 Status 필드가 자동으로 갱신됩니다. Data Spillage Bot은 데이터 유출 대응 구성에 따라 신고자, 작성자, 다른 검토자에게 후속 알림을 보냅니다.
격리 메시지 보고서 생성
검토자는 격리된 메시지의 전체 맥락과 관련 검토 활동을 담은 보고서를 내려받을 수 있습니다. 보고서는 기록 보관, 사고 대응, 그리고 메시지가 영구 삭제되기 전에 증거를 보존하는 데 유용합니다.
보고서는 다음 지점 중 어디에서든 생성할 수 있습니다.
- 격리 메시지 상세 화면에서: 메시지 상세 패널에서 Download report를 선택합니다. 이 옵션은 Pending, Reviewer Assigned, Removed, Retained 등 격리 상태와 관계없이 사용할 수 있습니다.
- Remove message 흐름에서: Remove message를 선택하면 확인 대화 상자에 Download quarantined message report 체크박스가 기본 선택된 상태로 표시됩니다. 이 체크박스가 선택되어 있으면 Mattermost가 메시지를 영구 삭제하기 전에 보고서를 생성해 내려받습니다. 이 안전장치 덕분에 메시지 내용이 삭제되기 전에 기록이 사용자 기기에 보존됩니다.
- Keep message 흐름에서: Keep message를 선택하면 같은 체크박스가 확인 대화 상자에 표시됩니다. 이 체크박스가 선택되어 있으면 유지 조치가 진행되는 동안 Mattermost가 백그라운드에서 보고서를 생성해 내려받습니다.
Remove message나 Keep message 흐름에서 보고서 내려받기를 건너뛰기로 하면, Mattermost가 보고서 없이 진행할 것인지 확인을 요청합니다. 건너뛴 결정은 감사 로그에 기록됩니다.
보고서 생성이 실패하면(예: 네트워크 중단이나 세션 타임아웃) 대화 상자에 오류가 표시되고 재시도 옵션이 제공됩니다. 보고서를 건너뛰고 조치를 진행하거나, 취소한 뒤 나중에 메시지 상세 화면에서 보고서를 내려받을 수도 있습니다.
검토자가 격리 메시지 보고서나 게시물 노출 보고서를 생성할 때마다 Data Spillage Bot이 모든 콘텐츠 검토자에게 알립니다. 유출 가능성이 있는 데이터의 사본이 확보될 때마다 감사 가능한 기록이 남도록 하기 위해서입니다.
메시지를 삭제하기 전에 보고서를 생성하는 것을 권장합니다. 메시지를 삭제하면 그 내용, 첨부 파일, 편집 기록이 영구 삭제되어 복구할 수 없습니다.
보고서 내용과 형식
각 격리 메시지 보고서는 YAML 메타데이터 파일, 원본 첨부 파일, 그리고 Mattermost v11.11부터는 CSV 노출 보고서를 담은 ZIP 아카이브입니다. 메타데이터 파일에 YAML을 사용하는 이유는 사람이 읽기 쉬우면서 기계로도 파싱할 수 있어, 수동 검토는 물론 다운스트림 컴플라이언스·사고 대응 도구로 수집하기에도 적합하기 때문입니다. 노출 보고서는 검토자가 스프레드시트에서 바로 열 수 있도록 CSV 형식입니다.
보고서 아카이브에는 격리된 메시지 내용, 첨부 파일, 그리고 관련된 사용자들의 사용자 ID, 사용자명, 이메일 주소가 들어 있습니다. 내려받은 보고서는 해당 민감도의 데이터를 다루도록 승인된 위치를 통해서만 저장·전송하고, 접근 권한을 꼭 필요한 사람으로 제한하며, 조직의 보존 및 안전한 삭제 요구 사항을 적용하세요.
아카이브의 구조는 다음과 같습니다.
/
├── report_metadata.yaml
├── content_review.yaml
├── exposure_report.csv
├── post/
│ ├── post.yaml
│ └── attachments/
│ └── <original attachment files>
└── edit_history/
└── <edit_post_id>/
├── post.yaml
└── attachments/
└── <original attachment files>
- report_metadata.yaml: 보고서 자체를 식별합니다. 보고서를 생성한 검토자의 사용자 ID와 사용자명, 생성 타임스탬프, 아카이브 형식 버전(향후 릴리스에서 아카이브 형식이 바뀔 경우의 상위 호환성을 위해 사용)이 들어 있습니다. Mattermost v11.11에서 도입된 아카이브 형식 버전 1.1은 아카이브에
exposure_report.csv를 추가했습니다. - content_review.yaml: 데이터 유출 이벤트를 기록합니다. 신고자의 사용자 ID, 사용자명, 선택한 사유, 코멘트, 신고 타임스탬프, 검토 중 메시지를 숨겼는지 여부가 들어 있으며, 격리가 종결된 뒤에는 검토자의 사용자 ID, 사용자명, 코멘트, 조치 타임스탬프도 포함됩니다. 종결되지 않은 격리에서는 검토자 필드가 생략됩니다.
- exposure_report.csv: 격리된 메시지가 채널에 표시되어 있는 동안 그 메시지에 노출되었을 수 있는 사용자 목록입니다. 검토자가 개별적으로 내려받을 수 있는 보고서와 동일한 내용이며, 자체
Report version메타데이터 줄을 포함해 형식도 같습니다. 노출 보고서 버전은 아카이브 형식 버전과 별개의 계약입니다. 아카이브 형식 버전 1.1은 노출 보고서 버전 1.0을 담습니다. 각 열과 해석 방법은 노출 보고서 내용을 참고하세요. - post/post.yaml: 격리된 메시지를 기술합니다. 게시물 ID, 작성자 ID, 작성자 이름, 작성자 이메일, 메시지 내용, 채널 ID, 채널 표시 이름, 팀 ID, 팀 표시 이름, 생성 및 갱신 타임스탬프, 고정 여부, 루트 ID, 게시물 속성, 게시물 메타데이터, 답글 수(루트 게시물의 경우), 편집 기록 게시물 ID의 정렬된 목록이 들어 있습니다.
- post/attachments/: 격리된 메시지에 첨부된 원본 파일이 그대로 포함됩니다.
- edit_history/<edit_post_id>/: 메시지의 이전 버전마다 하나의 하위 디렉터리가 있으며, 각각 기본 게시물 디렉터리와 동일한 형식의
post.yaml과attachments/디렉터리를 포함합니다.
중복을 피하기 위해 첨부 파일은 파일 ID를 기준으로 아카이브 전체에서 중복 제거됩니다. 고유한 첨부 파일은 정확히 한 번만 나타나며, 메시지의 현재 버전에 존재하면 기본 게시물 아래에, 그렇지 않으면 그 파일을 참조한 가장 이른 편집 기록 항목 아래에 놓입니다.
게시물 노출 보고서 생성
Mattermost v11.11부터 검토자는 게시물 노출 보고서를 생성할 수 있습니다. 이는 격리된 메시지가 채널에 표시되어 있는 동안 그 메시지에 노출되었을 수 있는 사용자를 나열한 CSV 파일입니다. 이 보고서는 검토자가 잠재적 데이터 유출의 영향 범위를 파악하고 후속 조치가 필요한 대상을 판단하는 데 도움이 됩니다.
게시물 노출 보고서는 격리된 메시지에 노출되었을 가능성이 있는 사람을 식별합니다. 누군가 실제로 그 메시지를 읽었다는 증거가 아닙니다.
- 이 보고서는 채널 멤버십 기록과 채널 읽음 타임스탬프에서 파생됩니다. 두 가지 모두 메시지가 실제로 화면에 표시되었는지는 기록하지 않습니다.
- 메시지가 게시된 이후의 Last viewed channel at 타임스탬프는 그 사용자가 메시지가 표시된 동안 채널을 열었다는 뜻입니다. 메시지가 그 사용자에게 표시되었다거나 그것을 읽었다는 뜻은 아닙니다.
- 이 보고서는 메시지가 누군가에게 도달할 수 있는 모든 경로를 다루지 않습니다. 푸시 알림과 이메일 알림은 채널을 한 번도 열지 않은 사용자에게도 메시지 내용을 전달할 수 있고, 공개 채널의 콘텐츠는 채널에 참여하지 않아도 접근할 수 있습니다.
- 이 보고서는 조사의 출발점으로 다루어야 하며, 컴플라이언스나 징계 판단의 유일한 근거로 삼아서는 안 됩니다.
이 보고서로 무엇을 확인할 수 있고 무엇을 확인할 수 없는지는 노출 보고서의 한계를 참고하세요.
게시물 노출 보고서는 다음 두 지점 중 한 곳에서 얻을 수 있습니다.
- 격리 메시지 상세 화면에서: View details를 선택한 다음 Exposure report 행에서 Download exposure report를 선택합니다. 파일은
post-exposure-<post_id>-<timestamp>.csv이름으로 내려받아집니다. - 격리 메시지 보고서에서: Download report로 생성되는 ZIP 아카이브에 동일한 데이터가
exposure_report.csv로 포함되어 있습니다.
게시물 노출 보고서는 콘텐츠 검토자만 생성할 수 있습니다. 내려받은 노출 보고서에는 보고 대상 사용자 전원의 사용자명과 이메일 주소가 들어 있으므로, 격리 메시지 보고서 아카이브와 동일한 요구 사항에 따라 취급하세요.
노출 보고서 내용
보고서의 각 행은 메시지가 게시된 시점과 격리된 시점 사이 어느 시점에든 채널 멤버였던 사용자 한 명이며, 채널 멤버십 기록에서 가져옵니다. 이 행 집합은 채널 멤버십을 통해 노출될 수 있었던 사용자 전체 집단입니다. 어떤 경로로든 노출될 수 있었던 사용자 전체 집단은 아닙니다.
이 보고서는 메시지를 실제로 보았을 가능성이 높은 사용자만 따로 추린 목록을 만들지 않습니다. 대신 모든 행이 가능성을 판단하는 데 필요한 채널 읽음 상태와 계정 활동 타임스탬프를 담고 있어, 검토자가 겹치는 두 목록을 대조하는 대신 단일 표를 정렬하고 필터링하며 트리아지할 수 있습니다.
보고서 메타데이터는 헤더 행 위에 #으로 시작하는 주석 줄로 기록되므로, 별도의 메타데이터 파일 없이도 파일 자체가 자신을 설명합니다. 대부분의 도구는 이 줄을 건너뛸 수 있습니다. 예를 들어 Go의 csv.Reader에서 Comment 필드를 '#'로 설정하거나, pandas에서 comment='#'를 사용하면 됩니다.
# Report version: 1.0
# Post ID: 8xk3mq7pzjfytr4wn6hb2dcvse
# Channel: Engineering (jr9v2thq5xkfcm8bwd63pnysa4)
# Post created at: 2026-07-14T09:12:03Z
# Flagged at: 2026-07-14T11:48:37Z
# Generated at: 2026-07-14T12:05:19Z
# Total users: 3
User ID,Username,Email,Guest,Remote user,Deactivated,Was channel member,Last viewed channel at (YYYY-MM-DDTHH:MM:SSZ),User last activity time (YYYY-MM-DDTHH:MM:SSZ)
4tqzn8mhs2xdwc7bkgv6yrfpj3,alice.chen,alice.chen@example.com,No,No,No,Yes,2026-07-14T10:31:52Z,2026-07-14T11:59:08Z
mw6cbyx9rntk3f7zqhdps2gjv5,bhavna.rao,bhavna.rao@example.com,No,No,No,Yes,2026-07-02T16:20:44Z,2026-07-14T12:01:44Z
zd7pfk2vqn6ymxb3wcjs9htgr8,carlos.mendes,carlos.mendes@example.com,No,No,Yes,Yes,Unknown,No sessions found
Post created at과 Flagged at은 멤버십을 판정하는 기준이 되는 보고 대상 기간의 시작과 끝입니다. Total users는 파일에 담긴 행의 수로, 계정 레코드가 더 이상 존재하지 않아 건너뛴 사용자를 제외한 뒤 집계합니다.
보고서에는 다음 열이 포함됩니다.
- User ID: 사용자의 시스템 식별자.
- Username: 사용자의 Mattermost 사용자명.
- Email: 사용자의 이메일 주소.
- Guest: 게스트 계정이면
Yes. - Remote user: 공유 채널을 통해 원격 서버에 속한 사용자이면
Yes. 원격 서버의 콘텐츠는 로컬에서 메시지를 숨기거나 삭제해도 영향을 미칠 수 없는 범위에 있습니다. - Deactivated: 사용자 계정이 비활성화되었으면
Yes. 사용자를 비활성화해도 이미 발생한 노출이 되돌려지지는 않으므로, 비활성화된 계정도 보고 대상에 포함됩니다. - Was channel member: 노출 보고서 버전 1.0에서는 항상
Yes입니다. 모든 행이 정의상 채널 멤버이며, 이 열은 다른 노출 경로를 추가할 수 있는 향후 보고서 버전을 위해 예약되어 있습니다. - Last viewed channel at (YYYY-MM-DDTHH:MM:SSZ): 해당 채널에 대한 사용자의 현재 마지막 열람 타임스탬프이며, 메시지가 격리된 시점에 찍은 스냅숏이 아닙니다.
Unknown은 사용자가 더 이상 채널 멤버가 아니어서 읽음 상태가 존재하지 않는다는 뜻입니다.N/A는 멤버이지만 채널을 한 번도 연 적이 없다는 뜻입니다. - User last activity time (YYYY-MM-DDTHH:MM:SSZ): 이 채널이 아니라 Mattermost 전체에서의 가장 최근 세션 활동입니다.
No sessions found는 해당 사용자의 세션 레코드가 없다는 뜻이며, 비활성화된 계정은 항상 이에 해당합니다.
후속 조치가 필요한 대상을 파악하려면 각 행의 Last viewed channel at 값을 보고서 메타데이터의 Post created at 및 Flagged at 값과 비교하세요.
- Post created at과 Flagged at 사이: 사용자가 메시지가 표시된 동안 채널을 열었습니다. 노출 가능성이 있으므로 후속 조치에서 우선 다루어야 합니다.
- Flagged at 이후: 사용자의 가장 최근 채널 열람이 보고 대상 기간 밖에 있으므로, 메시지가 표시된 동안 채널을 열었다는 것을 입증하지 못합니다. 가장 최근 열람만 기록되기 때문에 노출 가능성을 배제할 수도 없습니다. 구성에 따라 검토 중인 격리 메시지를 숨기지 않는다면, 이 타임스탬프 시점에도 메시지가 여전히 표시되고 있었을 수 있습니다.
- Post created at 이전: 사용자는 채널 멤버였지만 메시지가 게시되기 전 이후로 채널을 열지 않았습니다. 채널에서의 노출 가능성은 낮지만 배제되지는 않습니다. 메시지 내용이 푸시 알림이나 이메일 알림을 통해 사용자에게 도달했을 수 있습니다.
- Unknown 또는 N/A: 해당 사용자의 채널 읽음 상태가 존재하지 않습니다. 노출 여부를 판단할 수 없습니다. 이 값을 사용자가 메시지를 보지 않았다는 확인으로 해석하지 마세요.
노출 보고서는 검토 초기에 생성하세요. Last viewed channel at은 실시간 채널 읽음 상태를 반영하므로, 격리가 종결된 뒤를 포함해 사용자가 채널을 다시 열 때마다 값이 바뀝니다.
행은 사용자명, 그다음 사용자 ID 순으로 정렬됩니다. 이 순서는 보고 대상 사용자 집단과 그들의 사용자명이 바뀌지 않는 동안에만 안정적입니다. 사용자명 변경이나 계정 삭제가 발생하면 같은 메시지에 대해 생성한 두 보고서 사이에서 행 순서나 행 수가 달라질 수 있으므로, 다운스트림 도구는 행 위치가 아니라 User ID로 사용자를 매칭해야 합니다. 셀 값도 안정적이지 않습니다. Last viewed channel at과 User last activity time은 모두 실시간 상태를 반영하므로, 서로 다른 시점에 생성한 두 보고서의 값이 다를 수 있습니다. Yes, No, Unknown, N/A, No sessions found를 포함한 열 제목과 값은 보고서를 생성한 검토자의 언어로 지역화됩니다. 다운스트림 도구는 영어 문자열에 의존해 매칭해서는 안 됩니다.
노출 보고서의 한계
이 보고서는 채널 멤버십 기록과 채널 읽음 상태에서 파생되며, 이로 인해 확인할 수 있는 범위가 제한됩니다.
- 알림 전달은 다루지 않습니다: 사용자는 채널을 한 번도 열지 않고도 메시지 내용에 노출될 수 있습니다. 푸시 알림 내용과 이메일 알림 내용 설정에 따라 푸시 알림과 이메일 알림에 메시지 텍스트가 포함될 수 있습니다. 알림은 보고서에 반영되지 않으므로, Last viewed channel at 값이 이른 시점이라고 해서 노출을 배제할 수는 없습니다.
- 멤버십 없이 공개 채널에 접근한 경우는 다루지 않습니다: 이 보고서는 채널 멤버만 나열합니다. 공개 채널에서는 채널에 참여한 적 없는 사용자에게도 메시지가 도달할 수 있습니다. 다른 채널에 그 메시지 링크가 공유될 때 렌더링되는 게시물 퍼머링크 미리보기를 통하거나, 멤버십 없이 공개 채널 검색이 활성화된 경우 검색을 통해서입니다. 이런 사용자는 보고서에 나타나지 않습니다.
- 봇은 제외됩니다: 봇 계정은 보고서에서 생략됩니다.
- 메시지가 격리된 이후에 합류한 사용자는 제외됩니다: 멤버십은 보고 대상 기간에 대해서만 판정합니다.
- 나갔다가 다시 참여한 사용자는 한 번만 나타납니다: 이 보고서는 사용자 목록이므로 여러 멤버십 기간이 하나의 행으로 합쳐집니다. 개별 참여·탈퇴 시각은 보고되지 않습니다.
- 나간 뒤 다시 참여하지 않은 사용자는 포함됩니다: 이전 멤버에 대해서는 채널 읽음 상태가 남지 않으므로 Last viewed channel at이
Unknown으로 보고됩니다. - 게스트와 원격 사용자는 포함됩니다: 둘 다 각자의 열에서 식별됩니다.
- 보관된 채널도 지원됩니다: 보관된 채널의 멤버도 평소와 같이 보고됩니다.
- 삭제된 계정은 생략됩니다: 사용자의 계정 레코드가 더 이상 존재하지 않으면 그 사용자는 건너뛰며, Total users는 건너뛴 뒤의 수를 반영합니다.
노출 보고서를 생성할 때는 보고서에 포함된 사용자 각각에 대해 세션 활동을 개별적으로 조회하며, 보고서 전체가 메모리에서 조립된 뒤에 내려받기가 시작됩니다. 멤버가 수천 명인 채널에서는 생성에 그만큼 더 오랜 시간이 걸립니다.
삭제된 메시지
검토자가 격리된 메시지를 영구 삭제하면 해당 메시지와 관련된 모든 데이터가 데이터베이스와 파일 시스템에서 삭제되어 복구할 수 없습니다. 삭제 범위는 다음과 같습니다.
- 게시물 레코드: 메시지 텍스트와 관련 게시물 속성. 게시물이 삭제되기 전에 내용이 스크럽됩니다.
- 첨부 파일: Mattermost 파일 저장소(로컬, S3 등)에 저장된 파일.
- 첨부 파일 레코드: 파일 이름, ID, 저장소 링크를 포함한 해당 메시지의 파일 정보 데이터베이스 행.
- 편집 기록: 메시지의 모든 이전 리비전과 각 리비전의 파일 메타데이터.
- 우선순위 메타데이터: 메시지 우선순위나 중요도 설정.
- 지속 알림: 메시지에 연결된 반복 알림.
- 확인 응답: 메시지를 확인한 사용자 기록.
- 리마인더: 메시지에 대해 생성된 리마인더.
- 스레드, 답글, 반응: 메시지와 연관된 스레드 레코드, 답글, 반응 데이터.
게시물 삭제 보고서
검토자가 Remove message를 선택하면 Data Spillage Bot이 해당 격리 메시지에 대한 검토자의 콘텐츠 검토 스레드에 Post Deletion Report를 게시합니다. 이 보고서는 최초 격리 알림을 받은 모든 검토자에게 전달되며 각 검토자의 언어로 지역화됩니다. 각 게시물에는 인라인으로 렌더링된 짧은 요약과 deletion_report_<post_id>.md 이름의 Markdown 파일로 첨부된 전체 보고서가 포함됩니다.
이 보고서는 메시지와 관련 데이터에 대해 수행된 모든 정리 단계를 기록합니다. 각 단계는 삭제된 메시지에 나열된 데이터 범위와 직접 대응합니다.
- 첨부 파일: 파일 저장소에서 제거된 파일.
- 첨부 파일 레코드: 해당 메시지의 파일 정보 데이터베이스 행.
- 편집 기록: 메시지의 모든 이전 리비전. 각 리비전이 개별 하위 단계로 보고되므로 검토자는 어떤 리비전이 정리되었는지 정확히 확인할 수 있습니다.
- 우선순위 메타데이터: 메시지 우선순위와 중요도 설정.
- 지속 알림: 메시지에 연결된 반복 알림.
- 확인 응답: 메시지를 확인한 사용자 기록.
- 리마인더: 메시지에 설정된 리마인더.
- 스레드, 답글, 반응: 메시지와 연관된 스레드 레코드, 답글, 반응 데이터.
- 게시물 레코드: 게시물 자체. 게시물이 삭제되기 전에 내용이 스크럽됩니다.
각 단계에는 다음 상태 중 하나가 부여됩니다.
- Removed ✅: 데이터가 성공적으로 삭제되었습니다.
- Not applicable ➖: 삭제할 해당 유형의 데이터가 없었습니다.
- Partial ⚠️: 해당 유형의 일부 항목은 삭제되었지만 최소 하나가 실패했습니다. 이 상태는 리비전 하나를 삭제할 수 없을 때 편집 기록에서 가장 자주 나타납니다.
- Failed ❌: 단계가 완료되지 않았습니다. 검토자와 시스템 관리자가 무엇이 잘못되었는지 확인할 수 있도록 보고서에 오류 로그가 포함됩니다.
모든 단계가 Removed 또는 Not applicable이면 추가 조치가 필요하지 않습니다. 이 보고서가 삭제에 대한 감사 가능한 기록 역할을 합니다.
어느 단계든 Partial이나 Failed로 보고되면 보고서에 incomplete 경고가 표시됩니다. 검토자는 시스템 관리자에게 에스컬레이션해야 하며, 시스템 관리자는 단계별 전체 오류 로그가 담긴 첨부 deletion_report_<postId>.md 파일을 사용해 수동으로 조치하고 데이터가 완전히 삭제되었는지 확인할 수 있습니다.
게시물 삭제 보고서는 삭제 후 감사에 대한 단일 진실 공급원입니다. 시스템 콘솔 어디에도 따로 저장되지 않으므로, 보고서가 담긴 검토자 스레드는 조직의 감사 보존 정책에 따라 유지해야 합니다.
모범 사례 권장 사항
데이터 유출 대응 기능을 조직 전체에 도입하기 전에, 이 기능이 우발적인 데이터 유출로부터 사용자와 조직을 함께 보호한다는 점을 알리는 것을 권장합니다. 파일럿 팀에서 시작해 검토자 알림과 워크플로를 검증하고, 이 절차를 기존 데이터 취급 또는 사고 대응 플레이북과 통합하며, 모든 결정이 투명하고 감사 가능하도록 신고자와 검토자의 코멘트를 필수로 요구하세요.