개념
💡 Clean Room(클린 룸) 은 여러 조직이 원본 데이터를 서로 노출하지 않으면서 공동 분석을 수행할 수 있는 안전한 협업 환경입니다. 각 참여자의 데이터는 암호화된 상태로 유지되며, 사전에 합의된 연산만 실행할 수 있습니다.
왜 Clean Room이 필요한가요?
기업 간 데이터 협업은 큰 가치를 만들어낼 수 있지만, 현실적으로 여러 장벽이 존재합니다.| 기존 협업 방법 | 문제점 |
|---|---|
| 데이터 직접 전달 | 개인정보 유출 위험, GDPR/CCPA 위반 가능 |
| API로 결과만 공유 | 개발 비용 높음, 유연성 부족 |
| 공유 데이터베이스 | 원본 데이터 노출, 권한 관리 어려움 |
| 수기 보고서 교환 | 실시간성 없음, 분석 범위 제한 |
💡 GDPR(General Data Protection Regulation)은 EU의 개인정보 보호 규정이고, CCPA(California Consumer Privacy Act)는 미국 캘리포니아주의 소비자 프라이버시 법입니다. 두 규정 모두 개인정보의 제3자 공유를 엄격히 제한합니다.Clean Room은 이러한 문제를 해결합니다.
| Clean Room 장점 | 설명 |
|---|---|
| 데이터 비노출 | 각 참여자의 원본 데이터는 상대방에게 보이지 않습니다 |
| 규제 준수 | GDPR, CCPA, HIPAA 등 프라이버시 규정을 충족합니다 |
| 합의된 연산만 실행 | 사전에 정의된 분석(집계, 매칭 등)만 허용됩니다 |
| 감사 추적 | 누가 어떤 분석을 실행했는지 모든 기록이 남습니다 |
| 중립적 환경 | 어느 한쪽의 인프라에 종속되지 않습니다 |
Clean Room 아키텍처
Databricks Clean Room은 Unity Catalog 와 Delta Sharing 위에 구축된 보안 계층입니다.참여 역할
| 역할 | 설명 |
|---|---|
| 생성자 (Creator) | Clean Room을 만들고, 자신의 데이터를 등록하며, 허용 연산을 정의합니다 |
| 협업자 (Collaborator) | Clean Room에 참여하여 자신의 데이터를 등록하고, 합의된 분석을 실행합니다 |
동작 원리
| 참여자 | 데이터 | 원본 노출 |
|---|---|---|
| 조직 A(생성자) | 고객 구매 데이터 | 비노출 |
| 조직 B(협업자) | 광고 노출 데이터 | 비노출 |
- 사전 합의된 연산만 실행
- 집계 결과만 반환
- 원본 데이터 접근 불가
- 모든 실행 기록 감사
최종 결과: 집계 결과만 공유(개별 레코드 없음)
핵심 구성 요소
| 구성 요소 | 설명 |
|---|---|
| Clean Room | 보안이 적용된 협업 공간입니다. Unity Catalog 메타스토어 위에 생성됩니다 |
| Shared Table | 각 참여자가 Clean Room에 등록한 테이블입니다. 상대방은 원본을 볼 수 없습니다 |
| Notebook Template | Clean Room 안에서 실행할 수 있는 사전 승인된 분석 코드입니다 |
| Output Table | 분석 결과가 저장되는 테이블입니다. 참여자가 확인할 수 있습니다 |
Clean Room 생성 및 참여
1단계: Clean Room 생성 (생성자)
Databricks 워크스페이스의 Data 탭에서 Clean Room을 생성합니다.2단계: 협업자 초대
3단계: 데이터 등록
각 참여자는 자신의 테이블을 Clean Room에 등록합니다.| 역할 | 테이블 | 설명 |
|---|---|---|
| 생성자 | gold.customer_purchases | 고객 구매 기록 |
| gold.customer_segments | 고객 세그먼트 | |
| 협업자 | gold.ad_impressions | 광고 노출 기록 |
| gold.campaign_metadata | 캠페인 메타데이터 |
4단계: 노트북 템플릿 정의 및 실행
⚠️ 중요: Clean Room에서는 개별 레코드를 반환하는 쿼리는 허용되지 않습니다. 반드시 집계(GROUP BY)를 통해 결과를 생성해야 하며, 최소 집계 단위(k-anonymity)를 설정하여 개인 식별을 방지합니다.
허용 연산 정의
Clean Room의 핵심은 어떤 연산을 허용할 것인가 를 사전에 합의하는 것입니다.연산 유형별 허용 여부
| 연산 유형 | 허용 여부 | 설명 |
|---|---|---|
| 집계 (Aggregation) | ✅ 허용 | COUNT, SUM, AVG 등 그룹별 통계 |
| 매칭 (Overlap Analysis) | ✅ 허용 | 두 데이터셋의 공통 사용자 수 계산 |
| 세그먼트 분석 | ✅ 허용 | 특정 조건의 그룹 크기와 통계 |
| 개별 레코드 조회 | ❌ 차단 | SELECT * 같은 원본 데이터 열람 |
| 데이터 내보내기 | ❌ 차단 | 원본 데이터를 외부로 복사 |
| 역추론 쿼리 | ❌ 차단 | WHERE 조건으로 개인을 특정하는 시도 |
프라이버시 보호 메커니즘
| 프라이버시 보호 계층 | 설명 |
|---|---|
| k-Anonymity | 최소 k명 이상의 그룹만 결과에 포함 |
| 집계 강제 | GROUP BY 없는 쿼리 차단 |
| 컬럼 접근 제한 | 민감 컬럼은 매칭 키로만 사용 가능 |
| 감사 로그 | 모든 쿼리와 결과를 기록 |
활용 사례
사례 1: 광고 성과 분석
소매업체와 광고 플랫폼이 개인정보를 공유하지 않고 광고 효과를 측정합니다.사례 2: 의료 데이터 공동 연구
병원과 제약사가 환자 데이터를 노출하지 않고 임상 연구를 수행합니다.사례 3: 금융 사기 탐지
여러 금융 기관이 거래 패턴을 공유하지 않고 사기 의심 계정을 탐지합니다.| 참여자 | 제공 데이터 | 목적 |
|---|---|---|
| 은행 A | 이상 거래 패턴 | 교차 검증 |
| 은행 B | 이상 거래 패턴 | 교차 검증 |
| 분석 결과 | 공통 의심 계정 수 (집계) | 사기 탐지 강화 |
Delta Sharing과의 비교
| 항목 | Delta Sharing | Clean Room |
|---|---|---|
| 데이터 가시성 | 수신자가 원본 데이터를 볼 수 있음 | 원본 데이터를 볼 수 없음 |
| 연산 제어 | 수신자가 자유롭게 분석 | 사전 합의된 연산만 가능 |
| 방향 | 단방향 (제공자 → 수신자) | 양방향 (양측 데이터 결합) |
| 프라이버시 | 데이터 공유 기반 | 데이터 비공유 기반 |
| 적합한 상황 | 파트너에게 데이터 제공 | 민감 데이터 공동 분석 |
주의사항 및 제한
| 항목 | 내용 |
|---|---|
| Unity Catalog 필수 | Clean Room은 Unity Catalog가 활성화된 워크스페이스에서만 사용 가능합니다 |
| Databricks 간 전용 | 현재 양측 모두 Databricks를 사용해야 합니다 |
| 노트북 승인 | 노트북 템플릿은 양측이 합의해야 실행할 수 있습니다 |
| 컴퓨팅 비용 | Clean Room 실행 시 생성자의 컴퓨팅 리소스가 사용됩니다 |
| 리전 제한 | 동일 클라우드 리전 내에서의 협업이 가장 효율적입니다 |
🆕 [2025 업데이트] Clean Room은 지속적으로 기능이 확장되고 있습니다. 최신 지원 범위와 제한사항은 공식 문서를 확인하세요.
정리
| 핵심 개념 | 요약 |
|---|---|
| Clean Room | 데이터를 공유하지 않고 공동 분석하는 보안 환경 |
| 생성자/협업자 | Clean Room을 만드는 쪽과 참여하는 쪽 |
| 노트북 템플릿 | 양측이 합의한 분석 코드만 실행 가능 |
| 프라이버시 보장 | 집계 결과만 반환, 개별 레코드 접근 불가 |
| 활용 분야 | 광고 성과, 의료 연구, 금융 사기 탐지 등 |