INVOKER_ROLE

INVOKER_ROLE

쿼리를 실행하는 객체의 계정 수준 역할 이름을 반환하는 컨텍스트 함수예요. 역할 이름이 데이터베이스 역할이면 NULL을 반환해요. 마스킹 정책에서 호출하는 역할에 따라 다른 값을 보여줄 때 유용합니다.

출처: Snowflake SQL Reference

본문

INVOKER_ROLE()

인자는 없어요.

사용 메모

  • 마스킹 정책과 함께 사용한다면 계정이 Enterprise Edition 이상인지 확인하세요.
  • 쿼리 컨텍스트에 따라 함수가 평가하는 역할은 아래와 같아요.
Context Evaluated role
User
Table CURRENT_ROLE
View 뷰 소유자 역할
UDF UDF 소유자 역할
Caller's rights 저장 프로시저 CURRENT_ROLE
Owner's rights 저장 프로시저 저장 프로시저 소유자 역할
Task 태스크 소유자 역할
Stream 주어진 스트림을 조회하는 역할

예시 — 마스킹 정책 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;

더 알아보기 (Learn more)