카테고리:

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

INVOKER_SHARE

INVOKER_SHARE 함수가 호출된 테이블 또는 뷰에 직접적으로 액세스한 공유의 이름을 반환합니다. 그 외의 경우, 함수는 NULL을 반환합니다.

이 항목의 내용:

구문

INVOKER_SHARE()

인자

없습니다.

사용법 노트

  • 열 수준 보안 과 함께 INVOKER_SHARE 함수를 사용하는 경우, Snowflake 계정이 Enterprise Edition 이상인지 확인하십시오.

  • 공유에 의해 직접적으로 호출되는 테이블 또는 뷰에 연결된 정책에서 INVOKER_SHARE 함수를 사용합니다.

  • INVOKER_SHARE 함수가 테이블 또는 뷰에 직접적으로 연결된 마스킹 정책 내의 사용자 정의 함수(UDF) 작성하기 내부에서 사용되는 경우, INVOKER_SHARE는 NULL을 반환합니다. INVOKER_SHARE 함수의 컨텍스트는 공유가 아니라 UDF 소유자이기 때문입니다.

  • 테이블 또는 뷰가 공유에 의해 직접적으로 호출되었는지 아니면 간접적으로 호출되었는지 확인하려면 마스킹 정책에서 CURRENT_ACCOUNT 함수를 사용하는 것이 좋습니다. 이 함수는 사용자의 현재 세션에 대한 Snowflake 계정을 반환하므로, 테이블 또는 뷰가 데이터 공유 컨슈머 계정에서 호출되는지 확인하는 데 도움이 됩니다.

보안 뷰의 열에 마스킹 정책이 설정된 데이터 공유 공급자 계정을 생각해 보십시오. 서로 다른 두 데이터 공유 컨슈머를 지원하기 위해 보안 뷰에 액세스할 수 있는 서로 다른 두 공유가 있습니다.

데이터 공유 공급자는 UDF를 사용하여, 액세스 중인 공유를 식별하는 다음 정책을 만듭니다. 데이터 공유 컨슈머 계정의 사용자가 두 공유 중 하나를 통해 데이터를 쿼리하려고 하는 경우, UDF가 작성된 방식에 따라 데이터가 표시되고, 그 외의 경우에는 고정된 마스킹된 값이 표시됩니다.

create or replace masking policy mask_share
as (val string) returns string ->
case
  when invoker_share() in ('SHARE1') then mask1_function(val)
  when invoker_share() in ('SHARE2') then mask2_function(val)
  else '***MASKED***'
end;
맨 위로 이동