이 문서에서는 BigQuery의 개인 정보 차등 보호에 대한 일반적인 정보를 제공합니다. 구문은 개인 정보 차등 보호 절을 참조하세요. 이 구문에서 사용할 수 있는 함수 목록은 차등 비공개 집계 함수를 참조하세요.
개인 정보 차등 보호란 무엇인가요?
개인 정보 차등 보호는 출력에 의해 표시되는 개인 정보를 제한하는 데이터 계산에 대한 표준입니다. 개인 정보 차등 보호는 데이터를 공유하고 사용자 그룹에 대한 추론을 허용하는 동시에 누군가 개인에 관한 정보를 학습하지 못하도록 하는 데 흔히 사용됩니다.
다음의 경우 개인 정보 차등 보호가 유용합니다.
- 재식별 위험이 있는 경우
- 위험과 분석 유틸리티 간의 절충안을 수치화하려는 경우
개인 정보 차등 보호를 더 잘 이해할 수 있도록 간단한 예시를 살펴보겠습니다.
이 막대 그래프는 특정한 날 저녁에 한 작은 레스토랑이 얼마나 분주한지를 나타낸 것입니다. 저녁 7시에는 손님이 많고, 새벽 1시에는 레스토랑이 완전히 비어 있습니다.
이 차트는 유용해 보이지만 몇 가지 문제가 있습니다. 새 손님이 오면 이 사실이 막대 그래프에 바로 표시됩니다. 다음 차트에서는 새로운 손님이 있고 이 손님이 오전 1시 정도에 도착한 것이 분명합니다.
익명 통계는 개별 기여를 드러내지 않아야 하므로 개인 정보 보호 측면에서 이러한 세부정보 표시는 바람직하지 않습니다. 이 두 차트를 나란히 두면 더 분명해집니다. 주황색 막대 그래프에는 오전 1시경에 도착한 손님이 한 명 더 있습니다.
다시 한번 말하지만 그다지 좋지 않습니다. 이러한 종류의 개인 정보 보호 문제를 방지하려면 개인 정보 차등 보호를 사용하여 막대 그래프에 무작위 노이즈를 추가하면 됩니다. 이 비교 차트에서는 결과가 익명처리되며 개별 기여가 더 이상 표시되지 않습니다.
쿼리에서 개인 정보 차등 보호 작동 방식
개인 정보 차등 보호의 목표는 데이터 세트의 항목에 대한 정보를 알아낼 수 있는 위험, 즉 공개 위험을 완화하는 것입니다. 개인 정보 차등 보호는 통계 분석 유용성에 대한 요구사항과 개인 정보 보호에 대한 요구사항을 균형적으로 조정합니다. 개인 정보 보호가 증가하면 통계적 분석 유용성이 감소하고, 반대의 경우도 마찬가지입니다.
BigQuery용 GoogleSQL에서는 차등적인 비공개 집계를 통해 쿼리 결과를 바꿀 수 있습니다. 쿼리가 실행하면 다음이 수행됩니다.
- 그룹이
GROUP BY
절로 지정된 경우 각 그룹의 항목별 집계를 계산합니다.max_groups_contributed
의 개인 정보 차등 보호 매개변수를 기반으로 각 항목이 기여할 수 있는 그룹의 수를 제한합니다. - 각 항목당 집계 기여가 클램핑 경계 내에 있도록 클램핑합니다. 클램핑 경계가 지정되지 않았으면 차등적 비공개 방식으로 암시적으로 계산됩니다.
- 각 그룹에 클램핑된 항목당 집계 기여도를 집계합니다.
- 각 그룹의 최종 집계 값에 노이즈를 추가합니다. 무작위 노이즈의 범위는 클램핑된 모든 경계와 개인 정보 보호 매개변수의 함수입니다.
- 각 그룹의 노이즈가 많은 항목 수를 계산하고 항목 수가 적은 그룹을 삭제합니다. 노이즈가 많은 항목 수는 비결정적 그룹 집합을 삭제하는 데 도움이 됩니다.
최종 결과는 각 그룹에 노이즈가 많은 집계 결과가 포함되고 작은 그룹이 삭제된 데이터 세트입니다.
개인 정보 차등 보호와 사용 사례에 대한 추가 컨텍스트는 다음 문서를 참조하세요.
유효한 차등 비공개 쿼리 생성
차등 비공개 쿼리가 유효하기 위해서는 다음 규칙을 충족해야 합니다.
- 개인 정보 보호 단위 열이 정의되어 있습니다.
SELECT
목록에 차등 비공개 절이 포함되어 있습니다.- 차등 비공개 집계 함수만 차등 비공개 절로
SELECT
목록에 포함됩니다.
개인 정보 보호 단위 열 정의
개인 정보 보호 단위는 개인 정보 차등 보호를 사용하여 보호 중인 데이터 세트의 항목입니다. 항목은 개인, 회사, 위치 또는 임의의 열일 수 있습니다.
차등 비공개 쿼리는 개인 정보 보호 단위 열을 하나만 포함해야 합니다. 개인 정보 보호 단위 열은 개인 정보 보호 단위의 고유 식별자이며 여러 그룹 내에 존재할 수 있습니다. 여러 그룹이 지원되기 때문에 개인 정보 보호 단위 열의 데이터 유형이 그룹화 가능이어야 합니다.
고유 식별자 privacy_unit_column
으로 개인 정보 차등 보호 절의 OPTIONS
절에 개인 정보 보호 단위 열을 정의할 수 있습니다.
다음 예시에서는 개인 정보 보호 단위 열이 개인 정보 차등 보호 절에 추가됩니다. id
는 students
라는 테이블에서 시작되는 열을 나타냅니다.
SELECT WITH DIFFERENTIAL_PRIVACY
OPTIONS (epsilon=10, delta=.01, privacy_unit_column=id)
item,
COUNT(*, contribution_bounds_per_group=>(0, 100))
FROM students;
SELECT WITH DIFFERENTIAL_PRIVACY
OPTIONS (epsilon=10, delta=.01, privacy_unit_column=members.id)
item,
COUNT(*, contribution_bounds_per_group=>(0, 100))
FROM (SELECT * FROM students) AS members;
차등 비공개 쿼리에서 노이즈 삭제
"쿼리 구문" 참조에서 노이즈 삭제를 참조하세요.
차등 비공개 쿼리에 노이즈 추가
"쿼리 구문" 참조에서 노이즈 추가를 참조하세요.
개인 정보 보호 단위 ID가 존재할 수 있는 그룹 제한
"쿼리 구문" 참조에서 개인 정보 보호 단위 ID가 존재할 수 있는 그룹 제한을 참조하세요.
제한사항
이 섹션에서는 차등 개인 정보 보호의 제한사항에 대해 설명합니다.
개인 정보 차등 보호가 성능에 미치는 영향
항목별 집계가 수행되고 max_groups_contributed
제한이 적용되기 때문에 차등 비공개 쿼리는 표준 쿼리보다 느리게 실행됩니다. 기여 경계를 제한하면 차등 비공개 쿼리 성능을 향상시키는 데 도움이 될 수 있습니다.
다음 쿼리의 성능 프로필은 유사하지 않습니다.
SELECT
WITH DIFFERENTIAL_PRIVACY OPTIONS(epsilon=1, delta=1e-10, privacy_unit_column=id)
column_a, COUNT(column_b)
FROM table_a
GROUP BY column_a;
SELECT column_a, COUNT(column_b)
FROM table_a
GROUP BY column_a;
항목별 집계도 수행해야 하므로 추가적인 차등 비공개 쿼리에 대해 보다 세분화된 수준의 그룹화가 수행되기 때문에 성능 차이가 발생합니다.
차등 비공개 쿼리가 약간 느리지만 다음 쿼리의 성능 프로필은 비슷합니다.
SELECT
WITH DIFFERENTIAL_PRIVACY OPTIONS(epsilon=1, delta=1e-10, privacy_unit_column=id)
column_a, COUNT(column_b)
FROM table_a
GROUP BY column_a;
SELECT column_a, id, COUNT(column_b)
FROM table_a
GROUP BY column_a, id;
차등 비공개 쿼리는 개인 정보 보호 단위 열의 고유 값이 많기 때문에 성능이 더 느려집니다.
소규모 데이터 세트의 암시적 경계 제한사항
암시적 경계는 큰 데이터 세트를 사용하여 계산할 때 가장 효과적입니다. 암시적 경계는 개인 정보 보호 단위가 적은 데이터 세트를 사용하는 경우 실패할 수 있으며, 결과가 반환되지 않습니다. 또한 개인 정보 보호 단위 수가 적은 데이터 세트의 암시적 경계는 이상치가 아닌 상당 부분을 클램핑할 수 있으며, 추가된 노이즈보다 클램핑에 의해 더 많이 변경되는 아직 많이 보고되지 않은 집계 및 결과가 발생할 수 있습니다. 개인 정보 보호 단위 수가 적거나 얇게 분할된 데이터 세트는 암시적 클램핑이 아닌 명시적 클램핑을 사용해야 합니다.
개인 정보 보호 취약점
이 알고리즘을 비롯한 모든 개인정보 보호 알고리즘은 분석가가 악의적인 방식으로 행동할 때(특히 산술 제한으로 인해 합계와 같은 기본 통계를 계산할 때) 비공개 데이터 유출 위험을 야기합니다
개인 정보 보호 보장에 관한 제한사항
BigQuery 개인 정보 차등 보호는 개인 정보 차등 보호 알고리즘을 적용하지만 결과 데이터 세트의 개인 정보 보호 속성을 보장하지는 않습니다.
런타임 오류
쿼리를 작성하거나 입력 데이터를 제어할 수 있는 악의적인 분석가가 비공개 데이터에 대한 런타임 오류를 트리거할 수 있습니다.
부동 소수점 노이즈
개인 정보 차등 보호를 사용하기 전에 반올림, 반복 반올림, 순서 재지정 공격과 관련된 취약점을 고려해야 합니다. 이러한 취약점은 공격자가 데이터 세트의 일부 콘텐츠를 제어하거나 데이터 세트에서 콘텐츠 순서를 제어할 수 있을 때 특히 문제가 됩니다.
부동 소수점 데이터 유형에 차등 비공개 노이즈 추가에는 차등 비공개 라이브러리의 민감도에 대한 광범위한 과소 평가 및 해결 방법에 설명된 취약점이 적용됩니다. 정수 데이터 유형으로 노이즈를 추가할 경우는 이 문서에 설명된 취약점에 해당하지 않습니다.
타이밍 공격 위험
악의적인 분석가는 쿼리 실행 기간에 따라 입력 데이터에 대한 추론을 수행하기 위해 충분히 복잡한 쿼리를 실행할 수 있습니다.
잘못된 분류
개인 정보 차등 보호 쿼리를 만들면 데이터가 잘 알려져 있고 이해되는 구조로 되어 있다고 가정합니다. 개인의 ID 대신 트랜잭션 ID를 나타내는 식별자와 같이 잘못된 식별자에 개인 정보 차등 보호를 적용하면 민감한 정보가 노출될 수 있습니다.
데이터를 파악하는 데 도움이 필요하면 다음과 같은 서비스 및 도구를 사용하세요.
가격 책정
개인 정보 차등 보호 사용에 따른 추가 비용은 없지만 분석에 표준 BigQuery 가격 책정이 적용됩니다.