Marcação de objetos

Este tópico fornece conceitos e instruções sobre como usar tags no Snowflake.

Para saber mais sobre o uso de uma política de mascaramento com uma tag, consulte Políticas de mascaramento baseadas em tags.

Neste tópico:

O que é uma tag?

As tags permitem aos administradores de dados monitorar dados confidenciais quanto a conformidade, descoberta, proteção e casos de uso de recursos através de uma abordagem centralizada ou descentralizada de gerenciamento de governança de dados.

Uma tag é um objeto em nível de esquema que pode ser atribuído a outro objeto Snowflake. Uma tag pode receber um valor de cadeia de caracteres ao ser atribuída a um objeto Snowflake. O Snowflake armazena a tag e seu valor de cadeia de caracteres como um par chave-valor. A tag deve ser única para seu esquema, e o valor da tag é sempre uma cadeia de caracteres.

Você cria uma tag usando uma instrução CREATE TAG e especifica o valor da cadeia de caracteres da tag ao atribuir a tag a um objeto. A tag pode ser atribuída a um objeto enquanto se cria o objeto, usando uma instrução CREATE <objeto> e considerando que a tag já existe. Alternativamente, você pode atribuir a tag a um objeto existente usando uma instrução ALTER <objeto>.

Uma única tag pode ser atribuída a diferentes tipos de objetos ao mesmo tempo (por exemplo, warehouse e tabela simultaneamente). No momento da atribuição, o valor da cadeia de caracteres da tag pode ser duplicado ou permanecer único. Por exemplo, várias tabelas podem receber a tag cost_center, e a tag sempre pode ter o valor da cadeia de caracteres como sales. Alternativamente, o valor das cadeias de caracteres pode ser diferente (por exemplo, engenharia, marketing, finanças). Após definir as tags e atribuí-las a objetos Snowflake, elas podem ser consultadas para monitorar o uso dos objetos e facilitar operações de governança de dados, tais como monitoramento, auditoria e criação de relatórios.

Como as tags podem ser atribuídas a tabelas, exibições e colunas, definir uma tag e depois consultar a tag permite descobrir uma infinidade de colunas e objetos de banco de dados que contêm informações confidenciais. Após a descoberta, os administradores de dados podem determinar a melhor forma de disponibilizar esses dados, tais como filtragem seletiva usando políticas de acesso a linhas, ou usando políticas de mascaramento para determinar se os dados são tokenizados, totalmente mascarados, parcialmente mascarados ou desmascarados.

A atribuição de tags a warehouses habilita o monitoramento preciso do uso de recursos. A consulta de tags nos recursos permite o fácil agrupamento de recursos por centro de custo ou outras unidades organizacionais. Além disso, a tag pode facilitar a análise de atividades comerciais de relativamente curto prazo, tais como projetos, para fornecer uma visão mais granular sobre quais recursos foram utilizados e quando e como isso ocorreu.

Cotas de tags para objetos e colunas

O valor de cadeia de caracteres para cada tag pode ser de até 256 caracteres, com a opção de especificar valores permitidos para uma tag.

A descrição a seguir se aplica a todos os objetos que não são tabelas e exibições:

O Snowflake permite um número máximo de 50 tags únicas que podem ser definidas para um único objeto. Em uma instrução CREATE <objeto> ou ALTER <objeto>, 100 é o número máximo de tags que pode ser especificado em uma única instrução.

O número máximo de tags únicas é ligeiramente diferente para tabelas e exibições, incluindo as colunas nessas tabelas e exibições.

Tabelas, exibições e colunas

Para uma tabela ou exibição e suas colunas, o número máximo de tags únicas que podem ser especificadas em uma única instrução CREATE <objeto> ou ALTER <objeto> é 100. Este valor total tem os seguintes limites:

  • Uma única tabela ou objeto de exibição: 50 tags únicas.

  • Todas as colunas combinadas em uma única tabela ou exibição: 50 tags únicas.

Por exemplo, se uma única coluna em uma tabela tiver 10 tags únicas definidas na coluna, Snowflake permite:

  • Definir 40 tags únicas adicionais na mesma coluna, em outras colunas da tabela, ou em alguma combinação das colunas da tabela.

  • Definir 50 tags únicas adicionais na própria tabela.

