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 o relacionamento entre o contexto da consulta e a função avaliada pela função.

    Contexto

    Função avaliada

    Usuário

    CURRENT_ROLE

    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.

    Função do invocador muitas 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;
Copy

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

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