카테고리:

컨텍스트 함수 (세션 오브젝트)

INVOKER_ROLE

쿼리를 실행하는 오브젝트의 계정 수준 역할의 이름을 반환하거나 역할 이름이 데이터베이스 역할인 경우에는 NULL을 반환합니다.

참고 항목:

고급 열 수준 보안 항목

이 항목의 내용:

구문

INVOKER_ROLE()
Copy

인자

없습니다.

사용법 노트

  • 마스킹 정책 과 함께 INVOKER_ROLE 함수를 사용하는 경우, Snowflake 계정이 Enterprise Edition 이상인지 확인하십시오.

  • 다음 표에는 쿼리 컨텍스트와 함수가 평가하는 역할 사이의 관계가 요약되어 있습니다.

    컨텍스트

    평가되는 역할

    사용자

    CURRENT_ROLE

    테이블

    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;
Copy

권한이 없는 사용자에 대한 정적 마스킹 값 반환:

CREATE OR REPLACE MASKING POLICY mask_string AS
(val string) RETURNS string ->
CASE
  WHEN INVOKER_ROLE() IN ('ANALYST') THEN val
  ELSE '********'
END;
Copy

승인되지 않은 사용자의 경우 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;
Copy