집계 정책을 사용하여 엔터티 수준 개인정보 보호 구현하기

엔터티 수준의 개인정보 보호는 집계 정책에서 제공하는 개인정보 보호 기능을 강화합니다. 엔터티 수준 개인정보 보호를 사용하면 Snowflake는 집계 그룹에 특정 수의 행이 아닌 특정 수의 엔터티가 포함되도록 할 수 있습니다.

집계 정책과 관련된 대부분의 작업 및 고려 사항은 엔터티 수준의 개인정보 보호 구현 여부와 관계없이 동일합니다. 집계 정책 작업에 대한 일반 정보는 집계 정책 섹션을 참조하십시오.

엔터티 수준 개인정보 보호 정보

엔터티 는 논리적 오브젝트(예: 사용자 프로필이나 가구 정보)에 속한 특성 세트를 나타냅니다. 이러한 특성은 데이터 세트 내의 엔터티를 식별하기 위한 용도로 사용할 수 있습니다. 엔터티 수준 개인정보 보호는 공유 데이터 세트에 저장된 엔터티의 개인정보를 보호하는 개인정보 보호 강화 기술(PET)의 기능입니다. 이는 해당 특성이 여러 레코드에서 발견되더라도 쿼리에서 엔터티의 민감한 특성이 노출되지 않도록 합니다.

엔터티 수준의 개인정보 보호를 위해 Snowflake에서는 엔터티를 식별하는 데 사용할 수 있는 특성(엔터티 키)을 지정할 수 있습니다. 이를 통해 Snowflake는 데이터 세트 내의 특정 엔터티에 속하는 모든 레코드를 식별할 수 있습니다. 예를 들어 엔터티 키가 email 열로 정의된 경우, Snowflake는 email=joe.smith@example.com 가 속한 모든 레코드가 동일한 엔터티에 속하는 것으로 판단할 수 있습니다.

엔터티 수준 개인정보 보호가 없는 집계 정책

기본적으로 집계 정책에서는 분석가가 개별 행을 검색하는 대신 데이터를 집계하는 쿼리를 실행해야 하므로 행 수준의 개인정보 보호 가 달성됩니다. 그러나 행 수준 프라이버시는 해당 특성이 여러 행(예: 트랜잭션 데이터가 포함된 테이블)에서 발견되는 경우 쿼리에서 엔터티의 특성이 노출되는 것을 방지하지 못합니다.

예를 들어, 스트리밍 서비스 ActonViz에 프로그램을 시청하는 각 시청자의 이메일 주소(user_id) 및 가구(household_id)가 포함된 트랜잭션 테이블이 있다고 가정해 보겠습니다.

user_id

household_id

program_id

watch_time

시작_시간

dave_sr@company.com

12345

1

29

2023-09-12 09:00

mary@bazco.com

23485

1

30

2023-09-12 09:00

dave_sr@company.com

12345

6

18

2023-09-11 13:00

joe@jupiterlink.com

85456

6

25

2023-09-15 22:00

junior@example.com

12345

5

30

2023-09-13 11:00

ActonViz는 광고주가 최소 2개의 레코드가 포함된 그룹으로 데이터를 집계하도록 강제하기 위해 집계 정책을 사용할 수 있습니다. 이를 통해 광고주가 개별 레코드에서 데이터를 검색하는 것을 방지할 수 있습니다(행 수준 개인정보 보호). 각 시청자 및 가구가 테이블에 한 번만 나타나면 개인 정보를 보호하기에 충분합니다.

하지만 광고주의 쿼리를 통해 시청자와 시청자의 가구에 대한 정보를 파악할 수 있습니다. 쿼리를 통해 가구 12345 의 레코드로만 구성된 그룹이 생성되거나, 더 심하게는 시청자 dave_sr 의 레코드로만 구성된 그룹이 생성될 수도 있습니다. 두 경우 모두 그룹의 레코드 수가 ActonViz에서 설정한 요구 사항(그룹당 최소 2개 레코드)을 충족합니다.

엔터티 수준 개인정보 보호 기능이 있는 집계 정책

엔터티 수준의 개인정보 보호를 달성하기 위해 Snowflake에서는 테이블이나 뷰에 집계 정책을 할당할 때 엔터티 키를 지정할 수 있습니다. 엔터티 키가 정의된 후 집계 제약이 있는 테이블 또는 뷰에 대한 쿼리가 반환하는 그룹에는 지정된 수의 행이 아니라 지정된 수의 엔터티가 포함되어야 합니다.

앞의 예제에서 ActonViz는 각 가구를 고유하게 식별하기 때문에 household_id 를 엔터티 키로 정의한다고 가정해 보겠습니다. 이제 각 가구의 개인정보 보호가 보존됩니다. 변경 전에는 그룹이 household_id = 12345 인 레코드로만 구성될 수 있었지만, 이제 그룹에는 최소 두 개의 고유 household_id 값이 포함되어야 합니다.

엔터티 키가 항상 테이블의 기본 키 와 동일한 것은 아닙니다. 이 예제에서 테이블은 뷰어를 고유하게 식별하기 때문에 user_id 를 기본 키로 사용할 수 있습니다. 하지만 이 경우 ActonViz는 여러 시청자로 구성된 전체 가구의 개인 정보를 보호하고 싶었기 때문에 엔터티 키로 household_id 를 선택했습니다.

최소 그룹 크기 정보