Uma vez atingido o limite de 50 tags únicas para a própria tabela e suas colunas, nenhuma tag adicional pode ser definida na tabela ou em suas colunas. Neste ponto, se for necessário definir tags adicionais na tabela ou em suas colunas, o próximo passo a considerar é como gerenciar as cotas de tags para um objeto.

Gerenciamento de cotas de tags

O número máximo de 50 tags únicas inclui tags descartadas por um período de 24 horas a partir de quando a tag é descartada usando uma instrução DROP TAG. A razão para este período é permitir que o usuário que descartou a tag execute uma instrução UNDROP TAG, se necessário. Quando a operação UNDROP TAG é executada dentro do intervalo de tempo de 24 horas, o Snowflake restaura as atribuições de tags (ou seja, referências) que eram atuais antes da operação de descarte.

Após a expiração do período de 24 horas, o Snowflake limpa quaisquer referências à tag descartada. Neste ponto, uma nova tag pode ser atribuída ao objeto ou coluna que já fez referência à tag descartada.

Use o seguinte procedimento para gerenciar as cotas de tags para um objeto:

  1. Consulte a exibição TAG_REFERENCES (em Account Usage) para determinar as atribuições de tags.

  2. Remova a tag do objeto ou coluna. Por exemplo:

    Para objetos, use o comando ALTER <objeto> ... UNSET TAG correspondente.

    Para uma coluna de tabela ou exibição, use o comando ALTER { TABLE | VIEW } ... { ALTER | MODIFY } COLUMN ... UNSET TAG correspondente.

  3. Descarte a tag usando uma instrução DROP TAG.

Especificação de valores da tag

A propriedade de tag ALLOWED_VALUES permite especificar os possíveis valores de cadeia de caracteres que podem ser atribuídos à tag quando a tag é definida em um objeto. O número máximo de valores de cadeia de caracteres possíveis para uma única tag é 300.

Você pode especificar estes valores ao criar ou substituir uma tag por uma instrução CREATE TAG, ou ao modificar uma chave de tag existente com uma instrução ALTER TAG. Observe que a instrução ALTER TAG suporta a adição de valores permitidos para uma tag e o descarte dos valores existentes para uma tag.

Para determinar a lista de valores permitidos para uma tag, chame a função GET_DDL ou a função SYSTEM$GET_TAG_ALLOWED_VALUES.

Por exemplo:

Crie uma tag chamada cost_center com 'finance' e 'engineering' como os dois únicos valores de cadeia de caracteres permitidos:

create tag cost_center
    allowed_values 'finance', 'engineering';
Copy

Verifique os valores permitidos:

select get_ddl('tag', 'cost_center')

+------------------------------------------------------------------------------+
| GET_DDL('tag', 'cost_center')                                                |
|------------------------------------------------------------------------------|
| create or replace tag cost_center allowed_values = 'finance', 'engineering'; |
+------------------------------------------------------------------------------+
Copy

Modifique a tag chamada cost_center para adicionar 'marketing' como um valor de cadeia de caracteres permitido:

alter tag cost_center
    add allowed_values 'marketing';
Copy

Modifique a tag chamada cost_center para descartar 'engineering' como um valor de cadeia de caracteres permitido:

alter tag cost_center
    drop allowed_values 'engineering';
Copy

Para obter a lista de valores de cadeia de caracteres permitidos para uma determinada tag, chame a função GET_DDL ou a função SYSTEM$GET_TAG_ALLOWED_VALUES. Por exemplo, considerando que a tag cost_center esteja armazenada em um banco de dados chamado governance e um esquema chamado tags:

select system$get_tag_allowed_values('governance.tags.cost_center');

+--------------------------------------------------------------+
| SYSTEM$GET_TAG_ALLOWED_VALUES('GOVERNANCE.TAGS.COST_CENTER') |
|--------------------------------------------------------------|
| ["finance","marketing"]                                      |
+--------------------------------------------------------------+
Copy

Linhagem de tags

Uma tag é herdada com base na hierarquia de objetos protegíveis do Snowflake. O Snowflake recomenda definir as chaves de tag da forma mais próxima possível da hierarquia de objetos protegíveis em seu ambiente Snowflake.

O administrador de tags pode aplicar políticas de mascaramento a tabelas e exibições.

Herdar tags significa que, se uma tag for aplicada a uma tabela, a tag também se aplica às colunas dessa tabela. Este comportamento é chamado de linhagem de tags.

