Categorias:

Information Schema , Funções de tabela

POLICY_REFERENCES

Retorna uma linha para cada objeto que tem a política especificada atribuída ao objeto ou retorna uma linha para cada política atribuída ao objeto especificado.

Consulte também: Exibição POLICY_REFERENCES (Exibição Account Usage)

Sintaxe

POLICY_REFERENCES(
      POLICY_NAME => '<string>' )

POLICY_REFERENCES(
       REF_ENTITY_NAME => '<string>' ,
       REF_ENTITY_DOMAIN => '<string>'
       )

Argumentos

POLICY_NAME => 'string'

Especifica o nome da política.

  • O nome completo da política deve ser delimitado por aspas simples.

  • Se o nome da política diferenciar letras maiúsculas e minúsculas ou incluir quaisquer caracteres ou espaços especiais, as aspas duplas são necessárias para processar o caso/caracteres. As aspas duplas devem ser incluídas dentro das aspas simples (ou seja, '"<nome_política>"').

Atualmente, Snowflake oferece suporte às seguintes políticas ao especificar o nome da política como um argumento:

REF_ENTITY_NAME => 'string'

O nome do objeto (isto é, nome_tabela, nome_exibição, nome_tabela_externa, nome_usuário) no qual a política é definida.

  • O nome completo do objeto deve ser delimitado por aspas simples.

  • Se o nome da objeto diferenciar letras maiúsculas e minúsculas ou incluir quaisquer caracteres ou espaços especiais, as aspas duplas são necessárias para processar o caso/caracteres. As aspas duplas devem ser incluídas dentro das aspas simples (ou seja, '"<nome_política>"').

REF_ENTITY_DOMAIN => 'string'

O tipo de objeto (ou seja, tabela, exibição, usuário) no qual a política é definida.

Se o objeto for uma tabela externa, use 'table' como argumento.

Notas de uso

  • Os resultados são retornados com base nos privilégios concedidos à função que executa a consulta:

    • Se a função tiver o privilégio global APPLY MASKING POLICY, o Snowflake retorna todas as associações de política de mascaramento no resultado da consulta.

    • Se a função tiver o privilégio global APPLY ROW ACCESS POLICY, o Snowflake retorna todas as associações de políticas de acesso a linhas no resultado da consulta.

    • Se a função tiver o privilégio APPLY em uma determinada política (por exemplo, APPLY em MASKING POLICY), o Snowflake retornará as associações dessa política somente para objetos que são de propriedade da função que executa a consulta.

    • Se a função tiver um dos privilégios globais APPLY ou o privilégio OWNERSHIP na política, mas não OWNERSHIP na tabela ou exibição (por exemplo, SELECT na tabela), o Snowflake não mostrará as associações de políticas no resultado da consulta.

    • Se a função não tiver nenhuma permissão de política mas tiver o privilégio OWNERSHIP na tabela, o Snowflake retornará uma mensagem de erro e não mostrará as associações de políticas.

  • Ao chamar uma função de tabela do Information Schema, a sessão deve ter um esquema INFORMATION_SCHEMA em uso ou a função deve usar o nome do objeto totalmente qualificado. Para obter mais detalhes, consulte Snowflake Information Schema.

  • Escolha uma variação de sintaxe para executar uma consulta. A mistura de argumentos resulta em erros e falhas nas consultas.

    Os argumentos ref_entity_name e ref_entity_domain devem ser incluídos juntos, caso contrário a consulta falha.

    Esta função não oferece suporte à sintaxe para determinar se uma política de senhas ou sessão é definida para um usuário específico. Em outras palavras, o uso da sintaxe com os argumentos REF_ENTITY_NAME = 'jsmith' e REF_ENTITY_DOMAIN = 'user' não é suportado.

  • O Snowflake retorna erros se o nome do objeto especificado não existir ou se o operador da consulta não estiver autorizado a visualizar qualquer política no objeto. O Snowflake pode retornar um conjunto de resultados de uma associação de políticas se o operador for autorizado a visualizar um subconjunto das associações de políticas. Os tipos de objetos não suportados listados como ref_entity_domain (por exemplo, 'stream') também retornam erros.

  • O Snowflake não retorna um conjunto de resultados se o operador da consulta não tiver os privilégios APPLY ou OWNERSHIP sobre a política.

