ALTER ROW ACCESS POLICY

정책 이름 바꾸기 또는 정책 규칙 바꾸기를 포함하여, 기존 행 액세스 정책의 속성을 수정합니다.

정책 규칙에 대한 모든 변경 사항은 행 액세스 정책을 사용하는 다음 SQL 쿼리가 실행될 때 적용됩니다.

참고 항목:

행 액세스 정책 DDL

구문

ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> SET BODY -> <expression_on_arg_name>

ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'

ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> UNSET COMMENT
Copy

매개 변수

name

행 액세스 정책의 식별자로, 정책의 상위 스키마에서 고유해야 합니다.

식별자 값은 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표(예: "My object")로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.

자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.

RENAME TO new_name

행 액세스 정책의 새 식별자를 지정하며, 스키마에 고유한 식별자여야 합니다. 다른 행 액세스 정책에 대해 식별자가 이미 준비되어 있으면 새 식별자를 사용할 수 없습니다.

자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.

선택적으로 오브젝트의 이름을 바꾸는 동안 오브젝트를 다른 데이터베이스 및/또는 스키마로 이동할 수 있습니다. 그러려면 각각 db_name.schema_name.object_name 또는 schema_name.object_name 형식으로 새 데이터베이스 및/또는 스키마 이름을 포함하는 정규화된 new_name 값을 지정하십시오.

참고

  • 대상 데이터베이스 및/또는 스키마가 이미 있어야 합니다. 또한, 새 위치에 이름이 같은 오브젝트가 있으면 안 됩니다. 그렇지 않으면 문이 오류를 반환합니다.

  • 오브젝트 소유자(즉, 오브젝트에 대한 OWNERSHIP 권한을 가진 역할) 역시 대상 스키마를 소유하지 않는 한 오브젝트를 관리되는 액세스 스키마로 이동하는 것은 금지됩니다.

SET ...

행 액세스 정책에 대해 설정할 하나 이상의 속성을 지정합니다.

BODY -> expression_on_arg_name

데이터를 필터링하는 SQL 식입니다.

이 식은 조건부 논리의 내장 함수를 나타내는 조건식 함수 또는 데이터를 변환하는 UDFs를 포함할 수 있습니다.

UDF 또는 외부 함수가 행 액세스 정책 본문 내부에 사용되는 경우, 정책 소유자는 UDF 또는 외부 함수에 대한 OWNERSHIP이 있어야 합니다. 행 액세스 정책이 적용된 데이터베이스 오브젝트를 쿼리하는 사용자는 UDF 또는 외부 함수에 USAGE가 있을 필요가 없습니다.

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

태그 이름과 태그 문자열 값을 지정합니다.

태그 값은 항상 문자열이며, 태그 값의 최대 문자 수는 256자입니다.

문에서 태그를 지정하는 방법에 대한 자세한 내용은 오브젝트 및 열에 대한 태그 할당량 섹션을 참조하십시오.

COMMENT = 'string_literal'

마스킹 정책에 대한 설명을 추가하거나 기존 설명을 덮어씁니다.

기본값: 값 없음

UNSET ...

마스킹 정책에 대해 설정 해제할 하나 이상의 속성 및/또는 매개 변수를 지정하여 기본값으로 재설정합니다.

  • TAG tag_name [ , tag_name ... ]

  • COMMENT

속성/매개 변수를 재설정할 때는 이름만 지정하십시오. 속성 값을 지정하면 오류가 반환됩니다.

액세스 제어 요구 사항

이 SQL 명령을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.

권한

오브젝트

참고

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).

스키마의 모든 오브젝트에 대해 작업하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한도 필요합니다.

지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.

보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.

행 액세스 정책 DDL 및 권한에 대한 추가적인 세부 사항은 행 액세스 정책 관리하기 섹션을 참조하십시오.

사용법 노트

  • 기존 행 액세스 정책을 업데이트하고 싶은데 정책의 현재 정의를 확인해야 할 경우 GET_DDL 함수를 호출하거나 DESCRIBE ROW ACCESS POLICY 명령을 실행하십시오.

  • 정책 서명(즉, 인자 이름 또는 입력/출력 데이터 타입)을 변경할 수 없습니다. 이와 유사하게, 정책이 테이블이나 뷰에 연결된 경우 CREATE OR REPLACE ROW ACCESS POLICY 사용이 지원되지 않습니다. 서명을 변경해야 하는 경우 정책에 대한 DROP ROW ACCESS POLICY 문을 실행하고 새 행 액세스 정책을 만드십시오.

  • ALTER 문을 실행하기 전에 DESCRIBE ROW ACCESS POLICY 문을 실행하여 정책 업데이트에 사용할 인자 이름을 결정할 수 있습니다.

  • 정책 본문에 하나 이상의 하위 쿼리 를 포함하면 오류가 발생할 수 있습니다. 가능하면 하위 쿼리 수를 제한하고 JOIN 작업 수를 제한하며 WHERE 절 조건을 단순화하십시오.

  • 정책 body 에 매핑 테이블 조회가 포함된 경우 중앙 집중식 매핑 테이블을 생성하고 보호된 테이블과 동일한 데이터베이스에 매핑 테이블을 저장합니다. 이는 bodyIS_DATABASE_ROLE_IN_SESSION 함수를 호출하는 경우 특히 중요합니다. 자세한 내용은 함수 사용법 노트를 참조하십시오.

  • 메타데이터 관련:

    주의

    고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.

다음은 행 액세스 정책을 업데이트하는 예입니다.

DESC ROW ACCESS POLICY rap_table_employee_info;
Copy
+-------------------------+-------------+-------------+------+
| name                    | signature   | return_type | body |
+-------------------------+-------------+-------------+------+
| rap_table_employee_info | (V VARCHAR) | BOOLEAN     | true |
+-------------------------+-------------+-------------+------+
ALTER ROW ACCESS POLICY rap_table_employee_info SET BODY -> false;
Copy