- 카테고리:
컨텍스트 함수 (세션 오브젝트)
INVOKER_ROLE¶
쿼리를 실행하는 오브젝트의 계정 수준 역할의 이름을 반환하거나 역할 이름이 데이터베이스 역할인 경우에는 NULL을 반환합니다.
- 참고 항목:
이 항목의 내용:
구문¶
INVOKER_ROLE()
인자¶
없습니다.
사용법 노트¶
마스킹 정책 과 함께 INVOKER_ROLE 함수를 사용하는 경우, Snowflake 계정이 Enterprise Edition 이상인지 확인하십시오.
다음 표에는 쿼리 컨텍스트와 함수가 평가하는 역할 사이의 관계가 요약되어 있습니다.
컨텍스트
평가되는 역할
사용자
테이블
CURRENT_ROLE.
뷰
뷰 소유자 역할.
UDF
UDF 소유자 역할입니다.
호출자의 권한이 있는 저장 프로시저
CURRENT_ROLE.
소유자의 권한이 있는 저장 프로시저
저장 프로시저 소유자 역할.
작업
작업 소유자 역할.
스트림
지정된 스트림 을 쿼리하는 역할입니다.
다음 다이어그램은 쿼리 수행자, Snowflake의 역할, 테이블 또는 뷰에 대한 마스킹 정책의 관계를 보여줍니다.
여기서:
R0, R1, R2, R3
Snowflake의 역할입니다.
P1, P2, P3
Snowflake의 마스킹 정책입니다.
V1, V2
Snowflake의 뷰입니다.
T
Snowflake의 테이블입니다.
이 다이어그램을 기반으로 쿼리에서 CURRENT_ROLE 및 INVOKER_ROLE 값은 다음과 같습니다.
정책
CURRENT_ROLE
INVOKER_ROLE
P1
R3
R1
P2
R3
R2
P3
R3
R3
예¶
다음 예는 마스킹 정책 SQL 식에서 INVOKER_ROLE을 사용하는 방법을 보여줍니다.
권한이 없는 사용자에 대해 NULL 반환:
CREATE OR REPLACE MASKING POLICY mask_string AS (val string) RETURNS string -> CASE WHEN INVOKER_ROLE() IN ('ANALYST') THEN val ELSE NULL END;
권한이 없는 사용자에 대한 정적 마스킹 값 반환:
CREATE OR REPLACE MASKING POLICY mask_string AS (val string) RETURNS string -> CASE WHEN INVOKER_ROLE() IN ('ANALYST') THEN val ELSE '********' END;
승인되지 않은 사용자의 경우 SHA2 , SHA2_HEX를 사용하여 해시 값을 반환합니다.
CREATE OR REPLACE MASKING POLICY mask_string AS (val string) RETURNS string -> CASE WHEN INVOKER_ROLE() IN ('ANALYST') THEN val ELSE SHA2(val) END;