PII
개인식별정보(PII) 컬럼을 탐지하고 관리하는 API입니다. PII 컬럼 등록, 확인, 마스킹 뷰 SQL 생성, 자동 스캔 기능을 제공합니다.
엔드포인트
GET /api/v1/pii/columns
설명: 등록된 PII 컬럼 목록을 반환합니다. 카탈로그/스키마/테이블 필터를 지원합니다.
POST /api/v1/pii/columns
설명: PII 컬럼을 수동 등록합니다. (HTTP 201)
요청 본문:
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
| catalog | string | Y | 카탈로그 이름 |
| schema | string | Y | 스키마 이름 |
| table | string | Y | 테이블 이름 |
| column | string | Y | 컬럼 이름 |
| pii_type | string | Y | PII 유형 — 10 종 enum (아래 참조) |
pii_type enum 값 (10 종, #886/#890)
| 값 | 의미 | 권장 sensitivity |
|---|---|---|
email | 이메일 | high |
phone | 전화번호 | high |
ssn | 미국 Social Security Number | critical |
rrn | 한국 주민등록번호 | critical |
card_number | 카드번호 | critical |
account_number | 계좌번호 | critical |
name | 이름 | low |
address | 주소 | high |
date_of_birth | 생년월일 | medium |
ip_address | IP 주소 | medium |
ssn 과 rrn 은 의미가 다르므로 한국 데이터에는 rrn 사용. 신규 데이터셋의 PII 타입이 위 10 종에 매핑되지 않으면 enum 확장 issue 발행.
DELETE /api/v1/pii/columns/{column_id}
설명: PII 컬럼 등록을 삭제합니다.
PATCH /api/v1/pii/columns/{column_id}/confirm
설명: 자동 탐지된 PII 컬럼을 사용자가 확인 처리합니다. 갱신된 PIIColumnResponse 전체 를 반환합니다 (confirmed_by / confirmed_at audit 필드 포함). UI 가 응답으로 로컬 row 를 그대로 교체해도 catalog / schema / table 등 식별자가 보존됩니다.
응답 (200 OK):
{
"id": "uuid",
"catalog_name": "hive",
"schema_name": "default",
"table_name": "customers",
"column_name": "email",
"pii_type": "email",
"sensitivity": "high",
"mask_function": "redact",
"confirmed": true,
"detected_by": "manual",
"confirmed_by": "admin",
"confirmed_at": "2026-05-19T18:39:33+09:00",
"created_at": "2026-05-19T18:00:00+09:00"
}
GET /api/v1/pii/view-sql/{catalog}/{schema}/{table}
설명: PII 컬럼이 마스킹 처리된 뷰 SQL을 생성하여 반환합니다.
응답 (200 OK):
{ "table_fqn": "hive.default.customers", "sql": "SELECT ...", "pii_columns": 3 }
POST /api/v1/pii/scan/trigger
설명: 지정 테이블에 대한 PII 자동 탐지 스캔을 시작합니다.
GET /api/v1/pii/activity
설명: PII 활동 로그 (register / confirm / delete / scan_trigger 4 종 이벤트) 를 시간순(최신 우선)으로 반환합니다.
쿼리 파라미터:
| 파라미터 | 타입 | 설명 |
|---|---|---|
event_type | string | register / confirm / delete / scan_trigger 중 하나로 필터 |
actor | string | 행위자 사용자명 정확 일치 필터 |
target | string | target_fqn 부분 일치 필터 (예: customers) |
limit | int | 1 ~ 200, 기본 50 |
offset | int | 페이지네이션 오프셋, 기본 0 |
응답 (200 OK):
{
"items": [
{
"id": "uuid",
"event_type": "confirm",
"actor": "admin",
"target_fqn": "hive.default.customers.email",
"pii_column_id": "uuid",
"details": null,
"event_at": "2026-05-19T18:39:33+09:00"
}
],
"total": 1
}
활동 로그는 append-only 이며, PII 컬럼이 삭제되어도 해당 이벤트는 보존됩니다 (delete 이벤트의 target_fqn / details 는 삭제 시점 스냅샷). 자세한 사용 가이드는 PII 활동 로그 참조.
인증
JWT Bearer 토큰이 필요합니다.
에러 코드
| 코드 | 설명 |
|---|---|
| 400 | 잘못된 식별자 또는 PII 유형 |
| 404 | 컬럼 또는 테이블을 찾을 수 없음 |
| 500 | PII 스캔 또는 뷰 생성 실패 |