É possível substituir uma tag herdada em um determinado objeto. Por exemplo, se uma coluna de tabela herdar a tag chamada cost_center com um valor de cadeia de caracteres chamado sales, a tag pode ser atualizada com um valor de cadeia de caracteres de tag mais específico, como sales_na, para especificar o centro de custo de vendas da América do Norte. Além disso, uma nova tag pode ser aplicada à coluna da tabela. Use uma instrução ALTER TABLE … ALTER COLUMN para atualizar o valor da cadeia de caracteres de tag na coluna e para definir uma ou mais tags adicionais em uma coluna.

Após definir as chaves de tags e atribuir tags aos objetos Snowflake, monitore as tags, referências de tags e linhagem de tags usando as funções de tabela especificadas ou consulte as exibições como mostrado em Monitoramento de tags com SQL (neste tópico).

Nota

A linhagem de tags não inclui propagação de objetos aninhados. Por exemplo:

table_1 » view_1 » materialized_view_1

Se já existirem objetos aninhados em relação a uma tabela ou exibição subjacente, uma tag definida no objeto subjacente não resulta automaticamente na definição da tag no objeto aninhado. Neste exemplo, uma tag definida em table_1 não resulta na definição da mesma tag em view_1 e materialized_view_1. Este comportamento também é verdadeiro para as colunas.

Se for necessário ter tags nos objetos ou colunas subjacentes transportados para os objetos aninhados, execute uma instrução CREATE OR REPLACE sobre o objeto aninhado e certifique-se de que a instrução SQL especifica a tag no objeto ou coluna aninhada.

Benefícios

Facilidade de uso:

Defina uma tag uma vez e aplique-a a tantos objetos diferentes quanto quiser.

Linhagem de tags:

Como as tags são herdadas, aplicar a tag a objetos superiores na hierarquia de objetos protegíveis faz com que a tag seja aplicada a todos os objetos filhos. Por exemplo, se uma tag for definida em uma tabela, ela será herdada por todas as colunas dessa tabela.

Atribuição consistente com replicação:

O Snowflake replica tags e suas atribuições dentro do banco de dados primário para o banco de dados secundário.

Para obter mais informações, consulte Replicação (neste tópico).

Rastreamento de dados confidenciais e uso de recursos:

Tags simplificam a identificação de dados confidenciais (por exemplo, PII, Segredo) e trazem visibilidade ao uso dos recursos do Snowflake. Com dados e metadados no mesmo sistema, os analistas podem determinar rapidamente quais recursos consomem mais créditos de Snowflake com base na definição da tag (por exemplo, cost_center, department).

Gerenciamento centralizado ou descentralizado:

As tags suportam diferentes abordagens de gerenciamento para facilitar a conformidade com requisitos regulamentares internos e externos.

Em uma abordagem centralizada, a função personalizada tag_admin cria e aplica tags a objetos Snowflake.

Em uma abordagem descentralizada, equipes individuais aplicam tags a objetos Snowflake, e a função personalizada tag_admin cria tags para garantir uma nomeação consistente das tags.

Considerações

Concessões futuras:

Não há suporte para futuras concessões de privilégios em tags.

Como alternativa, conceda o privilégio APPLYTAG a uma função personalizada para permitir que essa função aplique tags a outro objeto.

Snowflake Native App:

Tenha cuidado ao criar o script de configuração quando existirem tags em um esquema com versão. Para obter detalhes, consulte considerações sobre esquema com versão.

Uso de tags com objetos e recursos do Snowflake

A seguir está uma descrição de como tags afetam objetos e recursos do Snowflake.

Objetos com suporte

A tabela a seguir lista os objetos com suporte para tags, incluindo colunas, com base na hierarquia de objetos protegíveis do Snowflake.

Uma tag pode ser definida em um objeto com uma instrução CREATE <objeto> ou uma instrução ALTER <objeto>, a menos que especificado de outra forma na tabela abaixo.

Uma tag pode ser definida em uma coluna usando uma instrução CREATE TABLE, CREATE VIEW, ALTER TABLE … MODIFY COLUMN ou ALTER VIEW.

Hierarquia de objetos

Objetos com suporte

Notas

Organização

Conta

Uma tag pode ser definida em sua conta atual por uma função com o privilégio global APPLY TAG.

Conta

Aplicativo

Pacote de aplicativo

Banco de dados

