Snowflake Data Clean Room 의 차등 개인정보 보호

데이터에 포함된 엔터티의 개인 정보를 보호하기 위해 Snowflake Data Clean Rooms은 차등 개인 정보 보호 를 제공합니다. 차등 개인정보 보호는 단일 쿼리와 데이터 세트의 반복 쿼리 모두에 대해 엔터티 수준의 데이터 보호를 제공하는 수학 기반 개인정보 보호 시스템 [1] 입니다. 데이터 공급자는 클린룸에서 차등 개인정보 보호를 구성하여 강력한 엔터티 수준의 개인정보 보호와 데이터에 대한 낮은 노이즈 수준을 구현할 수 있습니다.

차등 개인정보 보호는 단순 집계 요구 사항의 대안으로, 공격자가 엔터티별로 다른 데이터에 대해 충분히 “근접한” 쿼리를 생성(차등 공격)할 경우 개인 정보가 노출될 수 있습니다.

차등 개인정보 보호는 마스킹된 행에서 조인을 방지하고 분석가에게 유용한 데이터를 숨기는 대신 열 값을 완전히 숨기는 데이터 마스킹의 좋은 대안이기도 합니다. 차등 개인정보 보호는 보호된 열에 대한 조인을 가능하게 하고, 보호된 행의 개인정보를 보호할 수 있을 만큼의 노이즈를 추가함으로써 분석가가 보호된 데이터를 볼 수 있게 해줍니다. 그러나 분석가가 데이터를 사용할 수 없을 정도로 많은 노이즈를 추가하지는 않습니다.

중요

고객은 데이터 개인정보 보호 요구 사항을 충족하기 위해 Snowflake Data Clean Rooms에서 차등 개인정보 보호 도구를 구성할 책임이 있습니다. 이러한 도구는 기본적으로 구성되지 않습니다.

Clean Rooms에서 차등 개인정보 보호가 작동하는 방식

Clean Rooms는 Snowflake 차등 개인정보 보호 와는 다른 자체적인 차등 개인정보 보호 구현을 제공하므로 이 설명서를 읽고 다른 동작과 설정을 이해하십시오.

차등 개인정보 보호는 데이터에서 엔터티 의 개인정보를 보호합니다. Clean Rooms는 엔터티를 열의 고유 값으로 정의합니다. Clean Rooms는 민감한 데이터가 포함된 열을 결정합니다. 예를 들어 주민등록번호나 이메일 주소는 민감한 엔터티일 수 있지만 색상은 그렇지 않을 수 있습니다. 차등 개인정보 보호가 적용되면 Clean Rooms는 각 테이블에서 하나 이상의 엔터티 열을 식별할 수 있습니다. 엔터티 열로 지정되는 열은 구성할 수 없습니다.

Clean Rooms의 차등 개인정보 보호는 또한 각 엔터티와 관련된 숫자 결과에 노이즈를 추가합니다.

사용자는 노이즈를 줄이기 위해 여러 개의 다른 쿼리 결과를 비교하려고 시도할 수 있으며, 이를 차이점 공격 이라고 합니다. 차등 개인정보 보호는 차등 공격을 완화하기 위해 계정에 할당된 개인정보 보호 예산 을 계산하고 모니터링합니다. 각 쿼리에는 해당 쿼리로 인해 노출되는 엔터티 개인정보가 얼마나 되는지를 반영하는 비용이 있습니다. 이 비용은 수학적으로 결정되며 쿼리, 데이터, 해당 사용자의 이전 쿼리에 따라 달라집니다. 쿼리 비용이 남은 개인정보 보호 예산 한도를 초과하면 쿼리가 실패합니다. 그렇지 않으면 쿼리가 계속될 수 있으며 사용자의 일일 개인정보 보호 예산에 비용이 추가됩니다. 개인정보 보호 예산은 매일 새로 고쳐집니다.

Clean Rooms의 차등 개인정보 보호는 쿼리에 집계 제약 조건을 적용하지 않지만, 데이터 또는 템플릿에 독립적으로 집계 제약 조건을 추가 할 수 있습니다.

Snowflake 개인정보 처리방침 에 따라 보호된 테이블에서 뷰를 만들 수 없으므로 개인정보 처리방침이 있는 테이블에 연결할 수 없습니다.

UI 에서 차등 개인정보 보호 활성화 및 관리하기

