CREATE PRIVACY POLICY

개인정보 보호정책 을 만들거나 기존 개인정보 보호정책을 대체합니다.

참고 항목:

ALTER PRIVACY POLICY , DESCRIBE PRIVACY POLICY , DROP PRIVACY POLICY , SHOW PRIVACY POLICIES

구문

CREATE [ OR REPLACE ] PRIVACY POLICY [ IF NOT EXISTS ] <name>
  AS () RETURNS PRIVACY_BUDGET -> <body>
  [ COMMENT = '<string_literal>' ]
Copy

필수 매개 변수

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> ]
)
Copy

개인정보 보호 예산 인자:

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');
Copy

개인정보가 보호되는 테이블에 무제한으로 액세스할 권한을 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;
Copy