Integração

Todos os tipos são suportados.

Use um comando ALTER INTEGRATION para definir uma tag na integração.

Política de redes

Use um comando ALTER NETWORK POLICY para definir uma tag em uma política de redes.

Função

Compartilhamento

As tags são definidas no compartilhamento pelo provedor de compartilhamento de dados. Estas tags não estão visíveis para o consumidor que compartilha dados. Use um comando ALTER SHARE para definir uma tag no compartilhamento.

Usuário

Warehouse

Banco de dados

Função de banco de dados

Use um comando ALTER DATABASE ROLE para definir uma tag em uma função de banco de dados.

Esquema

Esquema

Alerta

Função externa e UDF

Use um comando ALTER FUNCTION para definir uma tag em uma função externa ou UDF.

Tabela externa

Você pode criar uma tabela externa com uma tag usando uma instrução CREATE EXTERNAL TABLE.

Para gerenciar as atribuições de tags em uma tabela externa, use o comando ALTER TABLE.

Tabela Iceberg

Exibição materializada

Canal

Defina uma tag em um canal com uma instrução ALTER PIPE.

Política

Defina uma tag em uma política de mascaramento, senha, acesso a linhas e sessão com a instrução ALTER <política> correspondente.

Procedimento

Defina uma tag em um procedimento armazenado com uma instrução ALTER PROCEDURE.

Estágio

Defina uma tag em um estágio com uma instrução ALTER STAGE.

Fluxo

Tabela

Tarefa

Defina uma tag em uma tarefa com uma instrução ALTER TASK.

Exibição

Tabela ou exibição

Coluna

Inclui tabelas de eventos.

Políticas de mascaramento e marcação de objetos

Para obter mais detalhes, consulte Políticas de mascaramento baseadas em tags.

Note que uma política de mascaramento diretamente atribuída a uma coluna tem precedência sobre uma política de mascaramento baseada em tags.

Instruções CREATE TABLE

Com CREATE TABLE … LIKE, as tags atribuídas à tabela de origem são atribuídas à tabela de destino.

Replicação

As tags e suas atribuições podem ser replicadas de uma conta de origem para uma conta de destino.

As atribuições de tags não podem ser modificadas na conta de destino após a replicação inicial a partir da conta de origem. Por exemplo, não é permitido colocar uma tag em um banco de dados secundário (por exemplo, replicado). Para modificar as atribuições de tags na conta de destino, modifique-as na conta de origem e replique-as na conta de destino.

Para replicação de banco de dados, a operação de replicação falha se uma das seguintes condições for verdadeira:

  • O banco de dados primário está em uma conta Enterprise (ou superior) e contém uma tag, mas uma ou mais das contas aprovadas para replicação estão em edições anteriores.

  • Um objeto contido no banco de dados primário tem uma referência pendente a uma tag em um banco de dados diferente.

Para evitar um erro de referência pendente, replique o banco de dados e os objetos em nível de conta usando um grupo de replicação ou failover. Certifique-se de que o grupo de replicação inclua:

  • O banco de dados que contém as tags na propriedade ALLOWED_DATABASES.

  • Outros objetos de nível de conta que tenham uma tag na propriedade OBJECT_TYPES (por exemplo ROLES, WAREHOUSES).

    Para obter mais detalhes, consulte CREATE REPLICATION GROUP e CREATE FAILOVER GROUP.

Nota

Ao usar grupos de replicação e failover ou replicação de banco de dados:

  • Os recurso de failover/failback estão disponíveis apenas para contas Snowflake que sejam Business Critical Edition (ou superior).

    Para obter mais informações, consulte Introdução à replicação e failover em várias contas.

  • Se você especificar a IGNORE EDITION CHECK cláusula para replicação de banco de dados em uma instrução ALTER DATABASE ou em uma instrução CREATE OR ALTER para um grupo de replicação ou failover, a replicação de tag pode ocorrer quando a conta de destino é de uma edição anterior à edição Business Critical.

    Para obter mais detalhes, consulte a descrição da cláusula nestes comandos.