Saída

A função retorna as seguintes colunas:

Coluna

Tipo de dados

Descrição

POLICY_DB

TEXT

O banco de dados no qual a política é definida.

POLICY_SCHEMA

TEXT

O esquema no qual a política é definida.

POLICY_NAME

TEXT

O nome da política.

POLICY_KIND

TEXT

O tipo de política no Snowflake.

REF_DATABASE_NAME

TEXT

O nome do banco de dados que contém um objeto ao qual o objeto consultado faz referência.

REF_SCHEMA_NAME

TEXT

O nome do esquema que contém um objeto ao qual o objeto consultado faz referência.

REF_ENTITY_NAME

TEXT

O nome do objeto (isto é, nome_tabela, nome_exibição, nome_tabela_externa) no qual a política é definida.

REF_ENTITY_DOMAIN

TEXT

O tipo de objeto (ou seja, tabela, exibição) no qual a política é definida.

REF_COLUMN_NAME

TEXT

O nome da coluna na qual a política é definida.

REF_ARG_COLUMN_NAMES

ARRAY

Retorna NULL para linhas no resultado da consulta na qual é definida uma política de mascaramento.

TAG_DATABASE

TEXT

O nome do banco de dados contendo a tag que tem uma política atribuída à tag ou NULL se uma política não for atribuída à tag.

TAG_SCHEMA

TEXT

O nome do esquema contendo a tag que tem uma política atribuída à tag ou NULL se uma política não for atribuída à tag.

TAG_NAME

TEXT

O nome da tag que tem uma política atribuída a ela ou NULL se uma política não for atribuída à tag.

POLICY_STATUS

TEXT

Especifica o status da política, que pode ser um dos quatro valores possíveis: ACTIVE, MULTIPLE_MASKING_POLICY_ASSIGNED_TO_THE_COLUMN, COLUMN_IS_MISSING_FOR_SECONDARY_ARG ou COLUMN_DATATYPE_MISMATCH_FOR_SECONDARY_ARG.

Observe o seguinte para a coluna POLICY_STATUS:

ACTIVE

Especifica que a coluna (isto é, REF_COLUMN_NAME) só é associada a uma única política por uma tag.

MULTIPLE_MASKING_POLICY_ASSIGNED_TO_THE_COLUMN

Especifica que múltiplas políticas de mascaramento são atribuídas à mesma coluna.

COLUMN_IS_MISSING_FOR_SECONDARY_ARG

Especifica que a política (isto é, POLICY_NAME) é uma política de mascaramento condicional e a tabela (isto é, REF_ENTITY_NAME) não tem uma coluna com o mesmo nome.

COLUMN_DATATYPE_MISMATCH_FOR_SECONDARY_ARG

Especifica que a política é uma política de mascaramento condicional e a tabela tem uma coluna com o mesmo nome, mas um tipo de dados diferente do tipo de dados na assinatura da política de mascaramento.

Exemplos

Retornar uma linha para cada objeto (ou seja, tabela ou exibição) que tenha a política de mascaramento chamada ssn_mask definida na coluna:

use database my_db;
use schema information_schema;
select *
  from table(information_schema.policy_references(policy_name => 'my_db.my_schema.ssn_mask'));

Devolver uma linha para cada política atribuída à tabela chamada my_table:

use database my_db;
use schema information_schema;
select *
  from table(information_schema.policy_references(ref_entity_name => 'my_db.my_schema.my_table', ref_entity_domain => 'table'));