PRIVACY POLICY
개인정보처리방침
시행일자: 2026-08-16
디엠씨(이하 “운영자”)는 고양일산 ISSUE AGORA 서비스를 운영하며 시민이 안전하게 의견을 남기고 설문에 참여할 수 있도록 아래 방침을 준수합니다. 본 방침은 실제 시스템 동작을 기준으로 작성되었으며, 수집하지 않는 정보를 수집하는 것처럼 표기하지 않습니다.
1. 수집하는 정보
1-0. 저장하지 않는 항목
다음 항목은 어떤 저장소(DB · 파일 · 로그 시스템)에도 저장되지 않습니다: 이름 · 주민등록번호 · 연락처(전화·이메일) · 생년월일 · 성별 · 통신사.
1-0-1. 일시 처리 후 소멸 항목
다음 항목은 요청 처리를 위해 서버 메모리에서 일시적으로만 사용되고 저장소에 기록되지 않습니다:
- 이용자 IP 주소: 남용 방어(rate limit) 판정을 위해 서버 인스턴스의 메모리에서 기본 60초만 유지되며, 이후 자동 소멸합니다. DB · 파일 · 지속 로그에 기록되지 않습니다.
1-1. 댓글 광장 (citizen_opinions · opinion_reports)
- 본문(body): 이용자가 직접 작성한 텍스트 (2~2000자).
- 익명 저자 해시(author_token_hash): 브라우저
localStorage 에 저장된 임의 토큰을 SHA-256 + 서버 pepper 로 해시한 값. 원본 토큰은 저장되지 않으며 해시값에서 신원 역산은 불가능합니다. - 신고 시 익명 신고자 해시(reporter_token_hash): 위와 동일 방식.
- 자동 감지 태그(auto_flags), 신고 수(report_count), 검토 상태(moderation_status), 작성 시각(created_at).
- 답글의 부모 의견 참조(parent_opinion_id) · 이슈 참조(issue_id).
1-2. 설문 응답 (survey_responses · survey_answers)
- 거주지 코드(region_code):
goyang_ilsandong · goyang_ilsanseo · goyang_deogyang · other 4개 중 하나. 구 단위까지만 저장하며 동/읍/면 단위는 저장하지 않습니다. - 익명 응답자 해시(client_token_hash): 설문 전용 토큰을 별도 pepper 로 해시. 댓글 광장 토큰과 완전 분리되어 있어 같은 브라우저의 댓글과 설문 응답은 해시상 연결되지 않습니다.
- 제출 시각(submitted_at), 문항별 답변(value_text · value_int · value_json).
1-3. 설문 참여 대장 (survey_participants)
- 본인확인 도입 이후에만 사용됩니다 (현재 미도입 · 사용 안 함).
- 도입 시 저장 항목: 설문 ID(survey_id), DI 해시(di_hash · 본인확인 서비스가 발급한 DI 값의 SHA-256 해시), 인증 수단 등급(verification_level = mobile), 참여 일자(verified_at · 일 단위).
- DI 원문 · 이름 · 연락처 등 신원 정보는 어느 컬럼에도 저장되지 않습니다. 본인확인 서비스가 생성한 해시만 유입됩니다.
1-4. 브라우저 저장소 (쿠키 · localStorage)
- 쿠키(cookie): 시민 화면은 쿠키를 사용하지 않습니다. 관리자 로그인에만
admin_session httpOnly 쿠키 (최대 8시간)를 사용합니다. - localStorage(브라우저 로컬 저장소): 아래 익명 토큰만 저장됩니다.
issue-agora:author-token:v1 · 댓글 저자 식별용 임의 문자열.issue-agora:reporter-token:v1 · 댓글 신고자 식별용 임의 문자열.issue-agora:survey-token:v1 · 설문 응답자 식별용 임의 문자열 (댓글 토큰과 별도).issue-agora:survey-submitted:{surveyId} · 설문 재제출 방지 플래그.issue-agora:vote-token:{tier} · 찬반 투표 티어별 임의 문자열.
위 값은 브라우저 안에만 존재하며 서버로 원본 그대로 전송되어도 저장되는 것은 해시된 값뿐입니다. 언제든 브라우저 설정에서 삭제하실 수 있습니다.
2. 수집 목적
- 시민 의견 공론 · 게시된 댓글 및 답글 공개.
- 설문 응답 수집 및 문항별 통계 산출 (원시 응답은 어떤 API로도 반환되지 않으며 30명 미만은 “집계 중”으로 마스킹).
- 남용 방어 (동일 이용자의 짧은 시간 내 반복 게시·신고 억제).
- 1인 1표 강제 (본인확인 도입 후 · 현재 미도입).
3. 보유 기간 · 파기 절차 및 방법
3-1. 보유 기간
- 댓글 · 설문 응답: 서비스 종료 시까지 익명 상태로 보유. 이용자의 “삭제” 요청은 6장 “이용자 권리” 절차에 따릅니다.
- 남용 방어 IP 임시 기록: 서버 메모리에서 기본 60초 이내 자동 소멸.
- 관리자 로그인 쿠키: 최대 8시간, 로그아웃 시 즉시 삭제.
- audit_logs (관리자 조치 감사): 서비스 운영 목적으로 보존. 관리자 계정 식별자 · 조치 사유 · 대상 리소스 ID 만 기록되며 시민 개인 신원 정보는 포함하지 않습니다.
3-2. 파기 시점
- 이용자가 6장 절차에 따라 삭제를 요청하고 관리자가 승인한 시점.
- 서비스가 종료되는 시점.
- 남용 방어 IP 임시 기록: 판정용 sliding window 를 벗어난 시점(기본 60초 후).
3-3. 파기 방법
- 데이터베이스에 저장된 항목: PostgreSQL 의 DELETE 로 복구 불가능하게 삭제합니다. 삭제된 행은 애플리케이션 어느 API 로도 조회되지 않습니다.
- 서버 메모리 임시 기록 (IP 등): 프로세스 메모리 해제와 함께 소멸하며 별도 파기 조치가 필요하지 않습니다.
- 브라우저 저장소(localStorage · 쿠키): 이용자가 브라우저 설정 또는 개별 사이트 삭제로 직접 파기할 수 있습니다.
4. 처리 위탁 · 국외 이전
4-1. 처리 위탁 (국내)
| 수탁자 | 위탁 업무 | 처리 위치 |
|---|
| Supabase Inc. | 데이터베이스 저장 · Row Level Security · RPC 실행 | 대한민국 서울 리전 (ap-northeast-2) |
| 본인확인 서비스 (도입 후) | 본인확인 및 DI 해시 발급 (현재 미도입) | 사업자 선정 시 별도 공지 및 이 방침 갱신 후 개시 |
4-2. 개인정보 국외 이전 고지
「개인정보 보호법」 제28조의8 에 따라 국외로 이전되는 개인정보의 세부 사항을 아래와 같이 안내합니다.
| 이전받는 자 | 이전 국가 | 이전 일시 · 방법 | 이전 항목 | 이용 목적 | 보유 기간 |
|---|
| Vercel Inc. | 미국 (및 Vercel 글로벌 Edge Network 리전) | 이용자가 사이트 접속 시 HTTPS 를 통해 실시간 전송 | 요청 헤더 (IP · User-Agent · Referrer 등) · 접속 경로 · 응답 상태 코드 | 웹 애플리케이션 호스팅 · 요청 라우팅 · 접속 로그 | Vercel 정책에 따름 (수탁자 정책 참조) |
Vercel 의 개인정보 처리 정책은 수탁자 웹사이트에서 확인하실 수 있습니다. 운영자가 애플리케이션 코드에서 이용자 IP 를 DB · 파일에 저장하는 경로는 없으며, 위 이전 항목은 Vercel 인프라가 자체 접속 로그로 수집하는 범위입니다.
5. 익명성 구조
설문 참여 기록(survey_participants) 과 응답 본문(survey_responses · survey_answers) 사이에는 외래키 · 공유 컬럼 · 조인 경로가 존재하지 않습니다. 관리자 최고 권한(service_role) 으로도 특정 개인이 어떤 답을 했는지 조회할 수 없습니다. 이는 선거인명부와 투표용지의 분리와 동일한 구조입니다.
댓글 저자 해시와 설문 응답자 해시는 서로 다른 pepper 로 산출되며, 같은 브라우저에서 작성한 댓글과 설문 응답은 해시 값이 다르므로 서로 결합할 수 없습니다.
6. 이용자 권리
- 열람: 이 서비스는 실명·연락처를 수집하지 않으므로 개인 단위의 열람 요청은 원칙적으로 대상이 되지 않습니다. 자신이 작성한 댓글은 서비스 화면에서 직접 확인할 수 있습니다.
- 삭제: 본인이 작성한 댓글의 삭제(비공개 처리)를 원할 경우 아래 개인정보 보호책임자 연락처로 요청해 주십시오. 서비스는 요청 확인 후 해당 댓글을 관리자 검토 후 hidden 상태로 전환합니다. 원문은 감사 목적으로 보존되나 공개 화면에서 노출되지 않습니다.
- 철회 · 이의: 이 방침이나 개인정보 처리에 이의가 있을 경우 아래 연락처로 문의하실 수 있습니다.
- 개인정보 침해에 대한 신고·상담: 개인정보침해신고센터(118), 개인정보분쟁조정위원회(1833-6972), 대검찰청 사이버범죄수사단(1301), 경찰청 사이버수사국(182).
7. 만 14세 미만 아동
이 서비스는 실명·연락처·생년월일을 수집하지 않는 익명 참여 서비스이므로 이용자의 나이를 확인하지 않습니다. 만 14세 미만 아동이 참여한 것으로 확인되는 경우, 관리자는 법정대리인의 동의가 확인될 때까지해당 게시물·응답을 hidden 상태로 전환하고 삭제 절차를 안내합니다. 법정대리인의 열람·삭제 요청에는 즉시 응답합니다.
8. 안전성 확보 조치
아래 조치는 모두 실제 애플리케이션 코드에 반영되어 있습니다. 구현되지 않은 조치를 기재하지 않습니다.
8-1. 암호화
- 익명 토큰(댓글 저자 · 신고자 · 설문 응답자 · 본인확인 DI)은 저장 전 SHA-256 + 서버 pepper 로 해시합니다. 원문은 저장되지 않습니다.
- 댓글 pepper 와 설문 pepper 는 서로 다른 환경변수(
AUTHOR_HASH_PEPPER · SURVEY_HASH_PEPPER)를 사용하여 계열 간 결합을 차단합니다. - 브라우저와 서버 사이 모든 통신은 HTTPS 로 이루어집니다 (Vercel Strict-Transport-Security 헤더 적용).
8-2. 접근 통제
- 관리자 경로(
/admin/** · /api/admin/**)는 웹 서버 미들웨어의 HTTP Basic Auth 게이트를 통과해야 접근됩니다. 인증 환경변수 미설정 시 안전 차단(503)이 기본 동작입니다. - Basic Auth 게이트 통과 후에도 관리자 세션 쿠키 검증과 역할 기반 접근 제어(RBAC) 를 다시 통과해야 개별 기능이 실행됩니다.
- 역할(admin · editor · reviewer · analyst) 별로 허용된 캐빌리티(예:
survey:open · survey_response:read · opinion:moderate)만 수행할 수 있습니다.
8-3. 접근 권한 관리
- 공개 데이터베이스 접근은 Supabase Row Level Security(RLS) 정책으로 제한합니다. 시민 응답 계열(
survey_responses · survey_answers · survey_participants)은 RLS enable + 정책 0개 로 anon 직접 조회·쓰기가 전면 차단됩니다. - 설문 응답 쓰기는 오직
survey_submit RPC(SECURITY DEFINER · owner=postgres · search_path 고정)만 통과합니다. - 설문 결과 읽기는 오직
survey_aggregate RPC 를 통해서만 반환되며, 응답 수가 임계(기본 30명) 미만이면 원시 값이 반환되지 않고 “집계 중” 응답만 나갑니다. - 서비스 최고 권한 키(
service_role)는 서버 코드에서만 사용되며 브라우저 클라이언트에 노출되지 않습니다.
8-4. 접속·조치 기록 (Audit)
- 관리자의 상태 전환 · 자유서술 열람 등 감사 대상 조치는
audit_logs 테이블에 기록됩니다. 저장 항목: 조치 종류 · 관리자 계정 식별자 · 대상 리소스 유형과 ID · 사유 · 이전/이후 상태 스냅샷 · 시각. - 기록에는 시민 개인의 신원 정보가 포함되지 않습니다.
9. 개인정보 보호책임자
- 운영자: 디엠씨
- 대표 및 개인정보 보호책임자: 심송학
- 연락처: 010-8851-1274
- 주소: 경기도 고양시 일산서구 대화1로 70
- 사업자등록번호: 561-12-02092
10. 변경 이력
| 시행일자 | 주요 변경 |
|---|
| 2026-08-16 | 최초 게시 (댓글 광장 · 설문 v5 기준). 안전성 확보 조치 · 국외 이전 고지 · 파기 절차 · 만 14세 미만 조항 포함. |
방침이 변경되면 새 시행일자로 갱신되고, 위 표에 이력이 누적됩니다.