Categorias:

Funções de contexto (Objeto da sessão)

INVOKER_SHARE

Retorna o nome do compartilhamento que acessou diretamente a tabela ou exibição em que a função INVOKER_SHARE é invocada, caso contrário a função retorna NULL.

Neste tópico:

Sintaxe

INVOKER_SHARE()
Copy

Argumentos

Nenhum.

Notas de uso

  • Se usar a função INVOKER_SHARE com a política de mascaramento, verifique se sua conta Snowflake é Enterprise Edition ou superior.

  • Use a função INVOKER_SHARE em uma política que está anexada a uma tabela ou exibição que é diretamente invocada por uma ação.

  • Se a função INVOKER_SHARE for utilizada dentro de um Visão geral das funções definidas pelo usuário em uma política de mascaramento diretamente ligada a uma tabela ou exibição, INVOKER_SHARE retorna NULL porque o contexto da função INVOKER_SHARE é o proprietário do UDF, não o compartilhamento.

  • Para ajudar a determinar se uma tabela ou exibição foi direta ou indiretamente invocada por uma ação, considere o uso da função CURRENT_ACCOUNT em uma política de mascaramento. Esta função retorna a conta Snowflake para a sessão atual do usuário, o que pode ajudar a determinar se a tabela ou exibição é invocada a partir de uma conta de consumidor de compartilhamento de dados.

Exemplos

Considere uma conta de provedor de compartilhamento de dados que tenha uma política de mascaramento definida em uma coluna de uma exibição segura. Há duas ações diferentes que podem acessar a exibição segura para oferecer suporte a dois consumidores diferentes de compartilhamento de dados.

O provedor de compartilhamento de dados cria a seguinte política para usar UDFs para identificar qual compartilhamento está sendo acessado. Se um usuário na conta de consumidor de compartilhamento de dados tentar consultar os dados através de um ou outro compartilhamento, ele vê os dados com base em como as UDFs estão escritas, caso contrário é visto um valor fixo mascarado.

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