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:
Consulte a exibição TAG_REFERENCES (em Account Usage) para determinar as atribuições de tags.
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.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';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'; | +------------------------------------------------------------------------------+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';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';
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"] | +--------------------------------------------------------------+
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.
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.