Clonagem

  • Associações de tags no objeto de origem (por exemplo, tabela) são mantidas nos objetos clonados.

  • Para um banco de dados ou esquema:

    As tags armazenadas no banco de dados ou esquema também são clonadas.

    Quando um banco de dados ou esquema é clonado, as tags contidas no esquema ou banco de dados também são clonadas.

    Se existir uma tabela ou exibição no esquema de origem/banco de dados e houver referências a tags no mesmo esquema ou banco de dados, a tabela ou exibição clonada será mapeada para a tag clonada correspondente (no esquema/banco de dados de destino) em vez da tag no esquema ou banco de dados de origem.

Data Sharing

  • Quando a exibição compartilhada e a tag existem em diferentes bancos de dados, conceda o privilégio REFERENCE_USAGE sobre o banco de dados que contém a tag para o compartilhamento. Para obter mais detalhes, consulte Compartilhamento de dados a partir de diversos bancos de dados.

  • Na conta do consumidor do compartilhamento de dados:

    • A execução do comando SHOW TAGS retorna a tag compartilhada, desde que a função que executa o comando SHOW TAGS tenha o privilégio USAGE sobre o esquema que contém a tag compartilhada.

      Se o provedor conceder o privilégio READ na tag ao compartilhamento ou a uma função de banco de dados compartilhada, o consumidor poderá visualizar as atribuições de tag para a tag compartilhada. Para obter detalhes, consulte referências de tags compartilhadas.

    • Se uma tag da conta do provedor do compartilhamento de dados for atribuída a uma tabela compartilhada, o consumidor do compartilhamento de dados não poderá chamar a função SYSTEM$GET_TAG ou a função de tabela Information Schema TAG_REFERENCES para exibir a atribuição de tag.

Criação e atribuição de tags

A seguir, uma exibição geral de alto nível para o uso de tags no Snowflake:

  • Crie uma tag usando uma instrução CREATE TAG.

  • Atribua uma tag a um objeto Snowflake existente usando Snowsight ou um comado ALTER <objeto>.

    Observe que você pode atribuir uma tag a um objeto novo usando um comando CREATE <objeto>. Consulte a seção Objetos com suporte deste tópico para avaliar os objetos que oferecem suporte à definição de uma tag somente com o comando ALTER <objeto>.

Depois de atribuir tags, você pode monitorar o uso das tags usando SQL ou Snowsight. Para obter mais detalhes, consulte Monitoramento de tags com SQL e Monitoramento de tags com Snowsight (neste tópico).

Para simplificar, o fluxo de trabalho considera uma abordagem de gerenciamento centralizado das tags, onde a função personalizada tag_admin tem tanto o privilégio global CREATETAG como APPLYTAG.

  1. Crie uma função personalizada e atribua privilégios.

    Em uma abordagem de gerenciamento centralizado, a função personalizada tag_admin é responsável por criar e aplicar tags a objetos Snowflake.

    Observe que este exemplo utiliza a função de sistema ACCOUNTADMIN. Se não for desejável utilizar esta função de maior privilégio em um ambiente de produção, verifique se a função que atribui privilégios à função personalizada tag_admin tem os privilégios necessários para qualificar a função personalizada tag_admin. Para obter mais informações, consulte Gerenciamento de tags (neste tópico).

    USE ROLE USERADMIN;
    CREATE ROLE tag_admin;
    USE ROLE ACCOUNTADMIN;
    GRANT CREATE TAG ON SCHEMA mydb.mysch TO ROLE tag_admin;
    GRANT APPLY TAG ON ACCOUNT TO ROLE tag_admin;
    
    Copy
  2. Conceda a função personalizada tag_admin a um usuário que atue como administrador de tags.

    USE ROLE USERADMIN;
    GRANT ROLE tag_admin TO USER jsmith;
    
    Copy
  3. Execute uma instrução CREATE TAG para criar uma tag.

    USE ROLE tag_admin;
    USE SCHEMA mydb.mysch;
    CREATE TAG cost_center;
    
    Copy
  4. Atribua uma tag a um objeto ou coluna Snowflake.

    SQL:

    Você pode definir uma tag em todos os objetos e colunas suportados que existam com um comando ALTER <objeto>. Alguns objetos aceitam a definição de uma tag quando você cria ou substitui o objeto. Para obter mais detalhes, consulte a tabela na seção Objetos com suporte deste tópico.

    Por exemplo:

    • Para definir uma tag em um novo warehouse, use o comando CREATE WAREHOUSE.

      USE ROLE tag_admin;
      CREATE WAREHOUSE mywarehouse WITH TAG (cost_center = 'sales');
      
      Copy
    • Para definir uma tag em um warehouse existente, use o comando ALTER WAREHOUSE.

      USE ROLE tag_admin;
      ALTER WAREHOUSE wh1 SET TAG cost_center = 'sales';
      
      Copy
    • Para definir uma tag de uma coluna existente, use o comando ALTER TABLE … MODIFY COLUMN para uma coluna de tabela ou o comando ALTER VIEW … MODIFY COLUMN para uma coluna de exibição. Observe que mais de uma tag pode ser definida ou removida em uma única instrução.

      ALTER TABLE hr.tables.empl_info
        MODIFY COLUMN job_title
        SET TAG visibility = 'public';
      
      Copy
    Snowsight:

    Você pode definir uma tag em tabelas, exibições e colunas existentes usando Snowsight.

    Há várias opções para definir uma tag:

    • Navegue até a tabela, a exibição ou a coluna desejada usando o explorador de objetos (ou seja, Data » Databases).

      Selecione o menu More (ou seja, ...) » Edit e selecione + Tag. Siga as instruções para gerenciar a atribuição de tags.

    • Navegue até a área Governança (ou seja, Monitoring » Governance) em Snowsight e faça o seguinte:

      • Selecione um bloco, uma porcentagem de distribuição e uma das tags ou tabelas mais usadas. Quando você seleciona um item em Dashboard, a Snowsight redirecionará você para a guia Tagged Objects.

      • Modifique os filtros conforme necessário. Quando você seleciona um objeto ou coluna, Snowsight redirecionará você para o respectivo local no explorador de objetos. Atualize a atribuição de tags conforme necessário.

    • Navegue até a guia Tagged Objects diretamente. Modifique os filtros, selecione um objeto ou coluna e gerencie a atribuição de tags.

    Nota

    Para acessar a área de Governança, siga um destes procedimentos:

    • Use a função ACCOUNTADMIN.

    • Use para uma função que recebe as funções de banco de dados GOVERNANCE_VIEWER e OBJECT_VIEWER.

      Para obter detalhes sobre essas funções de banco de dados, consulte Funções de banco de dados SNOWFLAKE.

