6.1 ๋ฐ์ดํฐ ๋ถ๋ฅ๋?
Data Classification(๋ฐ์ดํฐ ๋ถ๋ฅ)๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ ์์ค, ๊ท์ ์๊ตฌ์ฌํญ, ๋น์ฆ๋์ค ์ค์๋์ ๋ฐ๋ผ ๋ฒ์ฃผํํ๋ ํ๋ก์ธ์ค์ ๋๋ค.
- ๋ณด์: ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ์ ์ ํ ๋ณดํธ ์กฐ์น ์ ์ฉ
- ๊ท์ ์ค์: GDPR, CCPA ๋ฑ ๋ฒ์ ์๊ตฌ์ฌํญ ์ถฉ์กฑ
- ๋ฆฌ์คํฌ ๊ด๋ฆฌ: ๋ฐ์ดํฐ ์ ์ถ ์ ์ํฅ๋ ํ๊ฐ
- ์ ๊ทผ ์ ์ด: ๋๊ฐ ์ด๋ค ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋์ง ๊ฒฐ์
6.2 ๋ฐ์ดํฐ ๋ถ๋ฅ ์ฒด๊ณ
| ๋ถ๋ฅ | ์ค๋ช | ์์ | ๋ณด์ ์์ค |
|---|---|---|---|
| PUBLIC | ๊ณต๊ฐ ๋ฐ์ดํฐ | ํ์ฌ ์๊ฐ, ๊ณต๊ฐ API ๋ฌธ์ | ๋ฎ์ |
| INTERNAL | ๋ด๋ถ ์ฌ์ฉ ๋ฐ์ดํฐ | ์กฐ์ง๋, ๋ด๋ถ ์ํค | ์ค๊ฐ |
| CONFIDENTIAL | ๊ธฐ๋ฐ ๋ฐ์ดํฐ | ๋งค์ถ ๋ฐ์ดํฐ, ์ ๋ต ๊ณํ | ๋์ |
| RESTRICTED | ์ ํ ๋ฐ์ดํฐ | ๊ฐ์ธ์ ๋ณด, ๊ธ์ต ์ ๋ณด | ๋งค์ฐ ๋์ |
6.3 ์ฃผ์ ๋ฐ์ดํฐ ๋ถ๋ฅ ์ ํ
1) PII (Personally Identifiable Information)
๊ฐ์ธ์ ์๋ณํ ์ ์๋ ์ ๋ณด
- ์ง์ ์๋ณ์: ์ด๋ฆ, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ, ์ฌ๊ถ๋ฒํธ
- ์ค์๋ณ์: ์๋ ์์ผ, ์ฐํธ๋ฒํธ, ์ฑ๋ณ
- ์ฐ๋ฝ์ฒ: ์ด๋ฉ์ผ, ์ ํ๋ฒํธ, ์ฃผ์
2) Financial Data
๊ธ์ต ๊ด๋ จ ๋ฏผ๊ฐ ์ ๋ณด
- ์ ์ฉ์นด๋ ๋ฒํธ, ๊ณ์ข๋ฒํธ
- ๊ฑฐ๋ ๋ด์ญ, ๊ฒฐ์ ์ ๋ณด
- ๊ธ์ฌ, ์ฌ๋ฌด ์ ํ
3) PHI (Protected Health Information)
๊ฑด๊ฐ ๊ด๋ จ ๋ณดํธ ์ ๋ณด (HIPAA ๊ท์ )
- ์๋ฃ ๊ธฐ๋ก, ์ง๋จ ๊ฒฐ๊ณผ
- ์ฒ๋ฐฉ์ , ๋ณดํ ์ ๋ณด
4) Business Critical
๋น์ฆ๋์ค ํต์ฌ ์ ๋ณด
- ์์ ๋น๋ฐ, ํนํ
- ๊ณ ๊ฐ ๊ณ์ฝ์
- ์ ๋ต ๊ณํ, ์ธ์ํฉ๋ณ ์ ๋ณด
6.4 ์๋ ๋ถ๋ฅ (Auto-Classification)
๋ถ๋ฅ ๊ท์น ๊ธฐ๋ฐ
{
"classification": "PII",
"rules": [
{
"rule_type": "COLUMN_NAME_PATTERN",
"patterns": ["email", "phone", "ssn", "address", "name", "birth"],
"confidence": 0.8
},
{
"rule_type": "DATA_PATTERN",
"pattern": "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b",
"description": "Email pattern",
"confidence": 0.95
},
{
"rule_type": "DATA_PATTERN",
"pattern": "\\d{3}-\\d{4}-\\d{4}",
"description": "Korean phone number",
"confidence": 0.9
}
]
}
ML ๊ธฐ๋ฐ ๋ถ๋ฅ
๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ด์ฉ์ ๋ถ์ํ๊ณ ์๋์ผ๋ก ๋ถ๋ฅํฉ๋๋ค.
- ๋ฐ์ดํฐ ํ๋กํ์ผ๋ง: ์ํ ๋ฐ์ดํฐ ์์ง ๋ฐ ๋ถ์
- ํจํด ํ์ต: ์ด๋ฏธ ๋ถ๋ฅ๋ ๋ฐ์ดํฐ๋ก ๋ชจ๋ธ ํ์ต
- ์๋ ์ถ๋ก : ์ ๋ฐ์ดํฐ์ ๋ํด ๋ถ๋ฅ ์์ธก
- ์ ๋ขฐ๋ ํ๊ฐ: ๋ถ๋ฅ ์ ํ๋ ์ ์ ์ ๊ณต
- ๊ท์น ๊ธฐ๋ฐ: ๋ช ํํ ํจํด (์ด๋ฉ์ผ, ์ ํ๋ฒํธ)
- ML ๊ธฐ๋ฐ: ์ ๋งคํ ๊ฒฝ์ฐ (์์ ํ ์คํธ, ๋ณต์กํ ํจํด)
- ์ฌ๋ ๊ฒ์ฆ: ์ ๋ขฐ๋ ๋ฎ์ ๊ฒฝ์ฐ ๋ฆฌ๋ทฐ ์์ฒญ
6.5 ํ๊น ์ ๋ต
ํ๊ทธ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฐํ๊ฒ ๋ถ๋ฅํ๊ณ ์กฐ์งํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
ํ๊ทธ ์นดํ ๊ณ ๋ฆฌ
| ์นดํ ๊ณ ๋ฆฌ | ๋ชฉ์ | ์์ |
|---|---|---|
| Domain | ๋น์ฆ๋์ค ๋๋ฉ์ธ | customer, product, sales, marketing |
| Team | ์์ ํ | data-team, analytics-team, eng-team |
| Quality | ๋ฐ์ดํฐ ํ์ง | gold, silver, bronze |
| Compliance | ๊ท์ ์ค์ | gdpr, ccpa, pci-dss, hipaa |
| Environment | ํ๊ฒฝ | prod, staging, dev |
| Usage | ์ฌ์ฉ ๋ชฉ์ | analytics, reporting, ml-training |
ํ๊ทธ ๋ช ๋ช ๊ท์น
โ
์ข์ ์:
- customer-domain
- data-team
- gdpr-compliant
- high-quality
โ ๋์ ์:
- Customer Domain (๊ณต๋ฐฑ ํฌํจ)
- DataTeam (CamelCase)
- GDPR_COMPLIANT (์ธ๋์ค์ฝ์ด, ๋๋ฌธ์)
- high quality (๊ณต๋ฐฑ)
6.6 PII ์๋ ํ์ง
Python ์์ ์ฝ๋
import re
from typing import List, Dict
def detect_pii(column_name: str, sample_values: List[str]) -> Dict:
"""
์ปฌ๋ผ๋ช
๊ณผ ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ์ฌ PII๋ฅผ ํ์งํฉ๋๋ค.
"""
pii_patterns = {
'email': r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b',
'phone': r'\d{3}-\d{4}-\d{4}',
'ssn': r'\d{6}-\d{7}',
'credit_card': r'\d{4}-\d{4}-\d{4}-\d{4}'
}
# ์ปฌ๋ผ๋ช
์ฒดํฌ
pii_keywords = ['email', 'phone', 'ssn', 'address', 'name', 'birth']
column_match = any(keyword in column_name.lower() for keyword in pii_keywords)
# ๋ฐ์ดํฐ ํจํด ์ฒดํฌ
pattern_matches = {}
for pii_type, pattern in pii_patterns.items():
matches = sum(1 for value in sample_values if re.search(pattern, str(value)))
if matches > 0:
pattern_matches[pii_type] = matches / len(sample_values)
is_pii = column_match or len(pattern_matches) > 0
return {
'is_pii': is_pii,
'column_match': column_match,
'pattern_matches': pattern_matches,
'confidence': calculate_confidence(column_match, pattern_matches)
}
# ์ฌ์ฉ ์์
result = detect_pii(
'customer_email',
['john@example.com', 'jane@company.com', 'alice@domain.com']
)
print(result)
# {'is_pii': True, 'column_match': True,
# 'pattern_matches': {'email': 1.0}, 'confidence': 0.95}
6.7 ๋ณด์ ์ ์ฑ ์ ์ฉ
๋ถ๋ฅ๋ณ ์๋ ์กฐ์น
| ๋ถ๋ฅ | ์๋ ์กฐ์น |
|---|---|
| PII | - ์ํธํ ํ์ - ์ ๊ทผ ๋ก๊ทธ ํ์ฑํ - ๋ง์คํน ์ ์ฉ (๋นํ๋ก๋์ ) |
| FINANCIAL | - ๊ฐ์ฌ ์ถ์ ํ์ฑํ - ์ ํ๋ ์ ๊ทผ ๊ถํ - ๋ฐ์ดํฐ ๋ณด์กด ์ ์ฑ ์ ์ฉ |
| PUBLIC | - ์ ํ ์์ |
- ์๋ ๋ถ๋ฅ์ ์ ํ๋๋ 100%๊ฐ ์๋๋๋ค
- ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ ๋ฐ๋์ ์ฌ๋์ด ๊ฒ์ฆํด์ผ ํฉ๋๋ค
- ๊ณผ๋ํ ๋ถ๋ฅ๋ ์ ๋ฌด ํจ์จ์ ์ ํดํ ์ ์์ต๋๋ค
- ์ ๊ธฐ์ ์ธ ๋ถ๋ฅ ์ฌ๊ฒํ ๊ฐ ํ์ํฉ๋๋ค
6.8 ๊ท์ ์ค์
GDPR ์ค์
- ๋ชจ๋ PII ๋ฐ์ดํฐ ์์น ์ถ์
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ชฉ์ ๋ฌธ์ํ
- ๊ฐ์ธ์ ๋ณด ์ญ์ ์์ฒญ ์ฒ๋ฆฌ (Right to be Forgotten)
- ๋ฐ์ดํฐ ํฌํฐ๋น๋ฆฌํฐ ์ง์
CCPA (California Consumer Privacy Act)
- ์์ง๋๋ ๊ฐ์ธ์ ๋ณด ์ ํ ๊ณต๊ฐ
- ๊ฐ์ธ์ ๋ณด ํ๋งค ์ค๋จ ์์ฒญ ์ฒ๋ฆฌ
- ๊ฐ์ธ์ ๋ณด ์ ๊ทผ ๊ถํ ์ ๊ณต
6.9 ์ค์ ๊ตฌํ
1. ์ค์บ ๋จ๊ณ
- ์ ํ
์ด๋ธ/์ปฌ๋ผ ๊ฐ์ง
- ์ํ ๋ฐ์ดํฐ ์์ง (์์ 1000ํ)
2. ๋ถ์ ๋จ๊ณ
- ์ปฌ๋ผ๋ช
ํจํด ๋งค์นญ
- ๋ฐ์ดํฐ ํจํด ๋ถ์
- ML ๋ชจ๋ธ ์ถ๋ก
3. ๋ถ๋ฅ ๋จ๊ณ
- ์ ๋ขฐ๋ >= 90%: ์๋ ๋ถ๋ฅ
- ์ ๋ขฐ๋ 70-89%: ๋ฆฌ๋ทฐ ํ์ ์ถ๊ฐ
- ์ ๋ขฐ๋ < 70%: ์๋ ๋ถ๋ฅ ์์ฒญ
4. ์ ์ฉ ๋จ๊ณ
- ๋ถ๋ฅ ํ๊ทธ ๋ถ์ฌ
- ๋ณด์ ์ ์ฑ
์ ์ฉ
- ์๋ฆผ ๋ฐ์ก
5. ๋ชจ๋ํฐ๋ง
- ๋ถ๋ฅ ์ ํ๋ ์ถ์
- ํผ๋๋ฐฑ ์์ง
- ๋ชจ๋ธ ์ฌํ์ต
6.10 ๋ค์ ์ฅ ์๊ณ
๋ค์ ์ฅ์์๋ ํ๋ซํผ๋ณ ํ์ฉ๋ฒ์ ๋ค๋ฃน๋๋ค. Apache Atlas, DataHub, Collibra ๋ฑ ์ฃผ์ ๋ฐ์ดํฐ ์นดํ๋ก๊ทธ ํ๋ซํผ์ ํน์ง๊ณผ ํ์ฉ๋ฒ์ ๋น๊ตํฉ๋๋ค.