MoAI-Privacy-Filter-INT8 / label-taxonomy.yaml
becleverksh's picture
Upload int8-weight-only release artifact
ad336d5 verified
Raw
History Blame Contribute Delete
14.2 kB
# =============================================================================
# Label Mapping - ai4privacy 1.5m ๋ผ๋ฒจ -> ๋‚ด๋ถ€ ํ•™์Šต ๋ผ๋ฒจ ๋งคํ•‘ ํ…Œ์ด๋ธ”
#
# * ์—ญํ• : ๋ชจ๋ธ ํ•™์Šต ๋ผ๋ฒจ = ๋กœ๊น… ์Šคํ‚ค๋งˆ ํ‚ค = ์ •์ฑ… ํ…Œ์ด๋ธ” ํ‚ค์˜ ๋‹จ์ผ ์†Œ์Šค
# (docs/handoff/2026-07-03-pii-masking-architecture-qna.md [13])
# * ์—ญ์‚ฐ ๊ทผ๊ฑฐ: playbooks/privacy_filter/privacy-filter-policy.md (ํ‘œ 1 ์ •ํ˜• ํŒจํ„ด / ํ‘œ 2 ๋งˆ์Šคํ‚น ๊ธฐ์ค€)
# * ์‹ค์ธก ๊ทผ๊ฑฐ: docs/handoff/2026-07-03-ai4privacy-1p5m-ko-audit.md (v0 ์ดˆ์•ˆ + ko ์„œ๋ธŒ์…‹ ๊ฐ์‚ฌ)
# * v0 -> v1 ๋ณ€๊ฒฝ: ์ฃผ์†Œ ์ฒ˜๋ฆฌ ํ™•์ •(๋‹จ์ผ+์„œ๋ธŒ๋งˆ์Šคํ‚น) / FRN ์‹ ์„ค / USER_IDยทACCOUNT_NUMBER
# ๋“œ๋กญ ์ฒ ํšŒ / ์—ฌ๊ถŒยท์šด์ „๋ฉดํ—ˆ ๋ถ„๋ฆฌ ์œ ์ง€ / regex ์ „๋‹ด ํ•ญ๋ชฉ ๋ถ„๋ฆฌ
# * 2026-07-21: AGEยทGENDER ๋“œ๋กญ ํ™•์ • (ํ‘œ1ยทํ‘œ2 ๋ฌด๊ทผ๊ฑฐ - ์ •์ฑ… ์—ญ์‚ฐ ์›์น™ ๊ด€์ฒ , N=17 -> 15)
# * 2026-07-21: ํ‘œ2 ๋ฌธ๋งฅ ํ•ญ๋ชฉ 3์ข… ๋ชจ๋ธ ์Šน๊ฒฉ (CARD_EXPIRYยทCVCยทIPIN - ๋ฌธ๋งฅ ๊ฒ€์ถœ์€ ๋ชจ๋ธ ๋ ˆ์ธ
# ๋ณธ๋ น, ํ‚ค์›Œ๋“œ regex๋Š” ์ด์ค‘ ๋ ˆ์ธ ๋ณ‘ํ–‰. N=15 -> 18, 61 -> 73ํด๋ž˜์Šค)
# =============================================================================
version: v1
date: 2026-07-21
basis:
policy: playbooks/privacy_filter/privacy-filter-policy.md
audit: docs/handoff/2026-07-03-ai4privacy-1p5m-ko-audit.md
# -----------------------------------------------------------------------------
# 1. ๋ชจ๋ธ ํ•™์Šต ๋ผ๋ฒจ (N=18 -> BIOES 4N+1 = 73ํด๋ž˜์Šค)
# * data_source: ๋ผ๋ฒจ ํ‘œ๋ณธ์˜ ์ถœ์ฒ˜ ๋ฆฌ์ŠคํŠธ - ko(1.5m-ko ์ •์ œ๋ณธ) / en(1.5m-en ๋ฆฌํ”Œ๋ ˆ์ด) /
# domain(๋„๋ฉ”์ธ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ๋Œ€๊ธฐ - ํ—ค๋“œ๋Š” ์œ ์‚ฌ ๋ผ๋ฒจ ํ–‰ ๋ณต์‚ฌ๋กœ init)
# * RRN์˜ 1.5m ์œ ๋ž˜๋ถ„์€ ko ํ•œ์ • (en TAXNUM์€ GENERIC_ID fallback) - domain์€ ์ฆ๊ฐ• ๋ฐฉ์‹ B
# * en ๋ถ„ํฌ ์‹ค์ธก (2026-07-13, 163,740ํ–‰/1,247,393์ŠคํŒฌ): ์ƒ์œ„ 19์ข… ์ง‘์ค‘ - PASSWORD 0,
# ACCOUNTNUM 1, USERNAME 20 -> "ํฌ์†Œ ๋ผ๋ฒจ์€ en ๋‹ด๋‹น" ๊ฐ€์„ค ๊ธฐ๊ฐ, [domain] ์žฌ๋ฐฐ์ •
# -----------------------------------------------------------------------------
model_labels:
- name: PERSON
description: ์„ฑ๋ช… (์„ฑ+์ด๋ฆ„ ๋ณ‘ํ•ฉ ๋‹จ์ผ ์ŠคํŒฌ)
policy_ref: "ํ‘œ2 ์„ฑ๋ช… (๊น€*์šฉ - ์ฒซยท๋ ๊ธ€์ž ์ œ์™ธ) / ํ‘œ2 ์„ฑ๋ช…(์˜๋ฌธ) (์•ž 4์ž๋ฆฌ ๋…ธ์ถœ) - ์น˜ํ™˜ ์‹œ ์Šคํฌ๋ฆฝํŠธ(ํ•œ๊ธ€/์˜๋ฌธ)๋กœ ๊ทœ์น™ ๋ถ„๊ธฐ, full-span ๊ฒฝ๊ณ„ ํ•„์ˆ˜"
data_source: [ko, en]
head_init_base: private_person
- name: RRN
description: ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ
policy_ref: "ํ‘œ1 ์ฃผ๋ฏผ๋ฒˆํ˜ธ / ํ‘œ2 ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ (๋’ค 7์ž๋ฆฌ ๋งˆ์Šคํ‚น)"
data_source: [ko, domain] # domain = ์ฆ๊ฐ• ๋ฐฉ์‹ B ์‹ ๊ทœ ์ƒ์„ฑ๋ถ„ (์ „๋žต๋ฌธ ยง3.3.1)
head_init_base: account_number
- name: FRN
description: ์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ (์‹ ์„ค - 1.5m ์†Œ์Šค 0๊ฑด)
policy_ref: "ํ‘œ1 ์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ ([5-8] ์‹œ์ž‘) / ํ‘œ2 ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ(์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ ํฌํ•จ) (๋’ค 7์ž๋ฆฌ)"
data_source: [domain]
head_init_from: RRN
- name: CARD_NUMBER
description: ์‹ ์šฉ/์ฒดํฌ์นด๋“œ ๋ฒˆํ˜ธ
policy_ref: "ํ‘œ1 ์นด๋“œ๋ฒˆํ˜ธ / ํ‘œ2 ์นด๋“œ๋ฒˆํ˜ธ (7~12๋ฒˆ์งธ ์ž๋ฆฌ, PCI-DSS)"
data_source: [ko, en, domain] # domain = ์ฆ๊ฐ• ๋ฐฉ์‹ B ์‹ ๊ทœ ์ƒ์„ฑ๋ถ„ (์ „๋žต๋ฌธ ยง3.3.1)
head_init_base: account_number
- name: ACCOUNT_NUMBER
description: ๊ณ„์ขŒ๋ฒˆํ˜ธ (v0 ๋“œ๋กญ ์ฒ ํšŒ - ํ‘œ2 ๋งˆ์Šคํ‚น ๊ธฐ์ค€ ์กด์žฌ)
policy_ref: "ํ‘œ1 ๊ณ„์ขŒ๋ฒˆํ˜ธ (์ „ํ™”๋ฒˆํ˜ธ ํก์ˆ˜ ์œ„ํ—˜ - recognizer ์šฐ์„ ์ˆœ์œ„ ํ•„์š”) / ํ‘œ2 ๊ณ„์ขŒ๋ฒˆํ˜ธ (๋’ค 5์ž๋ฆฌ)"
data_source: [domain] # ko 5ยทen 1๊ฑด ์‹ค์ธก - ํ•ฉ์„ฑ ์ฆ๊ฐ• ํ•„์ˆ˜ (์€ํ–‰๋ณ„ ํฌ๋งท ๊ทœ์น™ ์ƒ์„ฑ ์šฉ์ด)
head_init_base: account_number
- name: SECRET
description: ์ธ์ฆ ์‹œํฌ๋ฆฟ (๋น„๋ฐ€๋ฒˆํ˜ธยทAPI ํ‚คยทํ† ํฐ ํ†ตํ•ฉ - ์นด๋“œ/ํšŒ์›/ISP ๊ตฌ๋ถ„์€ ๋ฌธ๋งฅ ๋ถˆ๊ฐ€ + ์•ก์…˜ ๋™์ผ)
policy_ref: "ํ‘œ2 ์นด๋“œ๋น„๋ฐ€๋ฒˆํ˜ธยท์˜จ๋ผ์ธ ํšŒ์› ํŒจ์Šค์›Œ๋“œยทISP๋น„๋ฐ€๋ฒˆํ˜ธ (์ฒ˜๋ฆฌ ๊ธˆ์ง€ -> ๊ฒŒ์ดํŠธ์›จ์ด์—์„œ๋Š” LLM ๋…ธ์ถœ ๊ธˆ์ง€ = ์ „์ฒด ๋งˆ์Šคํ‚น์œผ๋กœ ํ•ด์„)"
data_source: [domain] # 1.5m ์ „๋ฌด (ko 4ยทen 0 ์‹ค์ธก) - ๋„๋ฉ”์ธ/ํ•ฉ์„ฑ ์ฆ๊ฐ• ์ „๋‹ด
head_init_base: secret # base 8์ข… ์ค‘ secret ํ–‰ ์ •ํ™• ๋ณต์‚ฌ (์ธ์ ‘ ์•„๋‹Œ ์ง๊ณ„ ์ƒ์†)
- name: USER_ID
description: ์˜จ๋ผ์ธ ํšŒ์› ID (v0 ๋“œ๋กญ ์ฒ ํšŒ - ํ‘œ2 ๋งˆ์Šคํ‚น ๊ธฐ์ค€ ์กด์žฌ)
policy_ref: "ํ‘œ2 ์˜จ๋ผ์ธ ํšŒ์› ID (์•ž 2์ž๋ฆฌ ์ œ์™ธ)"
data_source: [domain] # ko 4ยทen 20๊ฑด ์‹ค์ธก - ์ฆ๊ฐ• ํ•„์ˆ˜
head_init_base: account_number
- name: EMAIL
description: ์ด๋ฉ”์ผ ์ฃผ์†Œ
policy_ref: "ํ‘œ1 ์ด๋ฉ”์ผ / ํ‘œ2 ์ด๋ฉ”์ผ์ฃผ์†Œ (ID ์•ž 2์ž๋ฆฌ ์ œ์™ธ ๋งˆ์Šคํ‚น)"
data_source: [ko, en]
head_init_base: private_email
- name: PHONE
description: ์ „ํ™”๋ฒˆํ˜ธ (ํœด๋Œ€ํฐ/์ผ๋ฐ˜์ „ํ™” ํ†ตํ•ฉ - ์น˜ํ™˜ ๋‹จ๊ณ„์—์„œ ํ”„๋ฆฌํ”ฝ์Šค๋กœ ์žฌ๋ถ„๋ฅ˜)
policy_ref: "ํ‘œ1 ํœด๋Œ€ํฐ๋ฒˆํ˜ธยท์ „ํ™”๋ฒˆํ˜ธ / ํ‘œ2 ๊ธฐ๋ณธ ๋’ค 6์ž๋ฆฌ ๊ณตํ†ต - ๋‚ด๋ถ€๋ง ์ฑ„๋„ ํ•œ์ • ํœด๋Œ€ํฐ
๋’ค 4์ž๋ฆฌ ์™„ํ™” (์น˜ํ™˜ ์‹œ ๊ฐ’ ํ”„๋ฆฌํ”ฝ์Šค๋กœ ํœด๋Œ€ํฐ ํŒ๋ณ„ + ์ฑ„๋„ ์ถ• ๋ถ„๊ธฐ)"
data_source: [ko, en]
head_init_base: private_phone
- name: PASSPORT
description: ์—ฌ๊ถŒ๋ฒˆํ˜ธ (๋ถ„๋ฆฌ ์œ ์ง€ - ๋งˆ์Šคํ‚น ๊ธฐ์ค€ ์ƒ์ด + ko 3,211๊ฑด)
policy_ref: "ํ‘œ1 ์—ฌ๊ถŒ๋ฒˆํ˜ธ / ํ‘œ2 ์—ฌ๊ถŒ๋ฒˆํ˜ธ (๋’ค 4์ž๋ฆฌ)"
data_source: [ko, en]
head_init_base: account_number
- name: DRIVER_LICENSE
description: ์šด์ „๋ฉดํ—ˆ๋ฒˆํ˜ธ (๋ถ„๋ฆฌ ์œ ์ง€ - ๋งˆ์Šคํ‚น ๊ธฐ์ค€ ์ƒ์ด + ko 4,092๊ฑด)
policy_ref: "ํ‘œ1 ์šด์ „๋ฉดํ—ˆ๋ฒˆํ˜ธ / ํ‘œ2 ์šด์ „๋ฉดํ—ˆ๋ฒˆํ˜ธ (์ค‘๊ฐ„ 6์ž๋ฆฌ)"
data_source: [ko, en]
head_init_base: account_number
- name: GENERIC_ID
description: ๋ฒ”์šฉ ์‹๋ณ„์ž (ํ•œ๊ตญ ๋Œ€์‘๋ฌผ ์—†๋Š” ID๋ฅ˜ - recall-first๋กœ O ๋Œ€์‹  ์œ ์ง€)
policy_ref: "audit ยง5 (SOCIALNUM 10์ž๋ฆฌยทIDCARDNUM ์˜์ˆซ์ž)"
data_source: [ko, en]
head_init_base: account_number
- name: ADDRESS
description: ์ฃผ์†Œ (์‹œยท๋„๋กœ๋ช…ยท๊ฑด๋ฌผ๋ฒˆํ˜ธ ํ†ตํ•ฉ ์ŠคํŒฌ - ์น˜ํ™˜ ๋‹จ๊ณ„์—์„œ ์ˆซ์ž ์„œ๋ธŒ๋งˆ์Šคํ‚น)
policy_ref: "ํ‘œ2 ์ฃผ์†Œ (์ง€๋ฒˆ: ์/๋ฉด/๋™ ๋ฏธ๋งŒ ์ˆซ์ž / ๋„๋กœ๋ช…: ๊ฑด๋ฌผ๋ฒˆํ˜ธยท์ƒ์„ธ์ฃผ์†Œ ์ˆซ์ž ๋งˆ์Šคํ‚น -> ์ŠคํŒฌ ๋‚ด ๊ทœ์น™ ์น˜ํ™˜)"
data_source: [ko, en]
head_init_base: private_address
- name: ZIPCODE
description: ์šฐํŽธ๋ฒˆํ˜ธ (๋ถ„๋ฆฌ ์œ ์ง€ - keep ํ† ๊ธ€ ์„ธ๋ถ„์„ฑ ์ „์ œ)
policy_ref: "handoff [10] ZIPCODE keep ์‹ค์ฆ"
data_source: [ko, en]
head_init_base: private_address
- name: DATE
description: ๋‚ ์งœยท์‹œ๊ฐ (์ƒ๋…„์›”์ผ ๋ฏธ๋ถ„๋ฆฌ - ko ๋ฐ์ดํ„ฐ DOB 0๊ฑด + ๊ณผ์ž‰ ๋งˆ์Šคํ‚น ์ค€์ˆ˜ ์ธ์ • ์กฐํ•ญ)
policy_ref: "ํ‘œ2 ์ƒ๋…„์›”์ผ (๋…ธ์ถœ ๊ธˆ์ง€ - DATE ์ „์ฒด ๋งˆ์Šคํ‚น์œผ๋กœ ์ดˆ๊ณผ ์ค€์ˆ˜)"
data_source: [ko, en]
head_init_base: private_date
- name: CARD_EXPIRY
description: ์นด๋“œ์œ ํšจ๊ธฐํ•œ (ํ‘œ2 ๋ฌธ๋งฅ ํ•ญ๋ชฉ ์Šน๊ฒฉ 2026-07-21 - ํ‚ค์›Œ๋“œ regex ์ด์ค‘ ๋ ˆ์ธ ๋ณ‘ํ–‰)
policy_ref: "ํ‘œ2 ์นด๋“œ์œ ํšจ๊ธฐํ•œ (**/** ์ „์ฒด ๋งˆ์Šคํ‚น)"
data_source: [domain] # 1.5m ์›์ฒœ 0๊ฑด - ์ฆ๊ฐ• ์ „๋‹ด (PAN ๋™๋ฐ˜ ๋ฌธ๋งฅ ์ƒ์„ฑ)
head_init_base: private_date
- name: CVC
description: ์นด๋“œ๊ฒ€์ฆ์ฝ”๋“œ (CVC/CVV/CAV ํ†ตํ•ฉ - ํ‘œ2 ๋ฌธ๋งฅ ํ•ญ๋ชฉ ์Šน๊ฒฉ 2026-07-21)
policy_ref: "ํ‘œ2 ์นด๋“œ๊ฒ€์ฆ์ฝ”๋“œ (์ €์žฅยท์ถœ๋ ฅ ๊ธˆ์ง€ -> ๊ฒŒ์ดํŠธ์›จ์ด ์ „์ฒด ๋งˆ์Šคํ‚น ํ•ด์„)"
data_source: [domain] # 1.5m ์›์ฒœ 0๊ฑด - ์ฆ๊ฐ• ์ „๋‹ด (๋‹จ๋… ์ƒ์„ฑ ๊ธˆ์ง€ - PAN ๋™๋ฐ˜ ํ•„์ˆ˜)
head_init_base: account_number
- name: IPIN
description: I-PIN ๋ฒˆํ˜ธ (ํ‘œ2 ๋ฌธ๋งฅ ํ•ญ๋ชฉ ์Šน๊ฒฉ 2026-07-21 - ๊ฐ’ ๊ทœ๊ฒฉ pending)
policy_ref: "ํ‘œ2 I-PIN (๋’ค 5์ž๋ฆฌ - ํ•˜์ดํ”ˆ ๋ฌด๊ด€ ์ˆซ์ž ๊ธฐ์ค€)"
data_source: [domain] # 1.5m ์›์ฒœ 0๊ฑด - ๊ทœ๊ฒฉ ํ™•์ • ์ „ ํŒŒ์ผ๋Ÿฟ ์ˆ˜๋Ÿ‰๋งŒ
head_init_base: account_number
# -----------------------------------------------------------------------------
# 2. ์†Œ์Šค ๋ผ๋ฒจ ๋งคํ•‘ (ai4privacy 1.5m -> ๋‚ด๋ถ€ ๋ผ๋ฒจ)
# * "O" = ํ•™์Šต์—์„œ ๋น„์—”ํ‹ฐํ‹ฐ ์ฒ˜๋ฆฌ (๋“œ๋กญ ๋ฆฌ์ŠคํŠธ - ์ •์ฑ…ํŒ€ ์ปจํŽŒ ํ›„ ํ™•์ •)
# * ์กฐ๊ฑด๋ถ€ ๋งคํ•‘์€ locale + value_pattern ์•ˆ์ „์žฅ์น˜ ๋™๋ฐ˜
# -----------------------------------------------------------------------------
source_mapping: # <source_mapping>
GIVENNAME: PERSON
SURNAME: PERSON
TITLE: O # ๊ตฐ/์–‘/gun/yang ์ง์—ญ ์กด์นญ 88% - ์ „๋Ÿ‰ ๋“œ๋กญ
TAXNUM:
label: RRN # <conditional_mapping>
condition:
locale: ko
value_pattern: '^\d{6}-[1-4]\d{6}$' # ์‹ค์ธก 3,975/3,975 ์ •ํ•ฉ - ์•ˆ์ „์žฅ์น˜
fallback: GENERIC_ID # ๋น„์ •ํ•ฉ ๊ฐ’ / ํƒ€ ๋กœ์ผ€์ผ(en ๋ฆฌํ”Œ๋ ˆ์ด)์€ ์„ธ๋ฌด ID -> ๋ฒ”์šฉ ID
SOCIALNUM: GENERIC_ID
IDCARDNUM: GENERIC_ID
DRIVERLICENSENUM: DRIVER_LICENSE
PASSPORTNUM: PASSPORT
TELEPHONENUM: PHONE
EMAIL: EMAIL
CREDITCARDNUMBER: CARD_NUMBER
ACCOUNTNUM: ACCOUNT_NUMBER
CITY: ADDRESS
STREET: ADDRESS
BUILDINGNUM: ADDRESS
ZIPCODE: ZIPCODE
DATE: DATE
TIME: DATE
AGE: O # 2026-07-21 ๋“œ๋กญ ํ™•์ • - ํ‘œ1ยทํ‘œ2 ๋ฌด๊ทผ๊ฑฐ (quasi-identifier ์กด์น˜์•ˆ ํ๊ธฐ)
GENDER: O # ใ€ƒ
SEX: O # ใ€ƒ (GENDER ์ค‘๋ณต ์†Œ์Šค)
USERNAME: USER_ID
PASSWORD: SECRET # ko 4ยทen 0๊ฑด - ์‹œ๋“œ ๋ฏธ๋ฏธ, ๋ณธ ํ‘œ๋ณธ์€ ๋„๋ฉ”์ธ/ํ•ฉ์„ฑ ์ฆ๊ฐ•
# ๋กฑํ…Œ์ผ (ko <= 40๊ฑด, ํ•™์Šต ๋ผ๋ฒจ ๋ถ€์ ๊ฒฉ) - ์ •์ฑ…ํŒ€ ์ปจํŽŒ ๋Œ€๊ธฐ ๋“œ๋กญ ๋ฆฌ์ŠคํŠธ
ORGANISATION: O
URL: O
AMOUNT: O
COUNTRY: O
CURRENCY: O
BANKNAME: O
TIMEZONE: O
SALARY: O
IPV4: O # ๊ณ ๊ฐ IP๋Š” ํ‘œ2 ํ•ญ๋ชฉ์ด๋‚˜ ko 2๊ฑด - 1์ฐจ regex(ํ‘œ1 IP์ฃผ์†Œ) ์ „๋‹ด
JOBTITLE: O
HOSPITALNAME: O
ALLERGIES: O
WEIGHT: O # en ์ „์šฉ ๋ผ๋ฒจ (ko 0๊ฑด) - 2026-07-13 en ์ „์ˆ˜ ๊ฒ€์ฆ์—์„œ ๋ฐœ๊ฒฌ, ์ •์ฑ… ์™ธ
HEIGHT: O # validation ์ „์šฉ ํฌ์†Œ ๋ผ๋ฒจ (ko 1๊ฑด + en 1๊ฑด) - 2026-07-22 refine fail-fast๋กœ ๋ฐœ๊ฒฌ, ์ •์ฑ… ์™ธ
# -----------------------------------------------------------------------------
# 3. ๋ณ‘ํ•ฉ ๊ทœ์น™ (์ •์ œ ์Šคํฌ๋ฆฝํŠธ 2๋‹จ๊ณ„ - ์ธ์ ‘ ์ŠคํŒฌ ๋ณ‘ํ•ฉ, koยทen ๊ณตํ†ต)
# * ๋ณ‘ํ•ฉ์€ ์–ธ์–ด ๊ณตํ†ต (en "John Smith"๋„ ๋‹จ์ผ ์ŠคํŒฌ์ด์–ด์•ผ ํ‘œ2 ์˜๋ฌธ ์„ฑ๋ช… ๊ทœ์น™ ์„ฑ๋ฆฝ)
# * ko ์ „์šฉ์€ ๋ณ‘ํ•ฉ์ด ์•„๋‹ˆ๋ผ ๊ทธ ๋‹ค์Œ์˜ "์ž์—ฐํ™”"(์„ฑ+๋ช… ๋ถ™์—ฌ์“ฐ๊ธฐ - ์ „๋žต๋ฌธ ยง3.4.2 (1) 2๋‹จ๊ณ„)
# * ์ˆœ์„œ ๊ฐ•์ œ ๊ธˆ์ง€: ko ์ฃผ์†Œ๋Š” ํฐ -> ์ž‘, en ์ฃผ์†Œ๋Š” ์ž‘ -> ํฐ ์—ญ์ˆœ - ์ธ์ ‘์„ฑ๋งŒ ์กฐ๊ฑด
#
# * gap_allowed : ๋‘ ์—”ํ‹ฐํ‹ฐ ์‚ฌ์ด์˜ ์ธ์‹ยทํ—ˆ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ ๋ฐ ํŒจํ„ด
# - whitespace (๊ณต๋ฐฑยทํƒญ)
# - punct (๊ตฌ๋‘์  : `, . - ยท / ( )` ๋“ฑ ๋ฌธ์žฅ ๋ถ€ํ˜ธ)
# -----------------------------------------------------------------------------
merge_rules: # <merge_rules>
person:
source_labels: [GIVENNAME, SURNAME]
max_gap_chars: 4
gap_allowed: whitespace_or_punct
output_label: PERSON
address:
source_labels: [CITY, STREET, BUILDINGNUM]
max_gap_chars: 4
gap_allowed: whitespace_or_punct
output_label: ADDRESS
# -----------------------------------------------------------------------------
# 4. 1์ฐจ regex ์ „๋‹ด ํ•ญ๋ชฉ (๋ชจ๋ธ ๋ผ๋ฒจ ์ œ์™ธ - ๋กœ๊น… ์Šคํ‚ค๋งˆ ํ‚ค์—๋Š” ํฌํ•จ)
# * ํ‘œ1 ์ •ํ˜• ํŒจํ„ด recognizer๊ฐ€ ๊ฒ€์ถœ, ์น˜ํ™˜ ์ •์ฑ…์€ ํ‘œ2 ์ค€์šฉ
# -----------------------------------------------------------------------------
regex_only:
- key: CI
policy_ref: "ํ‘œ1 CI (86์ž+`==` ๊ณ ์ •, lookaround ๊ฒฝ๊ณ„ - ๊ฒ€์ˆ˜ ๋ณด๊ฐ• 2026-07-21) / ํ‘œ2 CI (์•ž 7์ž๋ฆฌ ๋…ธ์ถœ)"
# SHA-512 base64 ๋™ํ˜• ๊ณผํƒ ํ—ˆ์šฉ - ์ •๋ฐ€๋„ ํ•„์š”์‹œ ciยท์—ฐ๊ณ„์ •๋ณด ํ‚ค์›Œ๋“œ ๊ฐ€์ 
- key: IP_ADDRESS
policy_ref: "ํ‘œ1 IP์ฃผ์†Œ (์˜ฅํ…Ÿ 0~255 ์—„๊ฒฉํ˜• - ๊ฒ€์ˆ˜ ๋ณด๊ฐ• 2026-07-21) / ํ‘œ2 ๊ณ ๊ฐ์˜ IP์ฃผ์†Œ (์•ž 3์ž๋ฆฌ = ์ฒซ ์˜ฅํ…Ÿ ๋งˆ์Šคํ‚น ํ•ด์„, IPv4 ํ•œ์ •)"
# -----------------------------------------------------------------------------
# 4-1. 1์ฐจ regex ๋ณ‘ํ–‰ (์ด์ค‘ ๋ ˆ์ธ) - ๋ชจ๋ธ ๋ผ๋ฒจ์ด๋ฉด์„œ ํ‚ค์›Œ๋“œ regex๋„ ๋ณ‘ํ–‰
# * 2026-07-21 ๋ชจ๋ธ ์Šน๊ฒฉ 3์ข…: ํ‚ค์›Œ๋“œ regex(๊ณ ์ •๋ฐ€ ์ €recall - ๋ช…์‹œ ๋ฌธํ˜•) + ๋ชจ๋ธ(๋ฌดํ‚ค์›Œ๋“œ
# ๋งฅ๋ฝ recall) union - ๋ฌธ๋งฅ ์˜์กด ๊ฒ€์ถœ์€ ๋ชจ๋ธ ๋ ˆ์ธ์˜ ์กด์žฌ ์ด์œ 
# * ํŒจํ„ด ์—”์ง„ ์ „์ œ: Python re (lookbehind ์‚ฌ์šฉ - RE2/Hyperscan ๊ณ„์—ด ๋น„ํ˜ธํ™˜)
# * ์น˜ํ™˜์€ ๊ฐ’ ์บก์ฒ˜๊ทธ๋ฃน๋งŒ (ํ‚ค์›Œ๋“œ ๋ณด์กด = ์ถ”์ ์„ฑ)
# -----------------------------------------------------------------------------
regex_assist:
- key: CARD_EXPIRY
patterns:
keyword: '(?i)(์œ ํšจ\s*๊ธฐ[๊ฐ„ํ•œ]|expir\w*|valid\s*thru)\D{0,12}(0[1-9]|1[0-2])\s*[/.\-]\s*((?:20)?\d\d)(?!\d)'
pan_adjacent: '(0[1-9]|1[0-2])\s*/\s*\d{2}(?!\d)' # ์นด๋“œ๋ฒˆํ˜ธ ๋งค์น˜ ์งํ›„ \D{0,20} ์œˆ๋„์šฐ ๋‚ด์—์„œ๋งŒ ์ ์šฉ
- key: CVC
patterns:
keyword: '(?i)(\b(?:cv[vc]2?|security\s*code)\b|์นด๋“œ\s*๊ฒ€์ฆ\s*(?:๋ฒˆํ˜ธ|์ฝ”๋“œ|๊ฐ’)?|๋ณด์•ˆ\s*์ฝ”๋“œ)\W{0,6}(?!(?:19|20)\d\d(?!\d))(\d{3,4})(?!\d)'
# CIDยทCSC ํ‚ค์›Œ๋“œ ๊ธฐ๋ณธ ์ œ์™ธ (correlation ID ์ถฉ๋Œ). ์ •๋ฐ€๋„ ์˜ต์…˜: PAN co-occurrence ๊ฒŒ์ดํŠธ
- key: IPIN
patterns:
keyword: '(?i)(์•„์ดํ•€|i[-\s]?pin)\s*(?:๋ฒˆํ˜ธ|no\.?)?\D{0,8}(\d{6}[-\s]?\d{7})(?!\d)'
# ์ฃผ๋ฏผ๋ฒˆํ˜ธ ๊ทœ์น™ ์„ ํ–‰ ์ ์šฉ ํ›„ ์ž”์—ฌ๋ถ„๋งŒ IPIN. ๊ฐ’ ๊ทœ๊ฒฉ(13์ž๋ฆฌ ๊ฐ€์ •) ํ™•์ธ ํ•„์š” (pending)
# -----------------------------------------------------------------------------
# 5. ์Šค์ฝ”ํ”„ ์™ธ - ํ…์ŠคํŠธ ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ๋‹ค๋ฃจ์ง€ ์•Š๋Š” ํ‘œ2 ํ•ญ๋ชฉ (์„ ์–ธ์  ๊ธฐ๋ก)
# -----------------------------------------------------------------------------
out_of_scope:
- key: VIDEO_PERSONAL_INFO
policy_ref: "ํ‘œ2 ๊ฐœ์ธ์˜์ƒ์ •๋ณด (๊ฒ€์ • ๋ชฉ์  ์™ธ ์ฒ˜๋ฆฌ ๊ธˆ์ง€)"
reason: "ํ…์ŠคํŠธ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์•„๋‹Œ ๋ชจ๋‹ฌ๋ฆฌํ‹ฐ(์ด๋ฏธ์ง€ยท์˜์ƒ) - ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ž…๋ ฅ ๊ฒฝ๋กœ๊ฐ€ ์—ด๋ฆฌ๋ฉด
ํ…์ŠคํŠธ ํ•„ํ„ฐ๋ฅผ ์šฐํšŒํ•˜๋ฏ€๋กœ ๋ณ„๋„ ํ†ต์ œ(์ž…๋ ฅ ์ฐจ๋‹จ or ๋น„์ „ ํ•„ํ„ฐ) ํ•„์š”"
# -----------------------------------------------------------------------------
# 6. ๋ฏธ๊ฒฐ - ์ •์ฑ…ํŒ€ ์ปจํŽŒ ํ•ญ๋ชฉ, TBD
# -----------------------------------------------------------------------------
pending_confirmation:
- "๋“œ๋กญ ๋ฆฌ์ŠคํŠธ(O ๋งคํ•‘) ์ „์ฒด = ๋น„PII ์„ ์–ธ - ํŠนํžˆ ORGANISATIONยทAMOUNTยทSALARY"
- "IPIN ๊ฐ’ ๊ทœ๊ฒฉ (13์ž๋ฆฌ ๊ฐ€์ •) - ์ œ๊ณต๊ธฐ๊ด€ ๊ณ„์•ฝ ํ™•์ธ (CVC ๊ฒ€์ถœ ๊ทœ์น™์€ 2026-07-21 ํ‚ค์›Œ๋“œ ๋™๋ฐ˜ ํŒจํ„ด ์ฑ„ํƒ์œผ๋กœ ํ•ด์†Œ)"
- "SECRET ์‹ ์„ค ์ฑ„ํƒ (2026-07-13) - ํ‘œ2 ์ฒ˜๋ฆฌ๊ธˆ์ง€๋ฅ˜์˜ '๊ฒŒ์ดํŠธ์›จ์ด ์ „์ฒด ๋งˆ์Šคํ‚น' ํ•ด์„์€
์ •์ฑ…ํŒ€ ์‚ฌํ›„ ์ปจํŽŒ ๋Œ€์ƒ"