Monitoramento de tags com SQL

Você pode monitorar as tags com SQL usando duas exibições diferentes de Account Usage, duas funções de tabela de Information Schema, uma função de tabela de Account Usage e uma função de sistema.

Pode ser útil pensar em duas abordagens gerais para determinar como monitorar o uso de tags.

Descobrir tags

O Snowflake suporta as seguintes opções para listar tags e identificar o valor da cadeia de caracteres para uma determinada chave de tag.

  • Identifique as tags em sua conta:

    Use a exibição TAGS no esquema Account Usage do banco de dados SNOWFLAKE compartilhado. Esta exibição pode ser pensada como um catálogo para todas as tags em sua conta Snowflake que fornece informações sobre tags atuais e excluídas. Por exemplo:

    SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TAGS
    ORDER BY TAG_NAME;
    
    Copy
  • Identificar um valor para uma determinada tag:

    Use a função do sistema SYSTEM$GET_TAG para retornar o valor de tag atribuído à tag especificada, e o objeto ou coluna do Snowflake.

    SELECT SYSTEM$GET_TAG('cost_center', 'my_table', 'table');
    
    Copy

Identificar atribuições

O Snowflake suporta diferentes opções para identificar atribuições de tags, dependendo se a consulta precisa ser direcionada à conta ou a um banco de dados específico, e se a linhagem de tags é necessária.

  • Consulta em nível de conta com linhagem:

    Use a função de tabela de Account Usage TAG_REFERENCES_WITH_LINEAGE para determinar todos os objetos que têm uma determinada chave de tag e valor de tag que também incluem a linhagem de tags:

    SELECT *
    FROM TABLE(
      snowflake.account_usage.tag_references_with_lineage(
        'my_db.my_schema.cost_center'
      )
    );
    
    Copy
  • Consulta em nível de conta sem linhagem:

    Use a exibição de Account Usage TAG_REFERENCES para determinar todos os objetos que têm uma determinada chave de tag e valor de tag, mas não incluem a linhagem de tag:

    SELECT * FROM snowflake.account_usage.tag_references
    ORDER BY TAG_NAME, DOMAIN, OBJECT_ID;
    
    Copy
  • Consulta em nível de banco de dados, com linhagem:

    Todo banco de dados do Snowflake inclui um Snowflake Information Schema. Use a função de tabela do Information Schema TAG_REFERENCES para determinar todos os objetos que têm uma determinada tag que também inclui a linhagem da tag em um determinado banco de dados:

    SELECT *
    FROM TABLE(
      my_db.INFORMATION_SCHEMA.TAG_REFERENCES(
        'my_table',
        'table'
      )
    );
    
    Copy
  • Consulta em nível de banco de dados para todas as tags em cada coluna de uma tabela ou exibição, com a linhagem:

    Use a função de tabela do Information Schema TAG_REFERENCES_ALL_COLUMNS para obter todas as tags que estão definidas em cada coluna de uma determinada tabela ou exibição.

    Observe que o domínio TABLE precisa ser usado para todos os objetos que contêm colunas, mesmo que o nome do objeto seja uma exibição (ou seja, exibição, exibição materializada).

    SELECT *
    FROM TABLE(
      INFORMATION_SCHEMA.TAG_REFERENCES_ALL_COLUMNS(
        'my_table',
        'table'
      )
    );
    
    Copy

