ALTER PRIVACY POLICY
ALTER PRIVACY POLICY
기존 개인정보 보호 정책(privacy policy)의 속성을 수정하는 명령이에요. 개인정보 보호 정책은 차등 개인정보 보호(differential privacy)를 위한 예산(budget)을 제어해요.
출처: 문서
본문
Enterprise Edition(이상)이 필요해요. 업그레이드 문의는 Snowflake Support에 연락하세요.
주의:
budget_limit,max_budget_per_aggregate,budget_window를 변경할 때, ALTER 명령에서 지정하지 않은 속성은 기본값으로 되돌아가요. 매개변수의 현재 값을 얻으려면 DESCRIBE PRIVACY POLICY 명령을 실행해요.
관련 명령: CREATE PRIVACY POLICY, DESCRIBE PRIVACY POLICY, DROP PRIVACY POLICY, SHOW PRIVACY POLICIES
구문 (Syntax)
ALTER PRIVACY POLICY [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER PRIVACY POLICY [ IF EXISTS ] <name> SET BODY -> <expression>
ALTER PRIVACY POLICY <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER PRIVACY POLICY <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER PRIVACY POLICY [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'
ALTER PRIVACY POLICY [ IF EXISTS ] <name> UNSET COMMENT
매개변수 (Parameters)
name — 수정할 개인정보 보호 정책의 식별자를 지정해요.
식별자에 공백이나 특수 문자가 포함되어 있으면 전체 문자열을 큰따옴표로 묶어야 해요. 큰따옴표로 묶은 식별자는 대소문자를 구분해요. 자세한 내용은 식별자 요구사항을 참고하세요.
RENAME TO new_name — 개인정보 보호 정책의 새 식별자를 지정해요. 스키마에서 고유해야 해요. 다른 개인정보 보호 정책에 이미 사용 중인 식별자는 사용할 수 없어요. 자세한 내용은 식별자 요구사항을 참고하세요.
객체의 이름을 바꾸면서 다른 데이터베이스 및/또는 스키마로 이동할 수 있어요. 그러려면 db_name.schema_name.object_name 또는 schema_name.object_name 형식으로 새 위치가 포함된 정규화된 new_name 값을 지정해요.
참고
- 대상 데이터베이스 및/또는 스키마는 이미 존재해야 해요. 새 위치에 같은 이름의 객체가 이미 있으면 문이 오류를 반환해요.
- 객체 소유자(즉 객체에 OWNERSHIP 권한이 있는 역할)가 대상 스키마도 소유하지 않는 한, 관리형 접근 스키마로의 이동은 금지돼요.
SET ... — 개인정보 보호 정책에 설정할 하나 이상의 속성을 지정해요:
BODY -> expression — 정책의 새 본문(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보다 큰 십진수예요. 허용되는 총 개인정보 손실량을 제어해요. 이 값을 조정하면 새로고침 기간 동안 이 예산으로 보호되는 테이블에 대해 계산할 수 있는 총 차등 개인정보 집계 수가 달라져요. 누적 개인정보 손실이 이 값을 초과하게 하는 쿼리가 실행되면 쿼리는 실패해요. 대략적인 추정으로, MAX_BUDGET_PER_AGGREGATE=1에서 예산 한도 233이면 새로고침 기간당 약 1000개의 집계가 허용돼요.
기본값: 233.0
MAX_BUDGET_PER_AGGREGATE => decimal — 쿼리에서 각 집계 함수가 사용하는 개인정보 예산의 양을 지정해요. 이 값을 조정하면 각 집계 쿼리에 추가되는 노이즈 양과 예산 한도에 도달하기 전에 계산할 수 있는 집계 수가 달라져요. 예를 들어 쿼리 select count(*), avg(a) ...에는 count(*)와 avg(a)라는 두 개의 집계가 있어요. 0보다 큰 십진수를 지정해요.
기본값: 0.5
BUDGET_WINDOW => string — 개인정보 예산이 새로고침(즉 누적 개인정보 손실이 0으로 리셋)되는 주기예요. 유효한 값:
Daily: 매일 12:00 AM UTC에 새로고침Weekly: 매주 일요일 12:00 AM UTC에 새로고침Monthly: 달력 월의 첫 날 12:00 AM UTC에 새로고침Yearly: 1월 1일 12:00 AM UTC에 새로고침Never: 예산이 새로고침되지 않음
기본값: Weekly
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] — 태그 이름과 태그 문자열 값을 지정해요.
태그 값은 항상 문자열이며, 최대 문자 수는 256이에요. 문에서 태그를 지정하는 방법은 태그 할당량을 참고하세요.
COMMENT = 'string_literal' — 개인정보 보호 정책에 주석을 추가하거나 기존 주석을 덮어써요.
기본값: 값 없음
UNSET ... — 개인정보 보호 정책의 하나 이상의 속성 및/또는 매개변수를 해제해 기본값으로 되돌려요:
TAG tag_name [ , tag_name ... ]COMMENT
속성/매개변수를 재설정할 때는 이름만 지정해야 하며, 값을 지정하면 오류가 반환돼요.
접근 제어 요구사항 (Access control requirements)
이 작업을 실행하는 데 사용되는 역할은 최소한 다음 권한을 보유해야 해요: GRANT OWNERSHIP
| 권한 | 객체 | 설명 |
|---|---|---|
| OWNERSHIP | Privacy policy | OWNERSHIP은 객체를 만든 역할에 자동으로 부여되는 객체의 특별한 권한이에요. 소유 역할(또는 MANAGE GRANTS 권한이 있는 역할)이 GRANT OWNERSHIP 명령으로 다른 역할에 이전할 수도 있어요. |
스키마의 객체를 조작하려면 상위 데이터베이스와 상위 스키마 각각에 대해 하나 이상의 권한이 필요해요.
지정한 권한 집합을 가진 사용자 정의 역할을 만드는 방법은 사용자 정의 역할 만들기를 참고하세요.
보호 객체에서 SQL 작업을 수행할 때 역할과 권한 부여에 대한 일반 정보는 접근 제어 개요를 참고하세요.
사용 메모 (Usage notes)
- 기존 개인정보 보호 정책을 업데이트하려고 하는데 현재 정의를 확인해야 한다면 DESCRIBE PRIVACY POLICY 명령을 실행해요. GET_DDL 함수를 사용해 본문을 포함한 정책의 전체 정의를 얻을 수도 있어요.
- 개인정보 보호 정책 소유자(즉 정책에 OWNERSHIP 권한이 있는 역할)가 대상 스키마도 소유하지 않는 한, 관리형 접근 스키마로의 이동(ALTER PRIVACY POLICY … RENAME TO 구문 사용)은 금지돼요.
- 메타데이터 관련: Snowflake 서비스를 사용할 때 메타데이터로 개인 데이터(User 객체 외), 민감한 데이터, 수출 통제 데이터 또는 기타 규제 대상 데이터를 입력하지 않도록 주의해야 해요. 자세한 내용은 Snowflake의 메타데이터 필드를 참고하세요.
예시 (Examples)
개인정보 보호 정책 my_priv_policy의 본문을 항상 analysts라는 예산을 반환하도록 수정해요.
-- Modify the body of privacy policy "my_priv_policy" so it always returns a
-- budget named "analysts"
ALTER PRIVACY POLICY my_priv_policy SET BODY ->
PRIVACY_BUDGET(BUDGET_NAME => 'analysts');
-- Set budget limit to 50 and max budget per aggregate to 0.1
-- budget window is not mentioned so it is reset to its default value
ALTER PRIVACY POLICY users_policy SET BODY ->
privacy_budget(budget_name=>'analysts', budget_limit=>50, max_budget_per_aggregate=>0.1);
더 알아보기 (Learn more)
- CREATE PRIVACY POLICY — 개인정보 보호 정책 만들기
- DESCRIBE PRIVACY POLICY — 개인정보 보호 정책 설명
- DROP PRIVACY POLICY — 개인정보 보호 정책 삭제
- SHOW PRIVACY POLICIES — 개인정보 보호 정책 나열