ALTER PRIVACY POLICY¶
기존 개인정보 보호정책 의 속성을 수정합니다.
조심
budget_limit, max_budget_per_aggregate 또는 budget_window 를 변경하면 ALTER 명령에 지정되지 않은 속성은 전부 기본값으로 돌아갑니다. 매개 변수의 현재 값을 얻으려면 DESCRIBE PRIVACY POLICY 명령을 실행하십시오.
구문¶
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
매개 변수¶
name변경할 개인정보 보호정책의 식별자를 지정합니다.
식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.
자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.
RENAME TO new_name개인정보 보호정책의 새 식별자를 지정하며, 스키마에 고유한 식별자여야 합니다. 다른 개인정보 보호정책에 대해 식별자가 이미 준비되어 있으면 새 식별자를 사용할 수 없습니다.
자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.
선택적으로 오브젝트의 이름을 바꾸는 동안 오브젝트를 다른 데이터베이스 및/또는 스키마로 이동할 수 있습니다. 그러려면 각각
db_name.schema_name.object_name또는schema_name.object_name형식으로 새 데이터베이스 및/또는 스키마 이름을 포함하는 정규화된new_name값을 지정하십시오.참고
대상 데이터베이스 및/또는 스키마가 이미 있어야 합니다. 또한, 새 위치에 이름이 같은 오브젝트가 있으면 안 됩니다. 그렇지 않으면 문이 오류를 반환합니다.
오브젝트 소유자(즉, 오브젝트에 대한 OWNERSHIP 권한이 있는 역할) 역시 대상 스키마를 소유하지 않는 한 오브젝트를 관리되는 액세스 스키마로 이동하는 것은 금지됩니다.
SET ...개인정보 보호정책에 대해 설정할 하나 이상의 속성을 지정합니다.
BODY -> expression정책에 대해 새로운 본문을 지정합니다.
본문의 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
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]태그 이름과 태그 문자열 값을 지정합니다.
태그 값은 항상 문자열이며, 태그 값의 최대 문자 수는 256자입니다.
문에서 태그를 지정하는 방법에 대한 자세한 내용은 Tag quotas 섹션을 참조하십시오.
COMMENT = 'string_literal'개인정보 보호정책에 대한 설명을 추가하거나 기존 설명을 덮어씁니다.
기본값: 값 없음
UNSET ...개인정보 보호정책에 대해 기본값으로 재설정하여 설정 해제할 하나 이상의 속성 및/또는 매개 변수를 지정합니다.
TAG tag_name [ , tag_name ... ]COMMENT
속성/매개 변수를 재설정할 때는 이름만 지정하십시오. 속성 값을 지정하면 오류가 반환됩니다.
액세스 제어 요구 사항¶
이 작업을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.
권한 |
오브젝트 |
참고 |
|---|---|---|
OWNERSHIP |
개인정보 보호정책 |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
Operating on an object in a schema requires at least one privilege on the parent database and at least one privilege on the parent schema.
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
사용법 노트¶
기존 개인정보 보호정책을 업데이트하고 정책의 현재 정의를 확인해야 할 경우 DESCRIBE PRIVACY POLICY 명령을 실행하십시오. 또한 GET_DDL 함수를 사용하여 본문을 포함한 개인정보 보호정책의 전체 정의를 얻을 수도 있습니다.
개인정보 보호정책 소유자(즉, 개인정보 보호정책에 대한 OWNERSHIP 권한을 가진 역할) 역시 대상 스키마를 소유하지 않는 한 (ALTER PRIVACY POLICY … RENAME TO 구문을 사용하여) 개인정보 보호정책을 관리되는 액세스 스키마 로 이동하는 것은 금지됩니다.
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
예¶
항상 analysts 로 명명된 예산을 반환하도록 개인정보 보호정책 my_priv_policy 의 본문을 수정합니다.
-- 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);