CREATE PRIVACY POLICY¶
새 개인정보 보호정책 을 만들거나 기존 개인정보 보호정책을 대체합니다.
구문¶
CREATE [ OR REPLACE ] PRIVACY POLICY [ IF NOT EXISTS ] <name>
AS () RETURNS PRIVACY_BUDGET -> <body>
[ COMMENT = '<string_literal>' ]
필수 매개 변수¶
name
개인정보 보호정책의 식별자(즉, 이름)를 지정하는 문자열로, 개인정보 보호정책이 생성된 스키마에 대해 고유해야 합니다.
또한, 식별자는 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표(예:
"My object"
)로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.
body
본문의 SQL 식은 정책의 반환 값을 제어하기 위해 NO_PRIVACY_POLICY와 PRIVACY_BUDGET이라는 두 함수를 호출합니다. 정책이 할당된 테이블에 대해 쿼리가 실행될 경우 Snowflake는 본문의 조건을 평가하여 적절한 함수를 호출하고 값을 반환합니다. 이 반환 값에 따라 개인정보가 보호되는 테이블에 대한 쿼리와 연관된 개인정보 보호 예산(있는 경우)이 결정됩니다.
이 식에서는 CURRENT_ROLE 또는 INVOKER_ROLE 과 같은 컨텍스트 함수를 사용하여 사용자 또는 사용자 그룹을 개인정보 보호 예산과 연결할 수 있습니다.
본문의 식에서 CASE 블록을 사용하는 경우 NO_PRIVACY_POLICY 또는 PRIVACY_BUDGET을 호출하는 ELSE 문을 포함해야 합니다. 모든 사용자는 개인정보 보호 예산에 연결되거나 개인정보가 보호되는 테이블에 대한 무제한 액세스 권한이 있어야 합니다. 사용자가 개인정보가 보호되는 테이블이나 뷰에 액세스해서는 안 되는 경우에는 개인정보 보호 정책에서 이를 정의하려고 하지 말고 SELECT 권한을 취소하십시오.
NO_PRIVACY_POLICY
쿼리가 개인정보 보호 정책이 할당된 테이블 또는 뷰에 제한 없이 액세스할 수 있도록 하려면 본문의 식을 사용하여
NO_PRIVACY_POLICY
함수를 호출합니다.PRIVACY_BUDGET
정책에서 개인정보 보호 예산을 반환하려면 본문의 식을 사용하여
PRIVACY_BUDGET
함수를 호출하십시오. 이 식에는 쿼리를 실행 중인 사용자와 같은 요소를 기반으로 정책이 다양한 쿼리에 대해 서로 다른 개인정보 보호 예산을 반환할 수 있는 조건이 포함될 수 있습니다.계정 간 협업에서 개인정보 보호 예산은 컨슈머 계정의 계정 식별자에 따라 자동으로 네임스페이스가 지정되므로, 개인정보 보호 예산의 이름이 같더라도 서로 다른 두 컨슈머 계정이 동일한 개인정보 보호 예산을 공유하지 못합니다. CURRENT_ACCOUNT 함수를 사용하여 계정 이름과 개인정보 보호 예산 이름을 연결하면 개인정보 보호 예산을 구분하는 데 도움이 될 수 있습니다. 예를 들어,
PRIVACY_BUDGET(BUDGET_NAME => 'external_budget.' || CURRENT_ACCOUNT())
와 같이 함수를 호출할 수 있습니다.PRIVACY_BUDGET
함수의 ㅅ서명은 다음과 같습니다.PRIVACY_BUDGET( BUDGET_NAME=> '<string>' [, BUDGET_LIMIT=> <decimal> ] [, MAX_BUDGET_PER_AGGREGATE=> <decimal> ] [, BUDGET_WINDOW=> <string> ] )
개인정보 보호 예산 인자:
BUDGET_NAME => expression
개인정보 보호 예산의 이름으로 확인됩니다. Snowflake에서는 개인정보 보호정책 본문에 개인정보 보호 예산의 이름이 지정되면 예산을 자동으로 생성합니다.
BUDGET_LIMIT => decimal
이 개인정보 보호정책의 예산 한도를 지정하는 0보다 큰 10진수입니다. 이를 통해 허용되는 개인정보 보호 손실의 총금액을 관리합니다. 이 값을 조정하면 새로 고침 기간 동안 이 개인정보 보호 예산으로 보호되는 테이블에 대해 계산할 수 있는 전체 차등 비공개 집계 수가 변경됩니다. 누적 개인정보 보호 손실액이 이 수치를 초과하게 만드는 쿼리를 실행하는 경우 해당 쿼리는 실패합니다. 대략적인 추정치로,
MAX_BUDGET_PER_AGGREGATE=1
에서 예산 한도가 233이므로 새로 고침 기간당 약 1,000개를 집계할 수 있습니다.기본값: 233.0
MAX_BUDGET_PER_AGGREGATE => decimal
쿼리에서 각 집계 함수에 사용되는 개인정보 보호 예산을 지정합니다. 이 값을 조정하면 각 집계 쿼리에 추가되는 노이즈의 양은 물론이고, 예산 한도에 도달하기 전에 계산할 수 있는 집계 수도 변경됩니다. 예를 들어,
select count(*), avg(a) ...
쿼리에는count(*)
및avg(a)
라는 두 집계가 있습니다. 0보다 큰 10진수 값을 지정하십시오.기본값: 0.5
BUDGET_WINDOW => string
개인정보 보호 예산을 얼마나 자주 새로 고치는지, 즉 누적 개인정보 보호 손실이 얼마나 자주 0으로 재설정되는지를 나타냅니다. 유효한 값:
Daily
: 매일 12:00 AM UTC에 새로 고쳐집니다.Weekly
: 매주 일요일 12:00 AM UTC에 새로 고쳐집니다.Monthly
: 매월 1일 12:00 AM UTC에 새로 고쳐집니다.Yearly
: 1월 1일 12:00 AM UTC에 새로 고쳐집니다.Never
: 개인정보 보호 예산은 절대로 새로 고쳐지지 않습니다.
기본값: Weekly
선택적 매개 변수¶
COMMENT = 'string_literal'
개인정보 보호정책에 대한 설명을 지정합니다.
기본값: 값 없음
액세스 제어 요구 사항¶
이 SQL 명령을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.
권한 |
오브젝트 |
참고 |
---|---|---|
CREATE PRIVACY POLICY |
스키마 |
스키마의 모든 오브젝트에 대해 작업하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한도 필요합니다.
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
사용법 노트¶
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
CREATE OR REPLACE <오브젝트> 문은 원자성입니다. 즉, 오브젝트가 바뀔 때 단일 트랜잭션으로 이전 오브젝트가 삭제되고 새 오브젝트가 생성됩니다.
예¶
항상 analysts
라는 예산을 반환하는 개인정보 보호정책을 만듭니다.
CREATE PRIVACY POLICY my_priv_policy AS ( ) RETURNS PRIVACY_BUDGET -> PRIVACY_BUDGET(BUDGET_NAME=> 'analysts');
개인정보가 보호되는 테이블에 무제한으로 액세스할 권한을 admin
에게 제공하는 동시에 다른 모든 사용자를 개인정보 보호 예산 analysts
와 연결하는 개인정보 보호정책을 만듭니다.
CREATE PRIVACY POLICY my_priv_policy AS () RETURNS PRIVACY_BUDGET -> CASE WHEN CURRENT_USER() = 'ADMIN' THEN NO_PRIVACY_POLICY() ELSE PRIVACY_BUDGET(BUDGET_NAME => 'analysts') END;