개인정보 처리방침
1. 운영 정보
| 항목 | 값 |
|---|---|
| 서비스명 | Calenber |
| 운영 주체 | 캘린버 |
| 연락처(이메일) | privacy@calenber.com |
| 개인정보 문의 | privacy@calenber.com |
2. 수집하는 개인정보 항목
2-1. 이메일/비밀번호 회원가입
| 구분 | 항목 | 수집 경로 |
|---|---|---|
| 필수 | 이메일 주소 | 회원가입 폼 → Supabase Auth |
| 필수 | 비밀번호 (단방향 해시 저장) | 회원가입 폼 → Supabase Auth |
| 필수 | 사용자 이름 | 회원가입 폼 → profiles 테이블 |
2-2. Google 계정 간편 로그인(One Tap/FedCM 포함)
| 구분 | 항목 | 수집 경로 |
|---|---|---|
| 필수 | Google 계정 이메일 | Google Identity Services ID 토큰 또는 Supabase Auth OAuth → auth.users / profiles |
| 필수 | Google 계정 표시명·프로필 이미지 | 동일 |
| 필수 | Google 내부 계정 ID | 동일 |
2-3. Google Calendar 외부 캘린더 연동(별도 동의)
| 구분 | 항목 | 수집 경로 |
|---|---|---|
| 선택 | Google 계정 ID·이메일·표시명 | Calendar OAuth callback → user_google_integrations |
| 선택 | 연동 캘린더 메타(캘린더 ID, 이름, 타임존, 동기화 토큰) | calendar_subscription_catalogs.config |
| 선택 | Google Calendar 이벤트(제목, 시간, 설명 등) | Google Calendar API 동기화 → 화면 표시와 알림을 위한 제한 범위 이벤트 캐시 |
| 선택 | OAuth 액세스·리프레시 토큰 | user_google_integrations(서버 전용 저장) |
| 선택 | 승인된 API 스코프 목록 | user_google_integrations.scopes |
Google OAuth 스코프: calendar(읽기/쓰기), userinfo.email, userinfo.profile. 로그인용 Google OAuth와 Calendar 연동 OAuth는 별도입니다.
Google 사용자 데이터는 Google API Services User Data Policy( Limited Use requirements 포함)에 따라 연동·동기화·표시 목적으로만 사용하며, 광고·판매·신용 평가 목적으로 사용하지 않습니다.
빠른 조회와 안정적인 동기화를 위해 현재 시점 전후의 일정 제목·시간·설명·위치 등 필요한 필드를 서버에 캐시합니다. 전체 과거 일정을 무제한 수집하지 않으며, 사용자가 명시적으로 연결한 계정에서 조회 가능한 캘린더를 처리합니다. 연결 시 해당 계정의 캘린더가 자동으로 추가되며, 이후 설정에서 개별 캘린더를 숨기거나 제거할 수 있습니다.
2-4. Microsoft Outlook Calendar 연동(별도 동의)
| 구분 | 항목 | 수집 경로 |
|---|---|---|
| 선택 | Microsoft 계정 ID·테넌트 ID·이메일·표시명 | Microsoft OAuth callback → user_microsoft_integrations |
| 선택 | Outlook 캘린더 메타와 제한 범위 일정 데이터 | Microsoft Graph 동기화 → 구독 메타·이벤트 캐시 |
| 선택 | OAuth 액세스·리프레시 토큰과 승인 스코프 | user_microsoft_integrations(서버 전용 암호화 저장) |
Microsoft OAuth 스코프는 User.Read와 Calendars.ReadWrite이며, 재연결 시 기존 승인을 재사용합니다. 빠른 표시와 안정적인 동기화를 위해 현재 시점 전후의 일정 필드만 서버에 캐시하고, 연동 해제 또는 탈퇴 시 토큰·구독 메타·이벤트 캐시를 삭제합니다.
2-5. CalDAV 캘린더 연동(네이버·Apple iCloud, 선택)
| 구분 | 항목 | 수집 경로 |
|---|---|---|
| 선택 | CalDAV 서버 URL·계정 ID(사용자명) | CalDAV 연동 폼 → user_caldav_credentials |
| 선택 | 앱 비밀번호 (AES-256-GCM 암호화 저장, 평문 미저장) | CalDAV 연동 폼 → user_caldav_credentials (encrypted_password) |
| 선택 | CalDAV 이벤트 동기화 캐시(이벤트 제목, 시간, 설명, 위치, UID 등) | CalDAV 서버 동기화 → caldav_event_cache |
앱 비밀번호는 서비스 주 계정 비밀번호와 별개로 발급되는 전용 비밀번호입니다. 서버에서 AES-256-GCM 방식으로 암호화하여 저장하며, CalDAV 서버 통신 시에만 서버 메모리 내에서 복호화됩니다.
동기화 캐시에 저장된 이벤트 데이터는 Calenber 서비스 제공(일정 표시·수정·삭제) 목적으로만 사용하며, 연동 해제 또는 탈퇴 시 즉시 삭제됩니다.
계정 연결이 완료되면 해당 계정에서 조회 가능한 CalDAV 캘린더가 자동으로 추가됩니다. 이용자는 연결 후 설정에서 개별 캘린더를 숨기거나 제거할 수 있습니다.
2-6. iCal URL 구독(선택)
| 구분 | 항목 | 수집 경로 |
|---|---|---|
| 선택 | 비공개 iCal 피드 주소(암호화), 일정 제목·시간· 설명·위치·UID 등 동기화 캐시 | iCal 구독 입력 → 서버 전용 암호화 저장 및 ical_url_event_cache |
피드 주소에 포함될 수 있는 비공개 토큰은 AES-256-GCM으로 암호화하며, 동기화 요청 중 서버 메모리에서만 복호화합니다. 구독 해제 또는 탈퇴 시 피드 정보와 일정 캐시를 삭제합니다.
2-7. 서비스 이용 중 자동 수집
| 구분 | 항목 | 수집 경로 |
|---|---|---|
| 자동 | 캘린더·일정·컬렉션·멤버십 | 서비스 이용 시 DB 저장 |
| 자동 | 일정 변경 이력·알림 기록 | event_history, notifications |
| 자동 | 접속·세션 정보 | Supabase Auth, 서버 로그 |
2-8. 스포츠·기타 구독(선택)
경기 일정·공휴일 등 구독 콘텐츠 본문은 외부 공개 정보이며, 이용자의 구독·표시 설정(색상, 필터 등)만 저장합니다.
2-9. 웹 푸시 알림(선택)
| 구분 | 항목 | 수집 경로 |
|---|---|---|
| 선택 | Push 엔드포인트·VAPID 키 | push_subscriptions |
한 브라우저에 여러 계정을 연결한 경우 푸시 구독은 마지막으로 활성화한 계정에 귀속됩니다. 따라서 해당 브라우저에는 활성 계정의 알림만 발송되며, 계정을 전환하면 푸시 구독의 귀속도 새 활성 계정으로 변경됩니다.
2-10. 다중 계정 전환(선택)
| 구분 | 항목 | 수집·저장 경로 |
|---|---|---|
| 선택 | 연결 계정의 식별자·이메일·표시명·세션 상태·최근 사용 시각 | 서버 전용 계정 묶음 저장소 |
| 선택 | 비활성 계정의 암호화된 세션 갱신 정보와 암호화 메타데이터 | 서버 전용 암호화 저장소(평문 DB·브라우저 미저장) |
| 선택 | 계정 메뉴용 캘린더 식별자·이름·이미지·종류·역할· 표시 순서 | 서버 전용 메뉴 스냅샷 |
| 자동 | 계정 추가·전환·로그아웃 결과, 요청 식별자, 관련 계정 식별자, 처리 시각, 해시 처리된 IP (수집되는 경우) | 보안·감사 로그 |
이 기능은 한 브라우저에 최대 5개 계정을 연결해 전환할 수 있게 합니다. 활성 계정은 기존 Supabase Auth 세션을 그대로 사용하고, 비활성 계정의 세션 갱신 정보는 서버에서 AES-256-GCM 방식으로 암호화하여 보관합니다.
계정 묶음 정보나 캘린더 메뉴 스냅샷은 캘린더 접근 권한의 근거로 사용하지 않습니다. 계정 전환 시 대상 계정의 유효한 세션을 다시 확인하고, 모든 캘린더 접근은 활성 계정의 인증 정보와 권한 정책(RLS)을 기준으로 판단합니다. 두 계정이 같은 공유 캘린더에 참여한 경우 각 계정 그룹에 표시될 수 있으며, 권한은 각 계정의 멤버십에 따라 별도로 적용됩니다.
3. 수집·이용 목적
| 목적 | 근거 | 관련 데이터 |
|---|---|---|
| 회원 식별 및 서비스 제공 | 계약 이행 | 이메일, 이름, 세션 |
| 캘린더·일정 관리 기능 제공 | 계약 이행 | 캘린더, 이벤트 데이터 |
| 공유 캘린더 협업 기능 | 계약 이행 | 멤버십, 권한, 참가자 |
| Google Calendar 연동·동기화 | 별도 동의 | OAuth 토큰, 캘린더·일정 API 데이터 |
| Outlook Calendar 연동·동기화 | 별도 동의 | 암호화 OAuth 토큰, 캘린더·일정 Graph API 데이터 |
| CalDAV 캘린더 연동·동기화 | 별도 동의 | 앱 비밀번호(암호화), CalDAV 이벤트 캐시 |
| iCal URL 구독·동기화 | 별도 동의 | 암호화된 피드 주소, iCal 이벤트 캐시 |
| 스포츠·시스템 구독 표시 | 계약 이행 | 구독 설치·표시 설정 |
| 알림(푸시·이메일) | 별도 동의/계약 이행 | 알림·기기 정보 |
| 다중 계정 연결·전환 | 계약 이행/이용자 선택 | 연결 계정 정보, 암호화 세션 갱신 정보, 계정 메뉴 스냅샷 |
| 부정 이용 방지 및 보안 | 법적 의무/정당한 이익 | 접근 기록, 계정 전환 보안·감사 로그 |
4. 보유·이용 기간
| 구분 | 보유 기간 | 파기 방법 |
|---|---|---|
| 회원 정보 | 회원 탈퇴 즉시 | DB row 삭제 및 계정 삭제 |
| 캘린더·일정 데이터 | 탈퇴 시 즉시(공유 캘린더 예외) | cascade 삭제 |
| Google 연동 토큰·구독 메타·이벤트 동기화 캐시 | 연동 해제 또는 탈퇴 즉시 | user_google_integrations·구독 카탈로그·watch 채널·이벤트 캐시 삭제 |
| Microsoft 연동 토큰·구독 메타·이벤트 동기화 캐시 | 연동 해제 또는 탈퇴 즉시 | user_microsoft_integrations·Graph 구독·이벤트 캐시 삭제 |
| CalDAV 자격증명(암호화 앱 비밀번호)·이벤트 캐시 | 연동 해제 또는 탈퇴 즉시 | user_caldav_credentials·caldav_event_cache·구독 카탈로그 삭제 |
| iCal 비공개 피드 주소·이벤트 캐시 | 구독 해제 또는 탈퇴 즉시 | 구독 카탈로그·ical_url_event_cache 삭제 |
| 웹 푸시 구독 정보 | 알림 거부 또는 탈퇴 즉시 | push_subscriptions 삭제 |
| 다중 계정 연결 정보·암호화 세션·메뉴 스냅샷 | 연결 중 보유. 해당 계정 로그아웃·모든 계정 로그아웃 또는 회원탈퇴 시 암호화 세션 즉시 삭제. 비활성화된 연결 정보는 90일 후 삭제 | 암호화 세션 삭제 후 비활성화, 보유기간 경과 시 배치 삭제 |
| 계정 전환 보안·감사 로그 | 생성 후 1년 | 보유기간 경과 후 배치 삭제 |
| 알림 기록 | 생성 후 90일 | 배치 삭제 |
5. 제3자 제공 및 처리 위탁
Calenber는 이용자 개인정보를 제3자에게 판매하거나 광고 목적으로 제공하지 않습니다. Google Calendar 또는 Outlook Calendar 연동 시 각 제공자의 API를 통해 Google LLC 또는 Microsoft Corporation이 이용자가 선택한 데이터를 처리하며, 각 제공자의 개인정보처리방침이 적용됩니다. Google(policies.google.com/privacy), Microsoft(privacy.microsoft.com/privacystatement)
5-1. 처리 위탁
| 수탁사 | 위탁 업무 | 위탁 항목 |
|---|---|---|
| Supabase Inc. | DB/인증/Realtime | 서비스 전체 데이터 |
| Resend Inc. | 이메일 알림 발송 | 수신자 이메일, 알림 내용 |
| Vercel Inc. | 웹 애플리케이션 호스팅 | 서비스 제공에 필요한 트래픽·로그 |
| Google LLC | Google 로그인(Google Identity Services 및 Supabase Auth 경유)·Calendar API | 인증·연동 시 Google이 처리하는 계정·캘린더 정보 |
| Microsoft Corporation | Microsoft OAuth·Graph Calendar API | 인증·연동 시 Microsoft가 처리하는 계정·캘린더 정보 |
5-2. 개인정보의 국외 이전
| 이전 국가 | 수탁·수신 | 이전 항목·목적 |
|---|---|---|
| 미국 | Supabase Inc. | DB·인증·Realtime 운영 |
| 미국 | Google LLC | Calendar 연동·Google 로그인 및 One Tap/FedCM 인증 처리 |
| 미국 등 Microsoft 처리 지역 | Microsoft Corporation | Outlook Calendar OAuth 인증·Graph API 연동 처리 |
| 미국 | Resend Inc. | 이메일 알림 발송 |
| 미국 | Vercel Inc. | 웹 서비스 호스팅 |
국외 이전 시 해당 수탁사의 표준계약조항(SCC) 등 적용 정책을 따릅니다.
6. 이용자의 권리
이용자는 개인정보 열람·수정·삭제(탈퇴)·처리 정지 등을 요청할 수 있으며, 서비스 내 설정 또는 이메일(privacy@calenber.com)을 통해 행사할 수 있습니다.
| 권리 | 이행 방법 |
|---|---|
| 개인정보 열람 | 설정 > 계정 정보 |
| 개인정보 수정 | 설정 > 프로필 수정 |
| 개인정보 삭제(탈퇴) | 설정 > 계정 삭제 |
| Google 연동 해제 | 설정 > 연결 > 캘린더 계정 > 계정 연결 해제 |
| CalDAV 연동 해제 | 캘린더 > 구독 > 해당 CalDAV 구독 > 구독 삭제 (자격증명·이벤트 캐시 즉시 삭제) |
| 알림 수신 거부 | 설정 > 알림 |
| 연결 계정 관리 | 사용자 메뉴 > 계정별 메뉴에서 로그아웃 또는 모든 계정에서 로그아웃 |
7. 자동 수집 장치(쿠키)
| 쿠키명 | 목적 | 만료 |
|---|---|---|
| sb-*-auth-token | 인증 세션 유지 | 세션 정책에 따름 |
| cal-bundle | 이 브라우저에 연결한 계정 묶음 식별·전환 (HttpOnly) | 365일 또는 모든 계정 로그아웃 시 |
| g_state | Google One Tap 로그아웃 상태·재노출 제어 | Google 정책에 따름 |
| locale | 언어 설정 저장 | 365일 |
| theme | 테마(라이트/다크/시스템) 설정 저장 | 365일 |
| calendar-timezone | 캘린더 표시에 사용할 타임존 설정 저장 | 365일 |
| recent-calendar-id | 최근 접근한 캘린더로 빠르게 이동 | 30일 |
| sidebar-collapse-state | 사이드바 그룹 접힘/펼침 UI 상태 저장 | 365일 |
| calenber-pwa-install-dismissed | PWA 설치 유도 안내 토스트 재노출 차단 | 7일 |
| calenber-push-permission-dismissed | 푸시 알림 권한 안내 토스트 재노출 차단 | 3일 |
Google Analytics 4·Google Tag Manager가 서비스 이용 통계 수집에 사용될 수 있습니다(쿠키·유사 식별자). 쿠키 거부는 브라우저 설정에서 가능하며, 거부 시 로그인 기능이 제한되거나 일부 설정(언어, 테마, 타임존, UI 상태)이 유지되지 않을 수 있습니다.
사이드바의 안내 CTA(예: “내 캘린더에 추가”, “가입하기”) 닫기 상태는 브라우저 로컬 저장소(localStorage)에만 저장됩니다. 안내(prompt)·캘린더· 로그인 여부(anonymous/authenticated) 단위로 구분해 “다시 보지 않음”을 기록하며, 계정이나 서버로 동기화되지 않고 네트워크로 전송되지 않습니다. 브라우저 데이터 삭제 시 초기화됩니다.
8. 아동의 개인정보
Calenber는 만 14세 미만 아동의 회원가입을 허용하지 않습니다. 가입 절차를 완료하는 이용자는 만 14세 이상이어야 하며, 14세 미만 이용이 확인되면 계정과 관련 데이터를 삭제합니다.
9. 보안 조치
- 전송 구간 HTTPS(TLS) 암호화
- 비밀번호 단방향 해시 저장(Supabase Auth)
- Google OAuth 토큰 AES-256-GCM 암호화 저장, 서버 전용 복호화 및 Supabase RLS 접근 제어
- Microsoft OAuth 토큰 AES-256-GCM 암호화 저장, 서버 전용 복호화 및 브라우저 직접 조회 차단
- 비활성 계정의 세션 갱신 정보 AES-256-GCM 암호화 저장 — 복호화는 계정 전환 요청 중 서버 메모리 내에서만 수행하며, 암호문을 브라우저로 전송하지 않음
- 계정 묶음 식별 쿠키 HttpOnly·SameSite 보호, 서버 전용 저장소의 외부 Data API 접근 차단, 계정별 인증 정보와 RLS로 권한 재검증
- CalDAV 앱 비밀번호 AES-256-GCM 암호화 저장 — 복호화는 CalDAV 서버 통신 시 서버 메모리 내에서만 수행, 평문 외부 노출 없음
- iCal 비공개 피드 주소 AES-256-GCM 암호화 저장 — 원본 주소는 동기화 중 서버 메모리에서만 복호화
- 관리용 Service Role 키 최소 권한 운영
10. 개인정보 처리방침 변경
처리방침 변경 시 변경 7일 전(중요한 변경은 30일 전) 서비스 내 공지합니다.
운영 데이터에서 삭제된 정보는 서비스 화면과 활성 DB에서 즉시 제외됩니다. 장애 복구용 암호화 백업에는 수탁사의 설정된 복구 보존기간 동안 일시 잔존할 수 있으며, 일반 서비스 처리에 다시 사용하지 않고 보존기간 만료에 따라 순차 삭제됩니다.