Monitoramento de tags com Snowsight

Você pode usar a área Snowsight Monitoring » Governance para monitorar e gerar relatórios sobre o uso de políticas e tags com tabelas, exibições e colunas. Há duas interfaces diferentes: Dashboard e Tagged Objects.

Ao usar a interface Dashboard e Tagged Objects, observe os detalhes a seguir.

  • As interfaces Dashboard e Tagged Objects exigem um warehouse em execução.

  • Snowsight atualiza o Dashboard a cada 12 horas.

  • A latência das informações Tagged Objects pode ser de até duas horas e retorna até 1.000 objetos.

Acesso à área de governança no Snowsight

Para acessar a área Governance, sua conta Snowflake deve ser Enterprise Edition ou superior. Além disso, você deve executar um dos seguintes procedimentos:

  • Use a função ACCOUNTADMIN.

  • Use uma função de conta receba diretamente as funções de banco de dados GOVERNANCE_VIEWER e OBJECT_VIEWER.

    Você deve usar uma função de conta com essas concessões de função de banco de dados. Atualmente, Snowsight não avalia hierarquias de funções e funções de banco de dados definidas pelo usuário com acesso a tabelas, exibições, políticas de acesso a dados e tags.

    Para determinar se a função da sua conta tem essas duas funções de banco de dados, use um comando SHOW GRANTS:

    SHOW GRANTS LIKE '%VIEWER%' TO ROLE data_engineer;
    
    Copy
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    | created_on                    | privilege | granted_on    | name                        | granted_to | grantee_name    | grant_option | granted_by |
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    | 2024-01-24 17:12:26.984 +0000 | USAGE     | DATABASE_ROLE | SNOWFLAKE.GOVERNANCE_VIEWER | ROLE       | DATA_ENGINEER   | false        |            |
    | 2024-01-24 17:12:47.967 +0000 | USAGE     | DATABASE_ROLE | SNOWFLAKE.OBJECT_VIEWER     | ROLE       | DATA_ENGINEER   | false        |            |
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    

    Se a função da sua conta não receber uma ou ambas as funções de banco de dados, use o comando GRANT DATABASE ROLE e execute o comando SHOW GRANTS novamente para confirmar as concessões:

    USE ROLE ACCOUNTADMIN;
    GRANT DATABASE ROLE SNOWFLAKE.GOVERNANCE_VIEWER TO ROLE data_engineer;
    GRANT DATABASE ROLE SNOWFLAKE.OBJECT_VIEWER TO ROLE data_engineer;
    SHOW GRANTS LIKE '%VIEWER%' TO ROLE data_engineer;
    
    Copy

    Para obter detalhes sobre essas funções de banco de dados, consulte Funções de banco de dados SNOWFLAKE.

Painel

Como administrador de dados, você pode usar a interface do Dashboard para monitorar o uso de tags e políticas das seguintes maneiras.

  • Cobertura: especifica a contagem e a porcentagem com base no fato de uma tabela, exibição ou coluna ter uma política ou tag.

  • Prevalência: lista e conta as políticas e tags usadas com mais frequência.

A cobertura e a prevalência fornecem um instantâneo de quão bem os dados estão protegidos e marcados com tag.

