- 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:
Neste tópico:
Sintaxe¶
INVOKER_ROLE()
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 o relacionamento entre o contexto da consulta e a função avaliada pela função.
Contexto
Função avaliada
Usuário
Tabela
CURRENT_ROLE.
Exibição
Função do proprietário da exibição.
UDF
Função do proprietário da UDF.
Procedimento armazenado com direitos do chamador
CURRENT_ROLE.
Procedimento armazenado com direitos 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.
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:
CREATE OR REPLACE MASKING POLICY mask_string AS (val string) RETURNS string -> CASE WHEN INVOKER_ROLE() IN ('ANALYST') THEN val ELSE NULL END;
Retornar um valor estático mascarado para usuários não autorizados:
CREATE OR REPLACE MASKING POLICY mask_string AS (val string) RETURNS string -> CASE WHEN INVOKER_ROLE() IN ('ANALYST') THEN val ELSE '********' END;
Retornar um valor do hash usando SHA2 , SHA2_HEX para usuários não autorizados.
CREATE OR REPLACE MASKING POLICY mask_string AS (val string) RETURNS string -> CASE WHEN INVOKER_ROLE() IN ('ANALYST') THEN val ELSE SHA2(val) END;