차등 프라이버시 구현하기
차등 프라이버시 구현하기
이 주제는 계정에 차등 프라이버시를 구현하는 데이터 프로바이더를 위한 정보를 포함해요.
출처: Snowflake User Guide - Implementing differential privacy
본문
데이터 세트에 차등 프라이버시를 구현할 때 데이터 프로바이더의 작업은 세 가지 핵심 개념을 다뤄요.
- 프라이버시 정책(Privacy policies): 테이블이나 뷰에 프라이버시 정책을 할당하기 전까지는 그 객체가 차등 프라이버시로 보호되지 않아요. 프라이버시 정책이 있는 테이블이나 뷰는 프라이버시 보호 대상으로 간주돼요.
- 프라이버시 예산(Privacy budgets): 분석가가 프라이버시 보호 테이블을 쿼리할 때 그 분석가들과 연관된 프라이버시 예산을 관리할 수 있어요.
- 프라이버시 도메인(Privacy domains): 프라이버시 보호 테이블이나 뷰의 팩트(fact)와 차원(dimension) 컬럼에 대한 프라이버시 도메인을 정의해야 해요.
제한 사항:
- 같은 테이블이나 뷰에 프라이버시 정책과 집계 정책(aggregation policy) 또는 마스킹 정책을 함께 할당할 수 없어요.
- 노이즈 구간을 쿼리하는 것 외에 분석가는 프라이버시 보호 테이블을 쿼리하고 있는지 알지 못하므로, 데이터 프로바이더는 분석가에게 쿼리 결과에 노이즈가 포함된다는 것을 알려야 해요.
- 데이터 프로바이더는 다른 계정에서 쿼리를 실행하는 분석가가 발생시킨 프라이버시 손실을 모니터링할 수 없어요.
- 한 테이블에 여러 프라이버시 정책을 적용하는 것은 현재 지원되지 않아요. 때문에 단일 테이블에서 엔터티 수준 차등 프라이버시로 하나 이상의 엔터티를 보호하는 것은 불가능해요.
- 엔터티 키(entity key)와 연관된 프라이버시 정책이 있는 복제되거나 클론된 테이블에 대한 쿼리는 현재 차단돼요.
엔터티 수준 프라이버시에 대해
엔터티는 보호해야 하는 데이터 주체의 클래스, 예를 들어 사람, 조직, 또는 위치를 나타내요. 각 개별 엔터티가 한 행에만 나타난다면 행 수준 프라이버시로 그들의 정체를 보호하기에 충분해요. 그러나 개별 엔터티에 속한 데이터가 여러 행에 나타난다면(예: 트랜잭션 데이터에서), 각 엔터티를 올바르게 보호하려면 차등 프라이버시가 엔터티 수준 프라이버시로 구성되어야 해요.
엔터티 수준 프라이버시를 달성하기 위해 Snowflake는 어떤 속성이 엔터티를 식별하는 데 사용될 수 있는지(엔터티 키) 지정하게 해줘요. 이것으로 Snowflake가 데이터 세트 안에서 특정 엔터티에 속한 모든 레코드를 식별할 수 있게 해요. 예를 들어 엔터티 키가 email 컬럼으로 정의되면, Snowflake는 [email protected]인 모든 레코드가 같은 엔터티에 속한다고 판단할 수 있어요.
대부분의 경우 엔터티 수준 프라이버시가 행 수준 프라이버시보다 선호되지만, 다음이 성립하면 행 수준 프라이버시가 테이블에 잘 맞을 수 있어요.
- 테이블의 어떤 컬럼도 엔터티를 고유하게 식별하지 않는 경우 (엔터티 수준 프라이버시는 식별 컬럼을 요구해요.)
- 각 개별 엔터티가 한 번만 나타나는 경우
- 테이블이 조인에 사용되지 않는 경우
프라이버시 정책을 테이블이나 뷰에 할당할 때 엔터티 수준 또는 행 수준 프라이버시를 구현할지 선택해요. 엔터티 수준 프라이버시를 구현한다면 데이터가 구조적 요구 사항도 충족해야 해요.
팁: 같은 프라이버시 정책으로 두 개의 별도 테이블을 보호하고 싶지만 같은 엔터티 키 값을 갖지 않는다면, 두 식별 컬럼을 매핑하는 새 테이블을 만들고, 두 테이블을 조인하는 뷰를 만들고, 그 뷰에 프라이버시 정책을 적용할 수 있어요. 예를 들어 한 테이블의 엔터티 키가
user_id지만 둘 다 같은 엔터티를 가리킨다면 이 전략을 사용할 수 있어요.
엔터티 수준 프라이버시의 구조적 요구 사항:
엔터티 수준 차등 프라이버시로 보호된 데이터의 구조는 특정 요구 사항을 따라야 해요. Snowflake가 엔터티와 연관된 프라이버시 손실을 정확히 추적할 수 있도록 이 요구 사항이 충족되어야 해요. 프라이버시 정책을 적용하기 전에 이 요구 사항을 충족하도록 데이터를 구조화해야 해요. Snowflake는 이 요구 사항이 데이터의 의미에 관한 것이지 차등 프라이버시 구현에 관한 것이 아니기 때문에 데이터가 구조적 요구 사항을 준수하는지 판단할 수 없어요. 예를 들어 두 다른 테이블의 엔터티 키가 모두 user_id 컬럼으로 설정됐지만, 한 컬럼은 숫자 식별자 값을 포함하고 다른 컬럼은 이메일 주소를 포함한다면 Snowflake는 엔터티 정보를 올바르게 연결할 수 없어요.
Snowflake 기능과의 상호작용
데이터 공유: 프라이버시 보호 객체를 공유할 수 있어요. 프라이버시 손실은 소비자 계정에서 발생할 수 있어요.
복제: 복제된 테이블에 엔터티 키와 연관된 프라이버시 정책이 있으면 쿼리가 현재 차단돼요.
크로스 클라우드 자동 이행: 관련 동작이 적용돼요.
클로닝: 클론된 프라이버시 보호 테이블에 대한 쿼리는 제한될 수 있어요.
프라이버시 보호 기본 객체 위에 지어진 뷰: 프라이버시 보호 객체 위에 지어진 뷰는 특정 규칙을 따라요.
구체화된 뷰, UDF, 스트림, 기타 정책, 동적 테이블, 외부 테이블, 타임 트래블: 프라이버시 보호 객체와의 상호작용에 제한이 있을 수 있어요.