개인정보 처리방침
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. 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 서비스 제공(일정 표시·수정·삭제) 목적으로만 사용하며, 연동 해제 또는 탈퇴 시 즉시 삭제됩니다.
2-5. 서비스 이용 중 자동 수집
| 구분 | 항목 | 수집 경로 |
|---|---|---|
| 자동 | 캘린더·일정·컬렉션·멤버십 | 서비스 이용 시 DB 저장 |
| 자동 | 일정 변경 이력·알림 기록 | event_history, notifications |
| 자동 | 접속·세션 정보 | Supabase Auth, 서버 로그 |
2-6. 스포츠·기타 구독(선택)
경기 일정·공휴일 등 구독 콘텐츠 본문은 외부 공개 정보이며, 이용자의 구독·표시 설정(색상, 필터 등)만 저장합니다.
2-7. 웹 푸시 알림(선택)
| 구분 | 항목 | 수집 경로 |
|---|---|---|
| 선택 | Push 엔드포인트·VAPID 키 | push_subscriptions |
한 브라우저에 여러 계정을 연결한 경우 푸시 구독은 마지막으로 활성화한 계정에 귀속됩니다. 따라서 해당 브라우저에는 활성 계정의 알림만 발송되며, 계정을 전환하면 푸시 구독의 귀속도 새 활성 계정으로 변경됩니다.
2-8. 다중 계정 전환(선택)
| 구분 | 항목 | 수집·저장 경로 |
|---|---|---|
| 선택 | 연결 계정의 식별자·이메일·표시명·세션 상태·최근 사용 시각 | 서버 전용 계정 묶음 저장소 |
| 선택 | 비활성 계정의 암호화된 세션 갱신 정보와 암호화 메타데이터 | 서버 전용 암호화 저장소(평문 DB·브라우저 미저장) |
| 선택 | 계정 메뉴용 캘린더 식별자·이름·이미지·종류·역할· 표시 순서 | 서버 전용 메뉴 스냅샷 |
| 자동 | 계정 추가·전환·로그아웃 결과, 요청 식별자, 관련 계정 식별자, 처리 시각, 해시 처리된 IP (수집되는 경우) | 보안·감사 로그 |
이 기능은 한 브라우저에 최대 5개 계정을 연결해 전환할 수 있게 합니다. 활성 계정은 기존 Supabase Auth 세션을 그대로 사용하고, 비활성 계정의 세션 갱신 정보는 서버에서 AES-256-GCM 방식으로 암호화하여 보관합니다.
계정 묶음 정보나 캘린더 메뉴 스냅샷은 캘린더 접근 권한의 근거로 사용하지 않습니다. 계정 전환 시 대상 계정의 유효한 세션을 다시 확인하고, 모든 캘린더 접근은 활성 계정의 인증 정보와 권한 정책(RLS)을 기준으로 판단합니다. 두 계정이 같은 공유 캘린더에 참여한 경우 각 계정 그룹에 표시될 수 있으며, 권한은 각 계정의 멤버십에 따라 별도로 적용됩니다.
3. 수집·이용 목적
| 목적 | 근거 | 관련 데이터 |
|---|---|---|
| 회원 식별 및 서비스 제공 | 계약 이행 | 이메일, 이름, 세션 |
| 캘린더·일정 관리 기능 제공 | 계약 이행 | 캘린더, 이벤트 데이터 |
| 공유 캘린더 협업 기능 | 계약 이행 | 멤버십, 권한, 참가자 |
| Google Calendar 연동·동기화 | 별도 동의 | OAuth 토큰, 캘린더·일정 API 데이터 |
| CalDAV 캘린더 연동·동기화 | 별도 동의 | 앱 비밀번호(암호화), CalDAV 이벤트 캐시 |
| 스포츠·시스템 구독 표시 | 계약 이행 | 구독 설치·표시 설정 |
| 알림(푸시·이메일) | 별도 동의/계약 이행 | 알림·기기 정보 |
| 다중 계정 연결·전환 | 계약 이행/이용자 선택 | 연결 계정 정보, 암호화 세션 갱신 정보, 계정 메뉴 스냅샷 |
| 부정 이용 방지 및 보안 | 법적 의무/정당한 이익 | 접근 기록, 계정 전환 보안·감사 로그 |
4. 보유·이용 기간
| 구분 | 보유 기간 | 파기 방법 |
|---|---|---|
| 회원 정보 | 회원 탈퇴 즉시 | DB row 삭제 및 계정 삭제 |
| 캘린더·일정 데이터 | 탈퇴 시 즉시(공유 캘린더 예외) | cascade 삭제 |
| Google 연동 토큰·구독 메타 | 연동 해제 또는 탈퇴 즉시 | user_google_integrations·구독 카탈로그·watch 채널 삭제 |
| CalDAV 자격증명(암호화 앱 비밀번호)·이벤트 캐시 | 연동 해제 또는 탈퇴 즉시 | user_caldav_credentials·caldav_event_cache·구독 카탈로그 삭제 |
| 웹 푸시 구독 정보 | 알림 거부 또는 탈퇴 즉시 | push_subscriptions 삭제 |
| 다중 계정 연결 정보·암호화 세션·메뉴 스냅샷 | 연결 중 보유. 해당 계정 로그아웃·모든 계정 로그아웃 또는 회원탈퇴 시 암호화 세션 즉시 삭제. 비활성화된 연결 정보는 90일 후 삭제 | 암호화 세션 삭제 후 비활성화, 보유기간 경과 시 배치 삭제 |
| 계정 전환 보안·감사 로그 | 생성 후 1년 | 보유기간 경과 후 배치 삭제 |
| 알림 기록 | 생성 후 90일 | 배치 삭제 |
5. 제3자 제공 및 처리 위탁
Calenber는 이용자 개인정보를 제3자에게 판매하거나 광고 목적으로 제공하지 않습니다. Google Calendar 연동 시 API 호출을 통해 Google LLC가 이용자가 선택한 데이터를 처리하며, Google 개인정보처리방침(policies.google.com/privacy)이 적용됩니다.
5-1. 처리 위탁
| 수탁사 | 위탁 업무 | 위탁 항목 |
|---|---|---|
| Supabase Inc. | DB/인증/Realtime | 서비스 전체 데이터 |
| Resend Inc. | 이메일 알림 발송 | 수신자 이메일, 알림 내용 |
| Vercel Inc. | 웹 애플리케이션 호스팅 | 서비스 제공에 필요한 트래픽·로그 |
| Google LLC | Google 로그인(Google Identity Services 및 Supabase Auth 경유)·Calendar API | 인증·연동 시 Google이 처리하는 계정·캘린더 정보 |
5-2. 개인정보의 국외 이전
| 이전 국가 | 수탁·수신 | 이전 항목·목적 |
|---|---|---|
| 미국 | Supabase Inc. | DB·인증·Realtime 운영 |
| 미국 | Google LLC | Calendar 연동·Google 로그인 및 One Tap/FedCM 인증 처리 |
| 미국 | Resend Inc. | 이메일 알림 발송 |
| 미국 | Vercel Inc. | 웹 서비스 호스팅 |
국외 이전 시 해당 수탁사의 표준계약조항(SCC) 등 적용 정책을 따릅니다.
6. 이용자의 권리
이용자는 개인정보 열람·수정·삭제(탈퇴)·처리 정지 등을 요청할 수 있으며, 서비스 내 설정 또는 이메일(privacy@calenber.com)을 통해 행사할 수 있습니다.
| 권리 | 이행 방법 |
|---|---|
| 개인정보 열람 | 설정 > 계정 정보 |
| 개인정보 수정 | 설정 > 프로필 수정 |
| 개인정보 삭제(탈퇴) | 설정 > 계정 삭제 |
| Google 연동 해제 | 캘린더 > 구독 > 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)
- OAuth 토큰 서버 전용 저장 및 Supabase RLS 접근 제어
- 비활성 계정의 세션 갱신 정보 AES-256-GCM 암호화 저장 — 복호화는 계정 전환 요청 중 서버 메모리 내에서만 수행하며, 암호문을 브라우저로 전송하지 않음
- 계정 묶음 식별 쿠키 HttpOnly·SameSite 보호, 서버 전용 저장소의 외부 Data API 접근 차단, 계정별 인증 정보와 RLS로 권한 재검증
- CalDAV 앱 비밀번호 AES-256-GCM 암호화 저장 — 복호화는 CalDAV 서버 통신 시 서버 메모리 내에서만 수행, 평문 외부 노출 없음
- 관리용 Service Role 키 최소 권한 운영
10. 개인정보 처리방침 변경
처리방침 변경 시 변경 7일 전(중요한 변경은 30일 전) 서비스 내 공지합니다.