- 카테고리:
컨텍스트 함수 (세션 오브젝트)
INVOKER_ROLE¶
쿼리를 실행하는 오브젝트의 계정 수준 역할의 이름을 반환하거나 역할 이름이 데이터베이스 역할인 경우에는 NULL을 반환합니다.
이 항목의 내용:
구문¶
INVOKER_ROLE()
인자¶
없습니다.
사용법 노트¶
마스킹 정책 과 함께 INVOKER_ROLE 함수를 사용하는 경우, Snowflake 계정이 Enterprise Edition 이상인지 확인하십시오.
다음 표는 마스킹 정책 SQL 식에서 쿼리와 INVOKER_ROLE 값 간의 관계를 요약한 것입니다.
마스킹 정책이 적용되는 쿼리
INVOKER_ROLE에 의해 반환되는 값
뷰
뷰 소유자 역할.
UDF
UDF 소유자 역할입니다.
호출자 권한이 있는 저장 프로시저
소유자 권한이 있는 저장 프로시저
저장 프로시저 소유자 역할.
작업
작업 소유자 역할.
스트림
지정된 스트림 을 쿼리하는 역할입니다.
다음 다이어그램은 쿼리 수행자, 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 반환:
case when invoker_role() IN ('ANALYST') then val else NULL end;
권한이 없는 사용자에 대한 정적 마스킹 값 반환:
case when invoker_role() in ('ANALYST') then val else '********' end;
승인되지 않은 사용자의 경우 SHA2 , SHA2_HEX를 사용하여 해시 값을 반환합니다.
case when invoker_role() in ('ANALYST') then val else sha2(val) -- return hash of the column value end;