Quando você seleciona um número de contagem, porcentagem, nome de política ou nome de tag, a interface Tagged Objects é aberta. A interface Tagged Objects atualiza os filtros automaticamente com base em sua seleção em Dashboard.

As informações de monitoramento são uma alternativa ou um complemento à execução de operações complexas e de consulta intensa em várias exibições do Account Usage.

Essas exibições podem incluir, sem limitação, as exibições COLUMNS, POLICY_REFERENCES, TABLES, TAG_REFERENCES e VIEWS.

Objetos marcados

Como administrador de dados, você pode usar essa tabela para associar rapidamente a cobertura e a prevalência no Dashboard a uma lista de tabelas, exibições ou colunas específicas. Você também pode filtrar os resultados da tabela manualmente da seguinte forma.

  • Escolha Tables ou Columns.

  • Para as tags, você pode filtrar com tags, sem tags ou por uma tag específica.

  • Para políticas, você pode filtrar com políticas, sem políticas ou por uma política específica.

Quando você seleciona uma linha na tabela, a guia Table Details ou Columns em Data » Databases é aberta. Você pode editar as atribuições de tags e políticas conforme necessário.

Gerenciamento de tags

Privilégios de tags

O Snowflake permite os seguintes privilégios para determinar se os usuários podem criar, definir e possuir tags.

Observe que operar em qualquer objeto de um esquema também requer o privilégio USAGE no banco de dados e esquema principais.

Privilégio

Uso

CREATE

Permite criar uma nova tag em um esquema.

APPLY

Permite operações de definição e remoção para a tag em um objeto Snowflake. Para exemplos de sintaxe, consulte: Resumo de comandos DDL, operações e privilégios.

OWNERSHIP

Transfere a propriedade da tag, o que garante o controle total sobre a tag. Necessário para alterar a maioria das propriedades de uma tag.

Referência DDL de tags

O Snowflake oferece suporte ao seguinte DDL para criar e gerenciar tags:

Note que o Snowflake não oferece suporte à operação describe para o objeto de tag.

Resumo de comandos DDL, operações e privilégios

A tabela a seguir resume a relação entre privilégios de tags e operações DDL.

Operação

Privilégio necessário

Criar tag.

Uma função com o privilégio CREATE TAG no mesmo esquema.

Alterar tag.

A função com o privilégio OWNERSHIP na tag.

Descartar e cancelar o descarte da tag.

Uma função com o privilégio OWNERSHIP na tag e o privilégio USAGE no banco de dados e no esquema em que está a tag.

Mostrar tags.

Um dos seguintes: . Uma função com o privilégio USAGE no esquema em que está a tag, ou . Uma função com a permissão APPLYTAG na ACCOUNT.

Definir ou remover uma tag de um objeto.

Para objetos individuais, uma função com o privilégio APPLY TAG na conta, ou o privilégio APPLY TAG na tag e o privilégio OWNERSHIP no objeto para o qual a tag está definida. Consulte Objetos com suporte.

Definir ou remover uma tag de uma coluna.

Uma função com o privilégio APPLY TAG na conta ou uma função com o privilégio APPLY na tag e o privilégio OWNERSHIP na tabela ou exibição.

Colocar tags em um objeto.

Consulte SYSTEM$GET_TAG, TAG_REFERENCES e TAG_REFERENCES_WITH_LINEAGE.

O Snowflake aceita diferentes permissões para criar e definir uma tag para um objeto.

  1. Para uma abordagem centralizada de gerenciamento de tags na qual a função personalizada tag_admin cria e define tags em todos os objetos/colunas, as seguintes permissões são necessárias:

    use role securityadmin;
    grant create tag on schema <db_name.schema_name> to role tag_admin;
    grant apply tag on account to role tag_admin;
    
    Copy
  2. Em uma abordagem híbrida de gerenciamento, uma única função tem o privilégio CREATE TAG para assegurar que as tags sejam nomeadas de forma consistente e que equipes ou funções individuais tenham o privilégio APPLY para uma tag específica.

    Por exemplo, a função personalizada finance_role pode receber a permissão para definir a tag cost_center em tabelas e exibições que a função possui (ou seja, a função tem o privilégio OWNERSHIP sobre a tabela ou exibição):

    use role securityadmin;
    grant create tag on schema <db_name.schema_name> to role tag_admin;
    grant apply on tag cost_center to role finance_role;
    
    Copy