DLP(Data Loss Prevention)는 민감 데이터가 조직 외부로 유출되는 것을 탐지·차단·모니터링하는 보안 솔루션이다. GDPR, 개인정보보호법 등 컴플라이언스 준수에 필수적이다.
DLP 배포 위치
| 유형 | 모니터링 대상 | 예시 |
|---|
| Network DLP | 이메일, 웹, FTP 트래픽 | Symantec DLP, Forcepoint |
| Endpoint DLP | USB, 프린터, 클립보드 | CrowdStrike, Microsoft Purview |
| Storage DLP | 파일서버, SharePoint, DB | Varonis, Nightfall |
| Cloud DLP | SaaS(Google Drive, OneDrive) | CASB 연동 |
민감 데이터 분류 및 탐지 패턴
python
import re
class DLPScanner:
patterns = {
'ssn_us': r'd{3}-d{2}-d{4}',
'credit_card': r'(?:4d{15}|5[1-5]d{14}|3[47]d{13})',
'email': r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Z|a-z]{2,}',
'resident_id': r'd{6}-[1-4]d{6}', # 주민등록번호
'api_key': r'[A-Za-z0-9]{32,45}',
'password': r'(?i)passwords*[=:]s*S+',
}
def scan(self, text: str) -> list[dict]:
findings = []
for data_type, pattern in self.patterns.items():
matches = re.finditer(pattern, text)
for match in matches:
findings.append({
'type': data_type,
'value': self.mask(match.group()),
'position': match.span()
})
return findings
def mask(self, value: str) -> str:
# 앞 4자리 + **** + 뒤 4자리
if len(value) <= 8:
return '****'
return value[:4] + '*' * (len(value)-8) + value[-4:]
Microsoft Purview DLP 정책
json
{
"PolicyName": "금융데이터보호",
"Rules": [
{
"Name": "신용카드번호탐지",
"ContentContainsSensitiveInformation": [
{
"Name": "Credit Card Number",
"MinCount": 1,
"Confidence": "High"
}
],
"Actions": {
"BlockAccess": true,
"NotifyUser": true,
"GenerateAlert": true
},
"Locations": ["Exchange", "SharePoint", "OneDrive", "Teams"]
}
]
}
DLP 구현 전략
1. 데이터 분류 (Data Classification)
Public → Internal → Confidential → Restricted
2. 데이터 흐름 매핑
어디서(Storage) → 누가(User) → 어디로(Destination)
3. 정책 구현
- 탐지(Detect): 로그만 기록
- 경고(Warn): 사용자에게 알림 후 허용
- 차단(Block): 즉시 차단
- 격리(Quarantine): 검토 후 처리
4. 오탐(False Positive) 관리
- 화이트리스트 설정
- 정기적 규칙 튜닝
관련 문서