카테고리:

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

INVOKER_ROLE

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

참고 항목:

고급 Column-level Security 항목

이 항목의 내용:

구문

INVOKER_ROLE()
Copy

인자

없습니다.

사용법 노트

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

  • 다음 표는 마스킹 정책 SQL 식에서 쿼리와 INVOKER_ROLE 값 간의 관계를 요약한 것입니다.

    마스킹 정책이 적용되는 쿼리

    INVOKER_ROLE에 의해 반환되는 값

    뷰 소유자 역할.

    UDF

    UDF 소유자 역할입니다.

    호출자 권한이 있는 저장 프로시저

    CURRENT_ROLE.

    소유자 권한이 있는 저장 프로시저

    저장 프로시저 소유자 역할.

    작업

    작업 소유자 역할.

    스트림

    지정된 스트림 을 쿼리하는 역할입니다.

  • 다음 다이어그램은 쿼리 수행자, Snowflake의 역할, 테이블 또는 뷰에 대한 마스킹 정책의 관계를 보여줍니다.

    Invoker Role Many Views

    여기서:

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

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

case
  when invoker_role() in ('ANALYST') then val
  else '********'
end;
Copy

승인되지 않은 사용자의 경우 SHA2 , SHA2_HEX를 사용하여 해시 값을 반환합니다.

case
  when invoker_role() in ('ANALYST') then val
  else sha2(val) -- return hash of the column value
end;
Copy