개인정보 & 권한
Maekon은 사용자의 활동 스트림은 사용자의 것이라는 원칙 위에 설계되었습니다. 이 페이지는 무엇이 캡처되고, 어디에 저장되며, 무엇이 네트워크를 건너고, 어떻게 회수할 수 있는지를 정리합니다.
로컬에 캡처되는 항목
| 출처 | 저장 위치 | 보존 기간 |
|---|---|---|
| 활성 윈도우 제목 + 번들 ID | SQLite (events 테이블) | 30일, 500MB 상한 |
| 화면 프레임 | 로컬 파일 저장소 (frames/) | 30일, 500MB 상한 |
| 시스템 메트릭 (CPU/메모리/네트워크) | SQLite | 30일, 500MB 상한 |
| 마우스/키보드 패턴 (키스트로크 아님) | SQLite | 30일 |
| OCR 텍스트 | SQLite (FTS5 인덱싱) | 30일 |
| 생성된 제안 + 사용자 피드백 | SQLite | 무기한 (수동 삭제 시까지) |
maekon-storage의 데일리 정리 루프가 보존 기간을 강제합니다. 수동 삭제는 maekon data purge --older-than 7d 로 실행합니다.
기본적으로 기기를 떠나는 항목
Maekon이 기본적으로 전송하는 데이터는 다음과 같습니다.
- 인증 —
api_url로 전송하는 로그인/리프레시용 JWT 토큰 - 제안 구독 — gRPC 스트림으로 서버 푸시를 수신 (사용자 컨텍스트는 로컬에 머무르며, 피드백만 서버로 흐름)
- 텔레메트리 — 명시적으로 활성화한 경우에만 (아래 참조)
Maekon이 기본적으로 전송하지 않는 항목:
- ❌ 원본 화면 프레임 또는 OCR 텍스트
- ❌ 윈도우 제목 또는 앱 이름
- ❌ 키스트로크 또는 입력 패턴
- ❌ 파일 경로 또는 파일시스템 목록
- ❌ 네트워크 트래픽 메타데이터
서버 기반 지식 그래프(설정 → 동기화 → Server-side context) 옵션을 활성화하면, 동일 PII 필터가 적용된 redacted 활동 타임라인이 업로드됩니다.
텔레메트리
텔레메트리는 기본 비활성화 상태이며, 명시적 동의(privacy.consent_record, GDPR 17/20조 준수)를 통해서만 켜집니다. 활성화 시 다음을 전송합니다.
- 크래시 덤프 (
error_report.crash_capture가 켜진 경우) - 앱 버전 + OS + 커밋 SHA (익명 빌드 식별자 — 기기 핑거프린트 아님)
- 기능 사용 카운터 집계 (어떤 UI 패널을 열었는지만, 내용은 아님)
비활성화: 설정 → 개인정보 → 텔레메트리 → Off. ConsentManager가 즉시 동의를 회수하며 이후 어떤 이벤트도 기기를 떠나지 않습니다.
Maekon이 요청하는 권한
| 권한 | 용도 | 회수 방법 |
|---|---|---|
| 화면 기록 (macOS) | 화면 캡처 | 시스템 환경설정 → 개인정보 보호 및 보안 |
| 손쉬운 사용 (macOS) | 활성 윈도우 감지, AX 트리 | 시스템 환경설정 → 개인정보 보호 및 보안 |
| 입력 모니터링 (macOS) | 마우스/키보드 패턴 추적 | 선택 사항 — 거부 시 해당 기능만 비활성화 |
| UI Automation (Windows) | 활성 윈도우 + UIA element tree | 기본 부여, 별도 시스템 UI 없음 |
| X11 / Wayland (Linux) | 윈도우 감지 | 항상 켜짐, Wayland는 XWayland fallback |
| 알림 | 트레이 + 데스크톱 알림 | OS 수준 토글 |
권한을 회수해도 Maekon은 중단되지 않습니다 — 해당 기능만 자동 비활성화됩니다. 예를 들어 화면 기록 권한을 회수하면 캡처는 멈추지만 타임라인 / 시스템 메트릭은 계속 작동합니다.
샌드박싱
모든 자동화 액션은 maekon-sandbox-worker (별도 프로세스) 에서 실행되며 플랫폼 수준의 격리가 적용됩니다.
- Windows —
JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE가 적용된 Job Object - Linux — seccomp 필터 + Landlock LSM (프로파일 외 syscall 차단)
- macOS — App Sandbox 프로파일
worker가 크래시하거나 프로파일을 위반해도 부모 프로세스는 영향을 받지 않습니다.
삭제권 (Right-to-deletion)
GDPR 17조 ("삭제권")을 종단간으로 구현했습니다.
# 모든 로컬 데이터 삭제
maekon data wipe --confirm
# 서버 측 상태 삭제 (서버 사용 시)
maekon account delete --confirm
두 명령어 모두 삭제 직전에 감사 이벤트(compliance.data_erasure_requested)를 발생시켜 법적 보존(legal hold) 목적의 기록을 남깁니다.
함께 보기
- 보안 정책 (
SECURITY.md) — 취약점 제보 절차 - Maekon 개인정보 처리방침 (
maekon.dev/privacy) — 법적 수준의 요약