Categorias:

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

INVOKER_ROLE

Retorna o nome da função a nível de conta do objeto que executa a consulta ou NULL se o nome da função for uma função de banco de dados.

Consulte também:

Tópicos avançados de segurança em nível de coluna

Neste tópico:

Sintaxe

INVOKER_ROLE()
Copy

Argumentos

Nenhum.

Notas de uso

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

  • A tabela a seguir resume a relação entre a consulta e o valor INVOKER_ROLE na expressão SQL da política de mascaramento.

    Consulta onde se aplica a política de mascaramento

    Valor devolvido por INVOKER_ROLE

    Exibição

    Função do proprietário da exibição.

    UDF

    Função do proprietário da UDF.

    Procedimento armazenado com direito do chamador

    CURRENT_ROLE.

    Procedimento armazenado com direito do proprietário

    Função do proprietário do procedimento armazenado

    Tarefa

    Função do proprietário da tarefa.

    Fluxo

    A função que consulta um determinado fluxo.

  • O diagrama a seguir mostra a relação de um executor de consulta, funções no Snowflake e políticas de mascaramento em tabelas ou exibições.

    Invoker Role Many Views

    Onde:

    • R0, R1, R2, R3

      São funções no Snowflake.

    • P1, P2, P3

      São políticas de mascaramento do Snowflake.

    • V1, V2

      São exibições no Snowflake.

    • T

      É uma tabela no Snowflake.

    Com base neste diagrama, os valores de CURRENT_ROLE e INVOKER_ROLE em uma consulta são os seguintes:

    Política

    CURRENT_ROLE

    INVOKER_ROLE

    P1

    R3

    R1

    P2

    R3

    R2

    P3

    R3

    R3

Exemplos

Os exemplos seguintes mostram como usar a expressão INVOKER_ROLE em uma expressão SQL da política de mascaramento.

Retornar NULL para usuários não autorizados:

case
  when invoker_role() IN ('ANALYST') then val
  else NULL
end;
Copy

Retornar um valor estático mascarado para usuários não autorizados:

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

Retornar um valor do hash usando SHA2 , SHA2_HEX para usuários não autorizados.

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