Clean Room UI 에서 공급자는 템플릿 수준에서 개인정보 보호 설정을 설정할 수 있으며, 컨슈머는 차등 개인정보 보호 설정을 활성화하거나 수정할 수 없습니다. Clean Rooms UI 에서 사용되는 표준 Snowflake 템플릿은 템플릿마다 개인정보 보호 설정이 다를 수 있습니다.

Clean Room UI 를 사용하여 템플릿에 대한 차등 개인정보 보호를 활성화하거나 비활성화하는 방법은 다음과 같습니다.

  1. Clean Rooms 페이지의 Created ` 탭을 엽니다.

  2. (Clean Room에서 분석을 실행할 수 있는지 여부에 따라) Clean Room 타일에서 Edit 또는 더 많은 옵션을 나타내는 세 개의 세로 점 » Edit 를 선택합니다.

  3. Configure Analysis & Query 로 연결될 때까지 Next 를 선택합니다.

  4. 페이지 하단에서 Privacy Settings 를 펼칩니다. Differential Privacy 를 선택하거나 선택 취소하고 사용자에 대한 개인정보 보호 예산 및 쿼리 비용 등 해당 템플릿에 대한 설정을 입력합니다. 이 쿼리에서 임계값을 설정하여 최소 그룹 크기를 적용할 수도 있습니다.

  5. 다른 템플릿에 대한 설정을 구성하려면 먼저 현재 템플릿의 값을 설정한 다음 템플릿 선택기에서 다른 템플릿을 선택합니다.

UI 에서 개인정보 보호 예산 관리하기

남은 개인정보 보호 예산 확인하기

쿼리를 실행하거나 결과를 확인할 때 Privacy Settings 섹션에서 총예산과 사용 금액을 확인할 수 있습니다.

다른 사용자의 개인정보 보호 예산 설정하기

UI 에서 공급자는 개인정보 보호 예산을 설정할 수 있지만 컨슈머는 설정할 수 없습니다.

  1. Clean Room을 편집하고 Configure Analysis & Query 페이지로 이동합니다.

  2. 템플릿을 선택합니다.

  3. 페이지 하단에서 Privacy Settings 를 확장하면 사용자를 위한 개인정보 보호 예산과 쿼리 비용을 확인할 수 있습니다.

API 에서 차등 개인정보 보호 활성화 및 관리하기

Clean Rooms API 에서는 어느 쪽이든 공동 작업자 수준에서 차등 개인정보 보호를 활성화하고 구성할 수 있습니다.

모든 사용자 지정 템플릿은 Clean Room에서 동일한 차등 개인정보 보호 설정을 사용합니다. Snowflake 제공 템플릿은 UI 에서 개별 개인정보 설정을 통해 구성할 수 있습니다.

차등 개인정보 보호를 구성하려면 다음 프로시저를 따르십시오.

  • consumer.enable_templates_for_provider_run - 모든 공급자 실행 분석에 대해 기본값으로 차등 개인정보 보호를 끄거나 켭니다.

  • consumer.set_privacy_settings - 사용자 지정 템플릿을 포함하는 공급자 실행 분석에서 개별 차등 개인정보 보호 설정을 지정합니다.

  • provider.set_privacy_settings - 사용자 지정 템플릿을 포함하는 컨슈머 실행 분석에서 개별 차등 개인정보 보호 설정을 지정합니다.

  • provider.add_custom_sql_template - 컨슈머에 대해 설정된 기준선 엡실론보다 높거나 낮은 템플릿의 엡실론(노이즈 레벨)을 높이거나 낮추려면 감도 매개 변수를 입력합니다.

  • provider.add_consumers - 컨슈머별 개인정보 보호 설정을 지정합니다. 동일한 고객을 여러 번 다른 개인정보 보호 설정으로 추가하여 개인정보 보호 설정을 변경할 수 있습니다.

  • provider.suspend_account_dp_task - 이 계정의 모든 Clean Rooms에 대한 차등 개인정보 보호 예산 모니터링을 해제하십시오. 차등 개인정보 보호는 더 이상 적용되지 않습니다.

  • provider.resume_account_dp_task - 이 계정의 모든 Clean Rooms에 대해 차등 개인정보 보호 예산 모니터링을 활성화합니다. 모든 차등 개인정보 보호 설정은 존중됩니다.

Clean Room의 개인정보 보호 설정은 SAMOOHA_CLEANROOM_cleanroom_ID.admin.privacy_budget 에 저장되며, 여기서 APPLICATION_ID 는 템플릿 이름(NULL 은 모든 사용자 지정 템플릿을 나타냄)을 나타내고 PARTY_ACCOUNT 는 해당 템플릿이 적용되는 사용자입니다.

API 에서 개인정보 보호 예산 관리하기

남은 개인정보 보호 예산 확인하기

컨슈머는 consumer.view_remaining_privacy_budget 프로시저를 호출할 수 있습니다. 공급자가 남은 개인정보 보호 예산을 코드에서 확인할 수 있는 방법은 없습니다.

다른 사용자의 개인정보 보호 예산 설정하기

  • 공급자provider.set_privacy_settings 또는 provider.add_consumers 를 호출합니다.

  • 컨슈머consumer.set_privacy_settings 를 호출하여 공급자 실행 분석에 대한 예산을 설정합니다.

사용 가능한 개인정보 보호 설정

다양한 개인정보 값 설정 프로시저를 사용하여 다음과 같은 개인정보 값을 설정할 수 있습니다.

  • differential (정수) - 1 또는 0, 여기서 1은 차등 개인정보 보호를 활성화해야 함을 의미하고 0은 활성화하지 않아야 함을 의미합니다.

  • epsilon (부동 소수점): 0보다 큰 숫자는 결과에 얼마나 많은 노이즈를 추가해야 하는지를 나타냅니다. 값이 작을수록(0.1~1.0) 개인 정보를 더 강력하게 보호하지만 결과에 더 많은 노이즈가 추가됩니다. 기본값: 0.1.

  • noise_mechanism (문자열) - 결과에 노이즈를 추가하는 데 사용되는 알고리즘입니다. 라플라스 또는 가우시안 을 지정합니다.

  • privacy_budget (정수) - 이 사용자에게 제공할 개인정보 보호 예산의 양, 숫자 >= 0, 여기서 0은 차등 개인정보 보호가 활성화된 경우 쿼리를 실행할 수 없음을 의미합니다. 기본값은 10입니다.

  • threshold (정수) - Snowflake 제공 템플릿에서 threshold_value 를 적용하려면 1을 지정하고, threshold_value 를 무시하려면 0을 지정합니다. 기본값은 0입니다. 이는 Clean Room UI 의 차등 개인정보 보호 토글을 통해 관리됩니다.

  • threshold_value (정수) - 그룹이 데이터에 표시되어야 하는 최소 행 수입니다. 특정 Snowflake 제공 템플릿에서만 사용됩니다.

추가 개인정보 보호 기능

결과에 노이즈 추가하기

차등 개인정보 보호를 구현하지 않고 결과에 노이즈를 수동으로 추가하려면 템플릿 또는 사용자 지정 코드에서 다음 Clean Room 함수를 사용할 수 있습니다. 이 코드는 사용자에게 충분한 개인정보 보호 예산이 있어야 하며 그렇지 않으면 실패합니다. 차등 개인정보 보호 작업이 비활성화되면 사용자는 기본적으로 무한한 예산을 갖게 됩니다.

cleanroom.addnoise(<val>, <epsilon>, <noiserand>, [<gaussian>], [<delta>])
Copy

설명: 차등 개인정보 보호 보장을 충족하기 위해 보정된 노이즈를 숫자 값에 추가합니다. 이 함수는 Clean Room의 컨텍스트에서만 호출할 수 있습니다. 사용자 또는 템플릿에 대해 차등 개인정보 보호를 사용하도록 설정하거나 차등 개인정보 보호 작업을 사용하도록 설정할 필요는 없습니다. 템플릿 또는 UDP/UDTP 에서 이 함수를 사용하십시오.

인자:

  • val (DOUBLE) - 노이즈가 추가될 원래 값입니다.

  • epsilon (DOUBLE) - 개인정보 보호 예산 매개 변수이며, 값이 작을수록(0.1~1.0) 더 강력한 개인정보 보호 기능을 제공하지만 노이즈가 증가합니다. 값은 0보다 큽니다.

  • noiserand (DOUBLE) - 각 결과에 무작위성을 더하는 0과 1 사이의 임의의 값입니다. 정적 값을 전달하지 않고 임의의 값 생성기를 사용하여 즉석에서 계산합니다.

  • gaussian (BOOLEAN, 선택 사항) - TRUE 인 경우 라플라시안 노이즈 대신 가우시안 노이즈를 사용합니다. 기본값은 FALSE 입니다.

  • delta (DOUBLE, 선택 사항) - gaussian 이 TRUE 인 경우 가우스 메커니즘의 델타 매개 변수입니다(작을수록 좋음). 기본값은 0.000001입니다.

반환: 개인정보 보호 노이즈가 추가된 원래 값을 나타내는 DOUBLE 값.

권장 사항:

  • 집계(COUNT, SUM, AVG)에만 적용하고 개별 레코드에는 적용하지 않습니다.

  • 너무 많은 전체 자릿수가 드러나지 않도록 결과를 반올림하는 것을 고려하십시오.

  • 이 함수를 실행하려면 개인정보 보호 예산이 필요하므로 사용자가 예산을 초과할 경우 실패할 수 있습니다.

  • 최소 그룹 크기 제약 조건과 결합하여 보호 기능을 개선하십시오.

예:

이 예제 템플릿은 Clean Room 전체 엡실론 값을 사용하여 고유한 해시된 이메일 값의 수에 노이즈를 추가합니다.

CALL samooha_by_snowflake_local_db.provider.add_custom_sql_template(
$cleanroom_name,
$template_name,
$$
SELECT
  cleanroom.addNoise(
    count(distinct p.hashed_email),  -- Value
    {{ privacy.epsilon | sqlsafe }}, -- Epsilon
    UNIFORM(0::FLOAT, 1::FLOAT, RANDOM()) -- Noiserand
    ) AS noisy_count
FROM
    IDENTIFIER({{ source_table[0] }}) p
$$);
Copy

집계 정책 및 최소 그룹 크기 설정하기

데이터에 대한 집계를 요구하고 최소 그룹 크기를 지정하려면 원본 테이블에 집계 정책 을 설정하거나 템플릿에서 집계를 적용하면 됩니다.

차등 개인정보 보호 비용 관리하기

차등 개인정보 보호는 개별 사용자 또는 템플릿이 차등 개인정보 보호를 활성화하지 않은 경우에도 시스템에서 모든 쿼리를 확인하여 차등 개인정보 보호를 적용해야 하는지 확인하므로 비용이 발생합니다. 이 비용을 없애려면 계정에 대해 차등 개인정보 보호를 비활성화하면 됩니다.

  1. 먼저, 웹 앱을 사용하는 모든 클린룸에 대해 차등 개인정보 보호를 해제합니다.

    1. 웹 앱에 로그인합니다.

    2. 공유 또는 게시되지 않은 경우에도 실패하지 않은 모든 클린룸에서 차등 개인정보 보호를 비활성화합니다.

      1. Clean rooms » Created » Edit 를 선택합니다.

      2. Configure Analysis & Query 로 연결될 때까지 Next 를 선택합니다.

      3. 페이지 하단에서 Privacy Settings 를 펼칩니다. Differential Privacy 를 선택한 경우 선택을 취소한 다음 NextFinish 를 클릭하여 변경 사항을 저장합니다. 선택되지 않은 경우 Cancel 을 클릭하고 다음 클린룸으로 이동하십시오.

  2. 마지막으로, Snowsight에서 provider.suspend_account_dp_task 프로시저 를 호출하여 계정에서 차등 개인정보 보호 백그라운드 작업을 일시 중단합니다.

중요

백그라운드 작업을 비활성화한 후 클린룸에서 차등 개인정보 보호를 사용 설정하면 해당 계정에 대한 작업이 자동으로 다시 활성화됩니다.

몇 가지 참고 사항 및 문제 해결 방법:

  • 클린룸에 대해 차등 개인정보 보호를 비활성화하고 백그라운드 작업을 일시 중단하는 것을 잊은 경우, 이미 차등 개인정보 보호를 설치한 사용자의 경우 해당 클린룸에서 차등 개인정보 보호 함수가 작동하지 않을 수 있습니다.

  • 클린룸을 설치하기 전에 클린룸 내에서 차등 개인정보 보호가 활성화되어 있으면 클린룸 설치가 실패합니다. 이 경우 아래 설명된 대로 클린룸에서 차등 개인정보 보호를 비활성화하거나 작업을 다시 활성화해야 합니다.

나중에 계정에서 차등 개인정보 보호를 사용하려면 계정 내 모든 클린룸에 대해 차등 개인정보 보호를 사용하도록 설정하거나, Snowsight에서 provider.resume_account_dp_task 프로시저 를 호출하십시오.