개인정보처리방침
읽은자리(이하 "서비스")는 사용자가 책, 독서 기록, 책갈피, 인용문, 감상평을 개인적으로 기록하고 필요할 때 Google Drive에 동기화하거나 Google Sheets 사본과 JSON 파일로 백업할 수 있도록 돕는 웹 애플리케이션입니다. 본 개인정보처리방침은 서비스가 어떤 정보를 어떤 목적으로 처리하는지 설명합니다.
1. 처리하는 개인정보
서비스는 다음 정보를 처리할 수 있습니다.
- 사용자가 직접 입력한 도서 정보: 제목, 저자, 출판사, 출간일, ISBN, 표지 URL, 전체 페이지 수, 태그
- 사용자가 직접 입력한 독서 기록: 읽기 상태, 시작일, 완독일, 책갈피, 메모, 인용문, 감상평, 별점
- 독서방에서 사용자가 직접 공유한 정보: 표시 이름, 공유한 책 정보, 책갈피, 문장, 감상, 초대 및 참여 상태
- Google 연동 정보: 암호화된 Google OAuth 갱신 토큰, 해시된 연결 세션 식별자, 가명 처리된 Google 계정 식별 해시, 허용된 권한 범위와 연결 만료 시각, 일시적인 액세스 토큰, Google Drive 앱 전용 동기화 파일 식별자, Google Sheets 사본 파일 식별자
- 도서 조회에 필요한 정보: 사용자가 입력하거나 스캔한 ISBN
- 서비스 이용 분석 정보: 방문한 화면, 라우트 이동, 기능 사용 이벤트, 이벤트 속성, 브라우저 및 기기 정보, IP 주소를 기반으로 한 대략적인 지역 정보
서비스는 이름, 전화번호, 주소, 결제 정보와 같은 정보를 별도로 요구하지 않습니다. 사용자가 감상평이나 메모에 개인정보를 직접 입력하는 경우 해당 내용은 독서 기록의 일부로 저장될 수 있습니다. 서비스 이용 분석 시에는 책 제목, 저자, 인용문, 감상평, 메모, 독서방 표시 이름, 초대 토큰, Google OAuth 비밀정보, Google Drive 동기화 파일 또는 Google Sheets 사본 내용과 같은 사용자 입력 원문을 Google Analytics 이벤트로 전송하지 않습니다.
2. 개인정보 이용 목적
서비스는 개인정보를 다음 목적으로만 이용합니다.
- 사용자의 독서 기록을 브라우저에 저장하고 화면에 표시하기 위해
- 사용자가 요청한 Google Drive 동기화, Google Sheets 사본 생성, JSON 백업 및 복원을 수행하기 위해
- Google 계정 연결 상태와 허용된 동기화 권한을 확인하기 위해
- ISBN을 기반으로 도서 제목, 저자, 표지 등 공개 도서 정보를 조회하기 위해
- 사용자가 만든 독서방과 초대 링크를 관리하고, 참여자가 직접 남긴 공유 기록을 표시하기 위해
- 방문 통계, 화면 이용 흐름, 주요 기능 사용 현황을 분석하여 서비스를 개선하기 위해
- 서비스 오류를 방지하고 보안상 필요한 요청 검증을 수행하기 위해
3. Google 사용자 데이터와 권한 사용
서비스는 사용자가 Google 연동 기능을 선택한 경우에만 Google 권한을 요청합니다.
- Google Drive 앱 전용 저장소 권한(drive.appdata)은 서비스의 동기화 파일을 만들고, 찾고, 읽고, 수정하거나 삭제하는 데 사용됩니다.
- Google Drive 파일 권한(drive.file)은 사용자가 요청한 읽기용 Google Sheets 사본을 만들고, 읽고, 수정하는 데 사용됩니다.
- Google OpenID 권한은 이메일을 수집하지 않고 동일한 Google 계정의 연결 세션을 가명 해시로 구분하는 데 사용됩니다.
서비스는 Google 사용자 데이터를 광고, 마케팅, 재판매, 신용 평가, 사용자 추적 또는 서비스 제공과 무관한 목적으로 사용하지 않습니다. 서비스의 Google API 사용과 Google에서 받은 정보의 처리에는 Google API Services User Data Policy 의 Limited Use 요건이 적용됩니다.
4. 저장 위치와 보관 기간
개인 독서 기록은 기본적으로 사용자의 브라우저 IndexedDB에 저장됩니다. Google 동기화를 선택하면 독서 기록이 사용자의 Google Drive 앱 전용 저장소에 있는 동기화 파일에 저장됩니다. 사용자가 요청하면 읽기용 Google Sheets 사본이 사용자의 Google Drive에 별도로 생성될 수 있습니다. 서비스 운영자는 사용자의 개인 책꽂이 전체를 별도의 중앙 데이터베이스에 저장하지 않습니다.
독서방 기능을 사용하면 사용자가 독서방에 직접 공유한 책 정보, 표시 이름, 책갈피, 문장, 감상은 Cloudflare D1에 저장됩니다. 독서방 초대 토큰과 접근 토큰은 D1에 원문으로 저장하지 않고 서버 비밀값과 함께 해시한 값으로 저장합니다. 다만 사용자가 Google 동기화를 선택하면 독서방에 다시 들어가기 위한 access token, invite URL, 방 ID, 표시 이름, 표시용 책 정보가 사용자의 Google Drive 앱 전용 동기화 파일에 저장될 수 있습니다. 새 기록 알림을 켜면 브라우저 push subscription 정보가 Cloudflare D1에 저장됩니다. 알림 payload에는 독서방으로 돌아가기 위한 URL만 담고 책 제목, 문장, 감상, 표시 이름은 담지 않습니다. 독서방은 기본 90일 동안 보관되며, 삭제하거나 만료된 뒤에는 앱에서 접근할 수 없습니다.
Google 동기화를 연결하면 암호화된 OAuth 갱신 토큰, 해시된 연결 세션 식별자, 가명 처리된 Google 계정 식별 해시, 허용된 권한 범위와 연결 만료 시각이 Cloudflare D1에 연결 시점부터 90일 동안 저장됩니다. Google 계정 이메일과 원문 Google 계정 식별자는 저장하지 않습니다. 브라우저에는 원문 갱신 토큰 대신 HttpOnly 연결 쿠키만 저장하며, 짧게 유효한 액세스 토큰은 브라우저 메모리에서만 사용합니다. 사용자가 서비스 화면에서 Google 연결을 해제하면 저장된 연결 세션을 삭제하고 Google 권한 철회를 요청합니다. 90일이 지나거나 사용자가 Google 계정에서 권한을 철회한 경우에도 연결을 다시 허용해야 합니다. 활성 데이터베이스에서 삭제된 암호화 레코드는 재해 복구를 위한 Cloudflare D1 Time Travel 이력에 최대 30일간 남을 수 있으나 서비스 기능에 다시 사용하지 않으며 보관 기간이 지나면 만료됩니다. 독서방 참여 토큰은 해당 기능을 유지하기 위해 브라우저 저장소에 저장될 수 있으며, 이를 잃으면 로그인 없는 구조상 복구할 수 없습니다.
5. 제3자 제공 및 외부 서비스
서비스는 사용자의 개인정보를 판매하지 않으며, 서비스 제공에 필요한 범위를 넘어 제3자에게 제공하지 않습니다.
다만 다음 외부 서비스가 사용될 수 있습니다.
- Google OAuth, Google Drive, Google Sheets: 사용자가 선택한 동기화, Sheets 사본 생성, 백업 및 복원 기능 제공
- Google Books, Open Library, 알라딘: ISBN 기반 공개 도서 정보 조회
- Cloudflare Workers 및 D1: 서비스 API 제공, 독서방 공유 기록과 알림 구독 정보 저장
- Google Analytics: 방문 통계, 화면 이용 흐름, 주요 기능 사용 현황 분석
ISBN 조회 시에는 도서 검색에 필요한 ISBN이 외부 도서 정보 서비스로 전송될 수 있습니다. Google 서비스의 개인정보 처리에는 Google의 개인정보처리방침이 함께 적용될 수 있습니다.
서비스는 Google Analytics를 사용합니다. Google Analytics는 쿠키 또는 이와 유사한 기술을 사용하여 사용자의 서비스 이용 방식에 관한 정보를 수집하고 처리할 수 있습니다. Google Analytics의 데이터 처리 방식은 Google이 파트너 사이트 또는 앱의 정보를 사용하는 방식 에서 확인할 수 있습니다.
6. 사용자의 권리와 선택
사용자는 언제든지 다음 조치를 할 수 있습니다.
- 서비스 화면에서 독서 기록을 수정하거나 삭제할 수 있습니다.
- 브라우저의 사이트 데이터 또는 로컬 저장소를 삭제하여 로컬에 저장된 기록과 연결 쿠키를 삭제할 수 있습니다.
- 브라우저 설정, 추적 차단 도구 또는 Google Analytics 차단 브라우저 부가 기능 을 통해 Google Analytics 수집을 제한할 수 있습니다.
- 서비스 화면에서 Google Drive 앱 전용 저장소의 동기화 파일을 삭제할 수 있습니다.
- 서비스 화면에서 Google 연결을 해제하여 저장된 연결 세션을 삭제하고 Google 권한을 철회할 수 있습니다.
- Google Drive에서 서비스가 만든 Google Sheets 사본을 직접 삭제할 수 있습니다.
- Google 계정의 보안 설정에서 서비스에 부여한 권한을 철회할 수 있습니다. 권한 철회 후에는 Google 백업, 복원, 동기화 기능을 사용하려면 다시 권한을 부여해야 합니다.
7. 보안
서비스는 Google OAuth 토큰 교환과 갱신을 서버 측 엔드포인트에서 처리하고, 갱신 토큰을 AES-GCM 방식으로 암호화하며, 브라우저 연결 세션과 Google 계정 식별자는 원문이 아닌 keyed hash로 저장합니다. 요청 출처 검증과 요청 횟수 제한을 통해 무단 요청을 줄이기 위해 노력합니다. 독서방 접근 토큰은 원문이 아닌 해시로 저장합니다. 다만 브라우저 저장소, Cloudflare D1, 사용자의 Google Drive에 저장되는 데이터의 보안은 사용자의 기기, 브라우저, Google 계정 보안 설정에도 영향을 받습니다.
8. 아동의 개인정보
서비스는 만 14세 미만 아동을 대상으로 하지 않습니다. 만 14세 미만 아동의 개인정보가 서비스에 입력되었다고 판단되는 경우, 보호자 또는 법정대리인은 아래 문의처로 삭제를 요청할 수 있습니다.
9. 방침 변경
서비스는 관련 법령, Google API 정책, 서비스 기능 변경에 따라 본 개인정보처리방침을 수정할 수 있습니다. 중요한 변경 사항이 있는 경우 본 페이지의 최종 업데이트 일자를 갱신합니다.
10. 문의
개인정보 처리와 관련한 문의는 다음 연락처로 보내 주세요.
운영자: 읽은자리 운영자
이메일: kato.sec23@gmail.com