Categorias:

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

IS_ORGANIZATION_USER_GROUP_IN_SESSION

Supondo que uma função tenha sido importada de um grupo de usuários da organização, verifica se a função está na hierarquia de funções primárias ou secundárias ativas do usuário para a sessão.

A função retorna FALSE se a função especificada não estiver vinculada a um grupo de usuários da organização.

Consulte também:

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

Sintaxe

IS_ORGANIZATION_USER_GROUP_IN_SESSION( '<string_literal>' )
Copy

Argumentos

'string_literal'

O nome de uma função.

Retornos

TRUE

A função primária ou as funções secundárias ativas do usuário atual na sessão herdam os privilégios da função especificada.

Quando o valor DEFAULT_SECONDARY_ROLES é ALL, qualquer função concedida ao usuário herda os privilégios da função especificada.

A função especificada pode ser a função primária ou secundária atual (ou seja, as funções retornadas por CURRENT_ROLE ou CURRENT_SECONDARY_ROLES, respectivamente) ou qualquer função inferior na hierarquia de funções.

FALSE

Uma das seguintes opções:

  • A função especificada é uma função local que não está vinculada a um grupo de usuários da organização.

  • A função especificada é superior na hierarquia de funções das funções primárias ou secundárias atuais ou não está na hierarquia de funções.

NULL

Em uma conta de consumidor que compartilha dados, essa função retorna NULL se referenciar um objeto compartilhado (por exemplo, uma UDF seguro ou exibição segura), como em uma condição de política de mascaramento. Este comportamento impede a exposição da hierarquia de funções em uma conta de consumidor de compartilhamento de dados.

Notas de uso

A função IS_ORGANIZATION_USER_GROUP_IN_SESSION é semelhante às funções IS_DATABASE_ROLE_IN_SESSION e IS_ROLE_IN_SESSION. As notas de uso a seguir se aplicam a todas essas funções de contexto:

  • Use uma sintaxe.

  • Sintaxe do nome:

    • Apenas um nome de função pode ser passado como argumento.

    • O argumento deve ser uma cadeia de caracteres e usar a mesma caixa de como a função é armazenada no Snowflake. Para obter mais detalhes, consulte Requisitos para identificadores.

  • Sintaxe da coluna:

    • Apenas uma coluna pode ser passada como argumento.

    • A coluna deve ter um tipo de dados STRING.

    • Especifique a coluna como uma das seguintes:

      • column_name

      • table_name.column_name

      • schema_name.table_name.column_name

      • database_name.schema_name.table_name.column_name

  • Colunas virtuais

    Uma coluna virtual, que contém o resultado de um valor calculado de uma expressão em vez do valor calculado que está sendo armazenado na tabela, não é suportada.

    SELECT IS_ROLE_IN_SESSION(UPPER(authz_role)) FROM t1;
    
    Copy

    Uma coluna virtual só é suportada quando a expressão tem um alias para o nome da coluna:

    CREATE VIEW v2 AS
    SELECT
      authz_role,
      UPPER(authz_role) AS upper_authz_role
    FROM t2;
    
    SELECT IS_ROLE_IN_SESSION(upper_authz_role) FROM v2;
    
    Copy
  • Políticas:

    Se você usar essas funções com uma política de mascaramento ou uma política de acesso a linhas, verifique se sua conta Snowflake é Enterprise Edition ou superior.

    O Snowflake recomenda o uso dessa função quando as condições da política precisarem avaliar a hierarquia de funções e os privilégios herdados.

  • Cache de resultados:

    Se você usar essa função em uma política de mascaramento ou em uma política de acesso a linhas e nem a política nem a tabela ou coluna protegida pela política forem alteradas em relação a uma consulta anterior, você poderá usar a função RESULT_SCAN para retornar os resultados de uma consulta na tabela protegida. O cache de resultados se aplica somente ao uso da sintaxe não literal.

  • Essas funções não podem ser usadas na definição da exibição materializada porque essas funções não são deterministas e o Snowflake não pode determinar quais dados devem ser materializados.

Exemplos

O exemplo a seguir retorna TRUE se o seguinte for verdadeiro:

  • A função analyst foi criada ou vinculada quando um grupo de usuários da organização foi adicionado à conta.

  • Os privilégios concedidos à função analyst são herdados pela função atual na sessão.

SELECT IS_ORGANIZATION_USER_GROUP_IN_SESSION('ANALYST');
Copy