차등 개인정보 보호 구현하기¶
이 항목에는 계정에 대한 차등 개인정보 보호를 구현하는 데이터 공급자를 위한 정보가 포함되어 있습니다.
데이터 세트에 대한 차등 개인정보 보호를 구현할 때 작업에는 3가지 핵심 개념이 포함됩니다.
개인정보 보호정책. 테이블이나 뷰는 개인정보 보호정책을 할당하기 전까지 차등 개인정보 보호가 적용되지 않습니다. 개인정보 보호정책이 있는 테이블이나 뷰는 개인정보가 보호 되는 것으로 간주됩니다.
개인정보 보호 예산. 분석가가 개인정보로 보호되는 테이블을 쿼리할 때 해당 분석가와 관련된 개인정보 보호 예산을 관리 할 수 있습니다.
개인정보 보호 도메인. 개인정보가 보호되는 테이블이나 뷰의 정보 및 차원 열에 대한 개인정보 도메인을 정의해야 합니다.
제한 사항
동일한 테이블이나 뷰에 개인정보 보호정책과 집계 정책 또는 마스킹 정책을 할당할 수 없습니다.
노이즈 구간 을 쿼리하는 것 외에도 분석가는 자신이 개인 정보 보호 테이블을 쿼리하고 있는지 여부를 알 수 없으므로 데이터 공급자는 쿼리 결과에 노이즈가 포함되어 있음을 알려야 합니다.
데이터 공급자는 다른 계정에서 쿼리를 실행하는 분석가로 인해 발생하는 개인정보 손실을 모니터링할 수 없습니다.
현재 하나의 테이블에 여러 개인정보 보호정책을 적용하는 것은 지원되지 않습니다. 이로 인해 단일 테이블에서 엔터티 수준 차등 개인정보 보호를 통해 두 개 이상의 엔터티를 보호하는 것은 불가능합니다.
엔터티 키와 연결된 개인정보 보호정책이 있는 복제 또는 복제된 테이블에 대한 쿼리는 현재 차단되어 있습니다.
엔터티 수준 개인정보 보호 정보¶
엔터티 란 보호해야 하는 데이터 주체의 클래스(예: 사람, 조직 또는 위치)를 말합니다. 각 개별 오브젝트가 한 행에만 나타난다면 행 수준의 개인정보 보호만으로도 해당 오브젝트의 ID를 보호하기에 충분할 것입니다. 그러나 개별 엔터티에 속한 데이터가 여러 행에 나타나는 경우(예: 트랜잭션 데이터) 엔터티 수준 개인정보 보호에 대한 차등 개인정보 보호를 구성하여 각 엔터티를 올바르게 보호해야 합니다.
엔터티 수준의 개인정보 보호를 위해 Snowflake를 사용하면 엔터티를 식별하는 데 사용할 수 있는 특성(엔터티 키)을 지정할 수 있습니다. 이를 통해 Snowflake는 데이터 세트 내의 특정 엔터티에 속하는 모든 레코드를 식별할 수 있습니다. 예를 들어 엔터티 키가 email
열로 정의된 경우, Snowflake는 email=joe.smith@example.com
가 속한 모든 레코드가 동일한 엔터티에 속하는 것으로 판단할 수 있습니다.
대부분의 경우 엔터티 수준 개인정보 보호가 행 수준 개인정보 보호보다 선호되지만 다음과 같은 경우에는 행 수준 개인정보 보호가 테이블에 더 적합할 수 있습니다.
테이블의 어떠한 열도 엔터티를 고유하게 식별하지 않습니다. 엔터티 수준의 개인정보 보호에는 식별 열이 필요합니다.
각 개별 오브젝트는 한 번만 표시됩니다.
해당 테이블은 조인에 사용되지 않습니다. 행 수준 개인 정보 보호로 보호되는 테이블을 사용한 조인은 가능하지만 제한 사항 이 있습니다.
테이블이나 뷰에 개인정보 보호정책을 할당할 때 엔터티 수준 또는 행 수준 개인정보 보호 정책을 구현할지 선택합니다. 자세한 내용은 개인정보 보호정책 할당 섹션을 참조하십시오. 엔터티 수준의 개인정보 보호를 구현하기로 선택한 경우, 데이터는 엔터티 식별자가 올바르게 사용되도록 하기 위한 구조적 요구 사항 도 충족해야 합니다.
팁
개인정보 처리방침은 동일하지만, 엔터티 키 값이 동일하지 않은 두 개의 개별 테이블을 보호하려는 경우 두 식별 열을 매핑하는 새 테이블을 생성하고 두 테이블을 조인하는 뷰를 만든 다음 개인정보 처리방침을 뷰에 적용할 수 있습니다. 예를 들어, 한 테이블의 엔터티 키가 email
이고 다른 테이블의 엔터티 키가 user_id
이지만 둘 다 동일한 엔터티를 참조하는 경우 이 전략을 사용할 수 있습니다.
엔터티 수준 개인정보 보호에 대한 구조적 요구 사항¶
엔터티 수준 차등 개인정보 보호로 보호되는 데이터의 구조는 특정 요구 사항을 준수해야 합니다. Snowflake가 엔터티와 관련된 개인정보 손실을 정확하게 추적할 수 있도록 이러한 요구 사항을 충족해야 합니다.
차등 개인정보 보호를 구현하기 위해 개인정보 보호정책을 적용하기 전에 이러한 요구 사항을 충족하도록 데이터를 구성해야 합니다. Snowflake는 데이터가 이러한 구조적 요구 사항을 준수하는지 여부를 판단할 수 없습니다. 이는 이러한 요구 사항이 차등 개인정보 보호 구현이 아니라 데이터의 의미와 관련이 있기 때문입니다. 예를 들어, 서로 다른 두 테이블의 엔터티 키가 모두 user_id
열로 설정되어 있지만 열 중 하나에 숫자 식별자 값이 포함되어 있고 다른 열에 이메일 주소가 포함되어 있는 경우 Snowflake는 두 테이블의 엔터티 정보를 올바르게 연결할 수 없습니다.
엔터티 수준의 개인정보 보호를 달성하려면 데이터가 다음 요구 사항을 준수해야 합니다.
각 행은 엔터티 내에서 한 명의 개인에게만 속함 — 예를 들어, 테이블에 사용자와 가구가 포함되어 있다고 가정해 보겠습니다. 보호해야 할 엔터티가 사용자인 경우, 각 행을 가구로 구성하고 해당 가구의 모든 사용자를 다른 열에 포함하는 방식으로 테이블을 구성할 수 없습니다. 사용자당 하나의 행만 있고 사용자가 어느 가구에 속해 있는지를 나타내는
household_id
열이 있도록 테이블을 재구성해야 합니다.모든 테이블에서 일관된 엔터티 식별자 — 단일 엔터티에 필요한 보호 기능을 나타내는 개인정보 보호정책을 생성한 다음, 해당 정책을 엔터티에 대한 정보가 포함된 여러 테이블에 적용할 수 있습니다. 각 테이블에 개인정보 보호정책을 할당할 때 엔터티를 고유하게 식별하는 열(즉, 엔터티 키)을 지정해야 합니다. 이러한 엔터티 키 열 내에서 엔터티를 고유하게 식별하는 값은 동일해야 합니다. 예를 들어,
email
열이 엔터티에 대한 정보를 포함하는 두 테이블의 엔터티 키라고 가정해 보겠습니다. 한 테이블에서 엔터티의 이메일 주소가joe@company.com
인 경우 다른 테이블의 이메일 주소도joe@company.com
이어야 합니다.모든 테이블의 엔터티 식별자 — 엔터티 수준의 개인정보 보호를 구현하는 데 필수는 아니지만, 엔터티와 관련된 모든 테이블에 엔터티 식별자를 포함하면 분석가가 쿼리 조인의 노이즈를 최소화할 수 있습니다. 어떤 경우에는 이 요구 사항을 충족하기 위해 엔터티 키 열을 비정규화해야 할 수도 있습니다. 예를 들어, 엔터티가 고객인 다음 테이블이 있다고 가정해 보겠습니다.
테이블
설명
customer
각 행이 고객이고
customer_id
가 있는 고객 디렉터리.transactions
각 행이 트랜잭션이고
transaction_id
가 있는 고객 트랜잭션. 각 고객은 여러 트랜잭션을 가질 수 있습니다.transaction_lines
트랜잭션에서 구매한 고유 항목. 하나의 트랜잭션에는 여러 행이 있을 수 있습니다.
정규화 모범 사례에 따르면
transaction_lines
테이블에는transaction_id
가 있지만customer_id
는 없습니다.transaction_lines
테이블은transactions
테이블에 연결되고, 이 테이블은customer_id
를 사용하여customers
테이블에 연결될 수 있습니다.그러나 차등 개인정보 보호를 위해 분석가에게 데이터를 최적화하려면
transaction_lines
테이블에customer_id
식별자를 추가해야 할 것입니다. 이를 통해 분석가는transaction_lines
테이블을 다른 테이블과 조인할 때 조인 키에customer_id
를 포함시켜 노이즈를 최소화할 수 있습니다.
Snowflake 기능과의 상호 작용¶
이 섹션에서는 다음 차등 개인정보 보호 오브젝트가 다른 Snowflake 기능과 상호 작용하는 방식에 대해 설명합니다. 개인정보 보호정책, 개인정보 보호 예산, 개인정보 보호 도메인에 미치는 영향에 대해 논의합니다.
데이터 공유¶
개인정보 보호정책이 적용된 보안 뷰와 테이블은 공유에 추가될 때 차등 개인정보 보호로 보호됩니다. 보안되지 않은 뷰는 공유를 통해 쿼리되는 경우 개인정보 보호정책에 의해 보호되지 않습니다.
복제¶
개인정보 보호정책 및 개인정보 보호 테이블과 뷰를 복제할 때의 고려 사항은 개인정보 보호정책 섹션을 참조하십시오.
참고
엔터티 키와 연결된 개인정보 보호정책이 있는 복제된 테이블을 쿼리하는 경우 현재 제한 사항이 있습니다. 제한이 제거될 때까지 해당 테이블에 대한 쿼리는 차단됩니다.
클라우드 간 자동 복제¶
데이터 제품을 복제하기 위해 클라우드 간 자동 복제를 사용하는 경우 다음 사항에 유의하십시오.
데이터 제품이 복제된 계정의 관리자는 개인정보 보호 예산을 조정할 수 없습니다.
관리자는 단일 계정을 사용하여 모든 리전에서 발생한 개인정보 손실을 확인할 수 없습니다.
복제¶
개인정보로 보호되는 테이블과 뷰를 복제하는 효과에 대해서는 복제 및 차등 개인정보 보호 섹션을 참조하십시오.
참고
엔터티 키와 연결된 개인정보 보호정책이 있는 복제된 테이블을 쿼리하는 경우 현재 제한 사항이 있습니다. 제한이 제거될 때까지 해당 테이블에 대한 쿼리는 차단됩니다.
개인정보 보호 기본 오브젝트 기반 뷰¶
개인정보가 보호된 테이블이나 뷰에 뷰를 구축할 수 있습니다. 그러나 기본 테이블이나 뷰의 개인정보 도메인은 상속되지 않습니다. 결과적으로 다음 사항에 유의하십시오.
개인정보 보호 도메인은 새로운 뷰의 열에 설정해야 합니다.
기본 테이블의 개인정보 도메인을 조정해도 해당 테이블 위에 구축된 뷰의 개인정보 도메인에는 영향을 미치지 않습니다.
구체화된 뷰¶
구체화된 뷰에 개인정보 보호정책을 할당하여 개인정보를 보호할 수 있습니다.
개인정보 보호정책과 구체화된 뷰 간의 다른 상호 작용은 다음과 같습니다.
개인정보가 보호되는 테이블이나 뷰를 기반으로 구체화된 뷰를 생성할 수 없습니다.
구체화된 뷰의 기본 테이블로 참조되는 경우, 테이블에 개인정보 보호정책을 할당할 수 없습니다.
UDFs¶
분석가는 사용자 정의 함수를 사용하여 개인정보가 보호되는 테이블을 쿼리할 수 없습니다.
스트림¶
개인정보가 보호되는 테이블을 기반으로 하는 스트림은 쿼리할 수 없습니다.
개인정보 보호정책은 스트림에 할당할 수 없습니다.
기타 정책¶
개인정보 보호정책은 다음과 같은 방식으로 다른 Snowflake 정책과 상호 작용합니다.
- 마스킹 정책
동일한 테이블이나 뷰에 개인정보 보호정책과 마스킹 정책을 할당할 수 없습니다.
- 행 액세스 정책
행 액세스 정책은 개인정보 보호정책보다 우선합니다. 행 액세스 정책에 의해 행이 차단된 경우 해당 행은 차등 개인정보 보호 쿼리의 결과에 포함되지 않습니다.
- 프로젝션 정책
개인정보 보호정책이 적용된 테이블과 해당 열을 동시에 프로젝션 정책으로 보호하는 기능은 현재 지원되지 않습니다. 이런 방식으로 정책을 할당할 수 있지만, 테이블에 대한 쿼리는 실패합니다.
- 집계 정책
동일한 테이블이나 뷰에 개인정보 보호정책과 집계 정책을 할당할 수 없습니다.
동적 테이블¶
참조된 소스 테이블이 개인정보로 보호되는 경우 동적 테이블을 생성할 수 없습니다.
기존 동적 테이블에서 참조하는 테이블에 개인정보 보호정책을 할당할 수 있습니다. 그러나 정책이 할당되면 동적 테이블은 더 이상 새로 고쳐지지 않습니다.
외부 테이블¶
외부 테이블에 개인정보 보호정책을 할당할 수 있습니다. 분석가가 VARIANT 열에 대해 집계를 시도하면 쿼리가 실패합니다. 하지만 분석가가 가상 열에 대한 집계를 시도하면 성공합니다.
Time Travel¶
Time Travel의 경우, 이전 버전의 테이블이 새 테이블로 복사되면 개인정보 도메인의 현재 버전이 테이블에 사용됩니다. 이는 Snowflake가 이전 버전의 개인정보 도메인을 테이블 메타데이터에 저장하지 않기 때문입니다.