모든 집계 정책은 최소 그룹 크기를 지정합니다. 엔터티 수준의 개인정보 보호가 없으면 최소 그룹 크기는 집계 그룹에 포함되어야 하는 레코드 수를 정의합니다. 엔터티 키가 지정되면 최소 그룹 크기는 집계 그룹에 포함되어야 하는 엔터티 수를 정의합니다.

다음 열 수준 정책은 Snowflake가 집계 그룹에 충분한 엔터티가 있는지 계산하는 방법에 영향을 미치지 않습니다.

  • 프로젝션 정책은 효과가 없습니다.

  • 마스킹 정책은 효과가 없습니다. 마스킹 정책이 GROUP BY 열에 할당되면 쿼리에 의해 형성된 집계 그룹은 마스킹 정책에서 반환된 값을 기반으로 합니다. 각 그룹에는 충분한 엔터티가 있어야 합니다.

이름 참조가 여러 번 사용되는 경우(예제: JOIN 또는 UNION 연산자) Snowflake는 각 데이터 세트의 각 이름 참조에 대한 최소 그룹 크기를 개별적으로 적용합니다. 이는 참조가 동일한 데이터 세트를 여러 번 가리키는 경우에도 적용됩니다.

집계 정책으로 엔터티 수준의 개인정보 보호 적용

집계 정책을 사용하여 엔터티 수준의 개인정보 보호를 적용하려면 다음을 수행합니다.

  1. 집계 정책 생성을 위해 CREATE AGGREGATION POLICY 명령을 실행할 때 각 집계 그룹에 포함해야 하는 엔터티의 수를 지정 합니다.

  2. 테이블 또는 뷰에 집계 정책을 할당할 때 엔터티 키를 정의 합니다.

최소 엔터티 수 지정

엔터티 키를 사용하여 엔터티 수준의 개인 정보 보호를 수행하는 경우 CREATE AGGREGATION POLICY 를 사용하여 집계 정책을 생성하는 구문은 변경되지 않습니다. AGGREGATION_CONSTRAINT 함수의 MIN_GROUP_SIZE 인자를 사용하여 최소 그룹 크기를 지정하는 기능은 계속 제공됩니다. 엔터티 키를 정의 하는 즉시 최소 그룹 크기가 그룹 내 레코드 수에 대한 요구 사항에서 그룹 내 엔터티 수로 변경됩니다.

예를 들어, 다음 코드는 최소 그룹 크기가 5인 집계 정책을 생성합니다. 정책을 테이블에 할당할 때 엔터티 키를 정의하는 한, 각 집계 그룹에는 최소 5개의 엔터티가 포함되어야 합니다.

CREATE AGGREGATION POLICY my_agg_policy
  AS () RETURNS AGGREGATION_CONSTRAINT ->
  AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE => 5);
Copy

다양한 상황에서 다양한 제한을 적용하는 조건부 집계 정책의 예를 포함하여 집계 정책 생성에 대한 전체 세부 정보는 집계 정책 만들기 섹션을 참조하십시오.

엔터티 키 정의

테이블이나 뷰에 집계 정책을 할당할 때 테이블의 엔터티 키를 정의합니다. 새 테이블 또는 뷰를 생성 하거나 기존 뷰 테이블을 업데이트 할 때 엔터티 키를 정의할 수 있습니다.

기존 테이블 및 뷰에 대한 엔터티 키 정의

ALTER TABLE … SET AGGREGATION POLICY 명령 또는 ALTER VIEW … SET AGGREGATION POLICY 명령을 실행하여 집계 정책을 할당할 때 ENTITY KEY 절을 사용하여 테이블 또는 뷰에서 엔터티의 식별 특성(즉, 엔터티 키)을 포함하는 열을 지정합니다.

예를 들어, viewership_log 테이블에 집계 정책 my_agg_policy 을 할당하면서 엔터티 키를 생성하려면 다음을 실행합니다.

ALTER TABLE viewership_log
  SET AGGREGATION POLICY my_agg_policy
  ENTITY KEY (first_name,last_name);
Copy

first_namelast_name 은 엔터티 키이므로 집계 정책은 first_name = joelast_name = peterbilt 가 있는 모든 행이 동일한 엔터티에 속한다고 판단할 수 있습니다.

새 테이블과 뷰에 대한 엔터티 키 지정

CREATE TABLE … WITH AGGREGATION POLICY 명령 또는 CREATE VIEW … WITH AGGREGATION POLICY 명령을 실행하여 집계 정책을 할당할 때 ENTITY KEY 절을 사용하여 테이블 또는 뷰에서 엔터티의 식별 특성을 포함하는 열을 지정합니다.

예를 들어, 집계 정책을 할당하고 엔터티 키를 정의하면서 새 테이블 t1 을 생성하려면 다음을 실행합니다.

CREATE TABLE t1
  WITH AGGREGATION POLICY my_agg_policy
  ENTITY KEY (first_name,last_name);
Copy

first_namelast_name 은 엔터티 키이므로 집계 정책은 first_name = joelast_name = peterbilt 가 있는 모든 행이 동일한 엔터티에 속한다고 판단할 수 있습니다.

집계 제한 테이블 쿼리

엔터티 키가 있는 집계 제한 테이블을 쿼리하는 데 필요한 요구 사항은 엔터티 키가 없는 테이블을 쿼리하는 데 필요한 요구 사항과 동일합니다. 이러한 요구 사항을 준수하는 쿼리 유형에 대한 정보는 쿼리 요구 사항 섹션을 참조하십시오.