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'
개인정보 보호정책에 대한 설명을 지정합니다.
기본값: 값 없음
액세스 제어 요구 사항¶
이 작업을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.
권한 |
오브젝트 |
참고 |
---|---|---|
CREATE PRIVACY POLICY |
스키마 |
스키마의 모든 오브젝트에 대해 작업을 수행하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한.
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
사용법 노트¶
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
OR REPLACE
및IF NOT EXISTS
절은 상호 배타적입니다. 두 문자를 같은 문에 함께 사용할 수 없습니다.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;