프라이버시 제어 조정하기

프라이버시 제어 조정하기

이 주제는 데이터 소유자가 Snowflake가 결과에 노이즈를 도입하는 데 사용하는 프라이버시 제어를 조정할 수 있는 기법을 설명해요. Snowflake는 이 문서에 제시된 순서대로 이 옵션들을 시도할 것을 권장해요.

출처: Snowflake User Guide - Adjust privacy controls

본문

Snowflake는 프라이버시 예산의 프라이버시 손실 한도와 집계(aggregate)당 사용되는 최대 프라이버시 예산 양(차등 프라이버시 문헌에서 총칭해 엡실론(epsilon)이라 함)을 조정하는 파라미터를 제공해요.

1단계: 프라이버시 도메인 조정하기

프라이버시 예산을 조정하기 전에 프라이버시 보호 테이블의 컬럼에 설정된 프라이버시 도메인(privacy domain)을 조정하는 것을 고려해야 해요. Snowflake는 컬럼의 모든 값을 모호하게 할 만큼 충분한 노이즈를 도입하므로, 값의 범위가 넓을수록 도입해야 하는 노이즈가 많아져요. 다음 지침을 따라요.

  • 노이즈를 늘리려면: 범위를 넓혀 실제 값보다 크거나 작은 값을 포함해요. 프라이버시 도메인은 모든 가능한 값을 정의하며 실제 값이 아니라는 점을 기억해요.
  • 노이즈를 줄이려면: 유용한 범위 밖의 값을 제외하거나 클램프하도록 프라이버시 도메인을 좁혀요.

참고: 분석가도 노이즈를 줄이기 위해 프라이버시 도메인을 좁힐 수 있어요.

2단계: MAX_BUDGET_PER_AGGREGATE 파라미터 조정하기

프라이버시 도메인을 조정했지만 여전히 프라이버시 제어를 미세 조정해야 한다면 프라이버시 예산에 영향을 주는 설정을 수정하기 시작할 수 있어요. 프라이버시 정책 본문에서 MAX_BUDGET_PER_AGGREGATE 파라미터를 조정하면 쿼리의 각 집계에 프라이버시 예산 중 얼마를 쓸 수 있는지(즉 집계가 발생시킬 수 있는 프라이버시 손실의 양)를 제어해요. 이 파라미터를 조정하면 각 집계 쿼리에 추가되는 노이즈의 양과, 프라이버시 예산 한도에 도달하기 전에 실행할 수 있는 집계 수가 달라져요.

이 파라미터는 쿼리가 아니라 각 집계의 수준을 설정해요. 예를 들어 SELECT COUNT(*), AVG(a) ... 쿼리에는 COUNT(*)와 AVG(a) 두 집계가 있어요.

쿼리의 각 집계가 발생하는 최대 프라이버시 손실을 조정하려면 ALTER PRIVACY POLICY 명령으로 MAX_BUDGET_PER_AGGREGATE 파라미터에 새 값을 설정해요.

ALTER PRIVACY POLICY my_policy SET MAX_BUDGET_PER_AGGREGATE = 0.05;

3단계: 프라이버시 예산 한도 조정하기

다른 프라이버시 제어를 조정해도 원하는 결과를 얻지 못하면 프라이버시 예산의 프라이버시 손실 한도를 조정할 수 있어요. 다른 프라이버시 제어가 쿼리 결과의 노이즈 양에 영향을 주는 반면, 예산 한도를 조정하는 것은 분석가가 실행할 수 있는 쿼리 수에 영향을 줘요.

분석가가 프라이버시 보호 테이블에 대해 집계 함수가 있는 쿼리를 실행할 때마다 분석가의 누적 프라이버시 손실이 증가하고, 남은 집계의 추정 수가 감소해요. 누적 프라이버시 손실이 프라이버시 예산의 한도에 도달하면 분석가는 더 이상 쿼리를 실행할 수 없어요. 분석가에게 데이터의 유용성을 최대화하려면 각 예산 창 기간 동안 분석가가 실행할 것이라고 생각하는 쿼리 수를 기준으로 예산 한도를 정할 수 있어요.

참고: 누적 프라이버시 손실은 예산 창(budget window)이 정의하는 고정 스케줄에 따라 0으로 재설정된다는 점을 기억해요. 프라이버시 예산이 재설정되면 분석가는 다시 쿼리를 실행할 수 있어요.

더 알아보기