Função IS_GRANTED_TO_INVOKER_ROLE: mudança na saída

Atenção

Essa mudança de comportamento está no pacote 2023_04.

Para saber o status atual do pacote, consulte Histórico do pacote.

O comportamento da função IS_GRANTED_TO_INVOKER_ROLE é o seguinte:

Anteriormente:

A função é avaliada como FALSE quando o argumento corresponde a uma função no seguinte contexto:

  • Chamando a função por si só: a hierarquia de funções da função principal ativa (ou seja, CURRENT_ROLE()).

  • Direitos do chamador do procedimento armazenado.

  • Direitos do proprietário do procedimento armazenado.

  • Proprietário da tarefa.

Se a função for usada em uma política de mascaramento que protege uma tabela, a função avaliará a hierarquia de funções do proprietário da política. Se a função no argumento da função estiver na hierarquia de funções da função que possui a política, a função será avaliada como TRUE. Caso contrário, a função é avaliada como FALSE.

Atualmente:

A avaliação da função usa a hierarquia de funções principal para a sessão nos seguintes contextos:

  • Chamando a função sozinha.

  • Tabela

  • Procedimento armazenado com direitos do chamador.

Se a função for usada em um procedimento armazenado com direitos de proprietário, a função avaliará a hierarquia de função da função que possui o procedimento armazenado com direitos de proprietário.

Da mesma forma, se a função for usada com uma tarefa, ela avaliará a hierarquia de funções da função que possui a tarefa.

Para identificar políticas de mascaramento existentes que usam a função IS_GRANTED_TO_INVOKER_ROLE, execute as seguintes instruções:

USE ROLE ACCOUNTADMIN;

SELECT *
    FROM snowflake.account_usage.masking_policies
    WHERE policy_body ilike '%is_granted_to_invoker_role%';
Copy

Ref: 984