민감정보와 일반 개인정보 구분하기
한 문장 결론
섹션 제목: “한 문장 결론”민감정보는 원칙적으로 처리 금지이고 별도 동의 또는 법령 근거가 있을 때만 예외적으로 처리할 수 있으므로, 데이터 모델에서 일반 개인정보와 다른 등급으로 분리하고 동의·암호화·접근통제·접속기록·유출 신고 기준을 한 단계 높게 적용해야 합니다.
적용 조건과 예외
섹션 제목: “적용 조건과 예외”민감정보의 범위
섹션 제목: “민감정보의 범위”| 구분 | 조문 | 항목 | 개발 현장 예시 |
|---|---|---|---|
| 법률 열거 | 제23조제1항 | 사상·신념 | 종교, 신념 관련 설문 응답 |
| 노동조합·정당의 가입·탈퇴 | 노조 가입 여부, 조합비 공제 내역 | ||
| 정치적 견해 | 정치 성향 설문, 지지 정당 | ||
| 건강 | 질병, 진료 기록, 장애 정보, 복용 약, 병가 사유 | ||
| 성생활 등 | 성적 지향 | ||
| 시행령 | 제18조제1호 | 유전자검사 등의 결과로 얻어진 유전정보 | DTC 유전자 검사 결과 |
| 제18조제2호 | 「형의 실효 등에 관한 법률」상 범죄경력자료 | 채용 시 범죄경력 조회 결과 | |
| 제18조제3호 | 신체적·생리적·행동적 특징 정보로서 특정 개인을 알아볼 목적으로 일정한 기술적 수단을 통해 생성한 정보 | 얼굴인식 템플릿, 지문 특징점, 화자인식 벡터 | |
| 제18조제4호 | 인종이나 민족에 관한 정보 | 인종·민족 선택 항목 |
- 시행령 제18조 단서: 공공기관이 제18조제2항제5호~제9호(범죄 수사, 재판 등)에 따라 처리하는 경우는 제외됩니다.
- 생체 데이터의 경계: 시행령 제18조제3호는 “특정 개인을 알아볼 목적”으로 “기술적 수단을 통해 생성한” 정보입니다. 얼굴 사진 원본 자체와 그 사진에서 추출한 인식용 템플릿은 구분됩니다. 고시는 생체정보(개인 특징 정보 전반)와 생체인식정보(인증·식별 목적으로 처리되는 생체정보)를 나누어 정의합니다. 프로필 사진이 민감정보인지, 얼굴 인증 기능을 켜면 어떻게 달라지는지는 처리 목적에 따라 달라지므로
review-required입니다. - 건강의 경계: 걸음 수, 수면 시간, 체중 같은 웰니스 데이터가 “건강에 관한 정보”인지는 맥락에 따라 판단이 갈립니다. 안내서 해석을 확인하세요(
review-required). 설계 단계에서는 민감정보로 가정하는 편이 안전합니다(프로젝트 권장사항).
처리할 수 있는 예외 (제23조제1항 단서)
섹션 제목: “처리할 수 있는 예외 (제23조제1항 단서)”- 정보주체에게 제15조제2항 각 호(또는 제17조제2항 각 호) 사항을 알리고 다른 개인정보의 처리에 대한 동의와 별도로 동의를 받은 경우
- 법령에서 민감정보의 처리를 요구하거나 허용하는 경우
제15조제1항제4호(계약 이행)나 제6호(정당한 이익)는 민감정보 처리 근거가 되지 않습니다. → 처리 근거 고르기
실제 법적 근거
섹션 제목: “실제 법적 근거”- 제23조제1항 본문: 민감정보를 “처리하여서는 아니 된다”. 단서의 두 경우에만 예외.
- 제23조제2항: 민감정보를 처리하는 경우 유출등이 되지 아니하도록 제29조에 따른 안전성 확보 조치를 해야 합니다.
- 제23조제3항: 재화·서비스 제공 과정에서 공개되는 정보에 민감정보가 포함되어 사생활 침해 위험이 있다고 판단되면 서비스 제공 전에 공개 가능성과 비공개 선택 방법을 알아보기 쉽게 알려야 합니다. 이 내용은 처리방침 기재사항이기도 합니다(제30조제1항제3호의3).
- 제22조제1항제5호: 민감정보 동의는 구분하여 각각 받습니다. 시행령 제17조제3항제2호가목: 서면 동의 시 민감정보는 중요한 내용으로 명확히 표시합니다.
(현행 법률 제21445호·시행령 제36671호·고시 제2026-9호 기준. 국가법령정보센터 원문과 대조함.)
개발자용 실무 해설
섹션 제목: “개발자용 실무 해설”일반 개인정보와 민감정보 비교
섹션 제목: “일반 개인정보와 민감정보 비교”| 항목 | 일반 개인정보 | 민감정보 |
|---|---|---|
| 처리 근거 | 제15조제1항 7가지 | 별도 동의 또는 법령 근거 2가지뿐(제23조제1항) |
| 동의 방식 | 목적별 구분 동의 | 다른 동의와 별도 동의 + 중요 내용 표시 |
| 안전조치 | 제29조, 시행령 제30조 | 제23조제2항으로 명시. 고시상 생체인식정보 암호화(제7조) |
| 접속기록 보관 | 1년 이상(5만명 이상 등은 2년) | 2년 이상(고시 제8조제1항제2호) |
| 공개 서비스 | — | 공개 가능성·비공개 선택 방법 사전 고지(제23조제3항) |
| 유출 신고 | 1천명 이상 또는 외부 불법 접근 | 규모와 무관하게 신고 대상(시행령 제40조제1항제2호) |
| 인터넷망 차단 예외 | 위험 분석으로 예외 가능 | 민감정보를 다운로드·파기할 수 있는 취급자 PC는 예외 불가(고시 제6조의2제2항 단서, 100만명 이상 처리자) |
| 수집 출처 통지 | 100만명 이상 처리자 | 5만명 이상 민감정보 처리자도 대상(시행령 제15조의2제1항제1호) |
| 처벌 | — | 위반 처리 시 형사처벌(제71조제4호), 동의 없는 처리 시 과징금(제64조의2제1항제3호) |
실무 포인트
섹션 제목: “실무 포인트”- “안 받는 것”이 가장 강한 통제입니다. 병가 신청에 진단명을 받지 않고 “병가” 여부만 받을 수 있는지, 얼굴인식 대신 다른 인증 수단을 제공할 수 있는지 먼저 검토하세요(제3조제1항·제6항, 제16조).
- 자유 입력란이 민감정보 유입 경로입니다. 고객 상담 메모, 게시판, LLM 챗봇 대화에 사용자가 건강·종교 정보를 직접 적을 수 있습니다. 수집하려 하지 않았더라도 저장되면 처리입니다. 입력 단계 경고, 저장 시 탐지·마스킹을 고려하세요. → LLM API 연동
- 추론으로 생성되는 민감정보도 주의합니다. 구매 이력에서 임신·질병을 추론하는 모델은 “생성”(제2조제2호 처리에 포함)에 해당할 수 있습니다. 민감정보 해당 여부는
review-required이지만 설계 리뷰 대상으로 올리세요. - 직원 데이터에도 민감정보가 많습니다. 노조 가입, 건강검진, 장애 여부, 범죄경력 조회. → 직원 정보
권장 설계
섹션 제목: “권장 설계”저장 구조users (일반 개인정보) sensitive_profiles (민감정보, 별도 스키마)├─ id ├─ user_id (FK)├─ email ├─ category: HEALTH | BIOMETRIC | GENETIC | ...└─ ... ├─ ciphertext ← 필드 단위 암호화, 별도 키 ├─ consent_event_id ← 별도 동의 기록 (제23조제1항제1호) │ 또는 legal_basis_ref ← 법령 근거 (제2호) └─ public: false ← 공개 시 제23조제3항 고지 필요- 민감정보 테이블은 별도 DB 역할(role)로만 접근 가능하게 하고, 관리자 콘솔 기본 권한에서 제외합니다.
- 민감정보 행에는 근거 필드가 비어 있으면 INSERT가 실패하도록 제약을 둡니다.
- 공개 프로필에 민감정보가 노출될 수 있으면 기본값을 비공개로 하고, 공개 전환 시 공개 가능성을 고지합니다.
위험한 설계
섹션 제목: “위험한 설계”- 건강 상태를 회원가입 “필수 동의”에 포함
- 얼굴인식 템플릿을 일반 프로필 테이블에 평문으로 저장
- 상담 메모(자유 입력)를 분석 도구·외부 LLM에 그대로 전송
- 민감정보 테이블을 일반 관리자 권한으로 조회 가능
- 민감정보 유출 시 “1천명 미만이라 신고 대상 아님”으로 판단
Python/TypeScript 구현 예제
섹션 제목: “Python/TypeScript 구현 예제”# 민감정보 저장 시 근거 강제 + 필드 단위 암호화 (FastAPI 의존성 예시)from dataclasses import dataclassfrom enum import Enum
class SensitiveCategory(str, Enum): BELIEF = "belief" # 제23조제1항 사상·신념 UNION_PARTY = "union_party" # 노동조합·정당 POLITICAL = "political" # 정치적 견해 HEALTH = "health" # 건강 SEX_LIFE = "sex_life" # 성생활 등 GENETIC = "genetic" # 영 제18조제1호 CRIMINAL = "criminal" # 영 제18조제2호 BIOMETRIC = "biometric" # 영 제18조제3호 RACE_ETHNICITY = "race" # 영 제18조제4호
@dataclass(frozen=True)class SensitiveRecord: user_id: str category: SensitiveCategory ciphertext: bytes consent_event_id: str | None = None # 제23조제1항제1호 별도 동의 legal_basis_ref: str | None = None # 제23조제1항제2호 법령 근거
def __post_init__(self) -> None: if not (self.consent_event_id or self.legal_basis_ref): raise ValueError("민감정보는 별도 동의 또는 법령 근거 없이 저장할 수 없습니다")
def store_health_note(user_id: str, plaintext: str, consent_event_id: str, encrypt) -> SensitiveRecord: return SensitiveRecord(user_id, SensitiveCategory.HEALTH, encrypt(plaintext.encode()), consent_event_id)// 자유 입력란에서 민감정보 의심 키워드를 감지해 사용자에게 경고한다 (프로젝트 권장사항, 완전한 탐지가 아님)const SENSITIVE_HINTS = [/진단|질환|병원|복용|장애/, /종교|신앙/, /노조|노동조합/, /지지\s?정당/];
export function warnIfSensitive(text: string): string | null { return SENSITIVE_HINTS.some((re) => re.test(text)) ? '건강·종교 등 민감한 정보는 입력하지 않도록 주의해 주세요.' : null;}전체 실행 가능한 예제는 구현 예제를 참고하세요.
개발 체크리스트
섹션 제목: “개발 체크리스트”- 데이터 분류에 민감정보 9개 범주(법률 5 + 시행령 4)가 반영되어 있다
- 민감정보마다 별도 동의 기록 또는 법령 근거가 연결되어 있다
- 민감정보 동의가 다른 동의와 분리된 화면·체크박스로 받아진다
- 민감정보는 별도 스키마·별도 키로 암호화되고 접근 권한이 분리되어 있다
- 민감정보 처리 시스템의 접속기록을 2년 이상 보관한다
- 공개 기능에 민감정보가 포함될 수 있으면 사전 고지와 비공개 선택이 있다
- 유출 대응 절차에 “민감정보 유출은 규모와 무관하게 신고” 규칙이 있다
- 자유 입력란·LLM 대화로 유입되는 민감정보 처리 방안이 있다
- 웰니스 데이터·프로필 사진 등 경계 사례는 법무 검토를 요청했다 (
review-required)
공식 원문 링크와 확인일
섹션 제목: “공식 원문 링크와 확인일”아래 “근거 구분표”와 “공식 원문 링크”를 참고하세요. 법률 제22조·제23조·제71조, 시행령 제15조의2·제17조·제18조·제40조, 안전성 확보조치 기준 제2조·제6조의2·제7조·제8조는 2026-10-23에 국가법령정보센터 Open API 현행본과 대조했습니다. 건강정보·생체정보의 경계 사례 해석은 안내서 원문 대조 전이라 review-required입니다.
근거 구분표
법률·시행령·고시는 법적 의무, 안내서는 행정기관 해석·권고, 기술 표준과 프로젝트 권장사항은 법적 의무가 아닙니다.
| 구분 | 출처·조항 | 내용 | 확인 상태 |
|---|---|---|---|
| 법률 | 개인정보 보호법 제23조제1항 | 사상·신념, 노동조합·정당의 가입·탈퇴, 정치적 견해, 건강, 성생활 등에 관한 정보와 대통령령으로 정하는 정보는 원칙적으로 처리 금지. 다른 처리 동의와 별도로 동의를 받거나 법령이 요구·허용하는 경우만 예외 | 원문 확인 |
| 시행령 | 개인정보 보호법 시행령 제18조 | 대통령령으로 정하는 민감정보는 유전자검사 등의 결과로 얻어진 유전정보, 범죄경력자료, 특정 개인을 알아볼 목적으로 기술적 수단을 통해 생성한 신체적·생리적·행동적 특징 정보, 인종이나 민족에 관한 정보 | 원문 확인 |
| 법률 | 개인정보 보호법 제23조제2항 | 민감정보를 처리하는 경우 유출등이 되지 않도록 제29조에 따른 안전성 확보에 필요한 조치를 해야 함 | 원문 확인 |
| 법률 | 개인정보 보호법 제23조제3항 | 서비스 과정에서 공개되는 정보에 민감정보가 포함되어 사생활 침해 위험이 있으면 서비스 제공 전에 공개 가능성과 비공개 선택 방법을 알아보기 쉽게 알려야 함 | 원문 확인 |
| 법률 | 개인정보 보호법 제22조제1항제5호 | 민감정보 처리 동의는 다른 동의와 구분하여 각각 받아야 함 | 원문 확인 |
| 시행령 | 개인정보 보호법 시행령 제17조제3항제2호가목 | 서면 동의 시 민감정보는 명확히 표시해야 하는 중요한 내용 | 원문 확인 |
| 고시 | 개인정보의 안전성 확보조치 기준 제2조제9호·제10호, 제7조제1항·제2항 | 생체정보와 생체인식정보 정의. 생체인식정보는 인증정보로서 저장·송수신 시 암호화, 이용자의 생체인식정보는 저장 시 암호화 | 원문 확인 |
| 고시 | 개인정보의 안전성 확보조치 기준 제8조제1항제2호 | 민감정보를 처리하는 개인정보처리시스템의 접속기록은 2년 이상 보관 | 원문 확인 |
| 시행령 | 개인정보 보호법 시행령 제40조제1항제2호 | 민감정보가 유출등이 되면 규모와 관계없이 신고 대상 | 원문 확인 |
| 행정기관 안내서 | 개인정보 처리 통합 안내서 | 건강정보의 범위(예를 들어 단순 키·몸무게, 운동 기록이 건강정보인지) 등 경계 사례 해석(원문 쪽수 확인 필요) | review-required |
공식 원문 링크
- 개인정보 보호법 · 법률 제21445호 · 시행 2026-09-11 · 확인일 2026-10-23
- 개인정보 보호법 시행령 · 대통령령 제36671호 · 시행 2026-09-11 · 확인일 2026-10-23
- 개인정보의 안전성 확보조치 기준 · 개인정보보호위원회 고시 제2026-9호 · 시행 2026-07-01 · 확인일 2026-10-23
- 개인정보 처리 통합 안내서 · 2025.7. · 발행 2025-07-14 · 확인일 2026-10-23