Explicação do mascaramento dinâmico de dados

Este tópico fornece uma visão geral do recurso de mascaramento dinâmico de dados.

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

O que é o mascaramento dinâmico de dados?

O mascaramento dinâmico de dados é um recurso de segurança em nível de coluna que usa políticas de mascaramento para ocultar seletivamente dados de texto sem formatação na tabela e exibir colunas no momento da consulta.

No Snowflake, as políticas de mascaramento são objetos de nível de esquema, o que significa que um banco de dados e um esquema devem existir no Snowflake antes que uma política de mascaramento possa ser aplicada a uma coluna. Atualmente, o Snowflake suporta o uso do mascaramento dinâmico de dados em tabelas e exibições.

No tempo de execução da consulta, a política de mascaramento é aplicada à coluna em todos os locais onde a coluna aparece. Dependendo das condições da política de mascaramento, do contexto de execução SQL e da hierarquia de funções, os operadores de consulta do Snowflake podem ver o valor de texto simples, um valor parcialmente mascarado ou um valor totalmente mascarado.

Para obter mais detalhes sobre como as políticas de mascaramento funcionam, incluindo o comportamento do tempo de execução da consulta, criação de uma política, uso com tabelas e exibições e abordagens de gerenciamento usando políticas de mascaramento, consulte: Explicação da segurança em nível de coluna.

Para obter mais detalhes sobre os efeitos do contexto de execução de SQL e da hierarquia de funções, consulte Tópicos avançados de segurança em nível de coluna.

Benefícios do mascaramento dinâmico de dados

A seguir resumimos alguns dos principais benefícios do mascaramento dinâmico de dados.

Facilidade de uso:

Você pode escrever uma política uma vez e fazer com que ela se aplique a milhares de colunas em bancos de dados e esquemas.

Administração de dados e SoD:

Um responsável por segurança ou privacidade, e não o proprietário do objeto, decide quais colunas proteger. Políticas de mascaramento são fáceis de gerenciar e aceitam modelos de administração centralizados e descentralizados.

Autorização e governança de dados:

Acesso contextual a dados por função ou direitos personalizados.

Compatível com a governança de dados implementada pelos responsáveis pela segurança ou privacidade; pode proibir usuários privilegiados com as funções ACCOUNTADMIN ou SECURITYADMIN de visualizar dados desnecessariamente.

Compartilhamento de dados:

Mascare os dados facilmente antes de compartilhá-los.

Gerenciamento de alterações:

Altere facilmente o conteúdo da política de mascaramento sem ter que reaplicar a política a milhares de colunas.

Para uma comparação dos benefícios entre o mascaramento dinâmico de dados e a tokenização externa, consulte: Benefícios da segurança em nível de coluna.

Limitações do mascaramento dinâmico de dados

Para uma visão geral das limitações, consulte Limitações da segurança em nível de coluna.

Considerações sobre o mascaramento dinâmico de dados

Para considerações adicionais sobre o mascaramento dinâmico de dados, consulte Configurações de segurança em nível de coluna.

Privilégios do mascaramento dinâmico de dados

A tabela a seguir resume os privilégios relacionados ao mascaramento dinâmico de dados.

Privilégio

Uso

CREATE

Permite a criação de uma nova política de mascaramento em um esquema.

APPLY

Permite executar as operações de remover e definir para uma política de mascaramento em uma coluna.

Observe que a concessão do privilégio global APPLY MASKING POLICY (isto é, APPLY MASKING POLICY em ACCOUNT) permite executar a operação DESCRIBE em tabelas e exibições.

Para exemplos de sintaxe, consulte Privilégios da política de mascaramento.

OWNERSHIP

Concede controle total sobre a política de mascaramento. Requerido para alterar a maioria das propriedades de uma política de mascaramento. Somente uma única função pode ter este privilégio sobre um objeto específico de cada vez.

Nota

A operação em uma política de mascaramento também requer o privilégio USAGE no banco de dados pai e no esquema.

DDL do mascaramento dinâmico de dados

O Snowflake fornece o seguinte conjunto de comandos para gerenciar políticas de mascaramento dinâmico de dados.

Auditoria do mascaramento dinâmico de dados

O Snowflake fornece duas exibições Account Usage para obter informações sobre políticas de mascaramento:

  • A exibição MASKING POLICIES fornece uma lista de todas as políticas de mascaramento em sua conta Snowflake.

  • A exibição POLICY_REFERENCES fornece uma lista de todos os objetos nos quais é definida uma política de mascaramento.

A função de tabela POLICY_REFERENCES do Information Schema pode ser usada para:

  • Retornar uma lista de todos os objetos (ou seja, tabelas, exibições) que tenham a política de mascaramento definida em uma coluna.

  • Retornar uma lista de associações de políticas que tenham o nome e o tipo de objeto especificado.

O Snowflake registra a consulta original executada pelo usuário na página History (na interface da Web). A consulta é encontrada na coluna SQL Text.

Os nomes das políticas de mascaramento que foram usadas em uma consulta específica podem ser encontrados em Query Profile.

O histórico de consulta é específico apenas para a exibição QUERY_HISTORY de Account Usage. Nesta exibição, a coluna Query Text contém o texto da instrução SQL. Os nomes das políticas de mascaramento não estão incluídos na exibição QUERY_HISTORY.

Solução de problemas do mascaramento dinâmico de dados

Você pode usar mensagens de erro para ajudar a solucionar problemas de políticas de mascaramento.

Mensagens de erro

A tabela a seguir descreve as mensagens de erro que o Snowflake pode retornar enquanto usa políticas de mascaramento.

Comportamento

Mensagem de erro

Ação de solução de problemas

Não é possível aplicar uma política de mascaramento a um recurso do Snowflake.

Unsupported feature CREATE ON MASKING POLICY COLUMN.

As políticas de mascaramento não são atualmente aplicáveis a este recurso.

Uma função ativa não pode criar ou substituir uma política de mascaramento.

SQL access control error: Insufficient privileges to operate on account <account_name>

Conceda o privilégio CREATE MASKING POLICY à função especificada usando grant create masking policy on account to role <role_name>; .. Verifique se a função tem o privilégio usando show grants to role <role_name> e tente a instrução de mascaramento CREATE OR REPLACE novamente.

Uma determinada função não pode anexar uma política de mascaramento a uma tabela.

SQL compilation error: Database <database_name> does not exist or not authorized.

Conceda o privilégio APPLY MASKING POLICY à função usando grant apply masking policy on account to role <role_name>;

Uma determinada função que não possui uma política de mascaramento em uma tabela tenta aplicar uma política de mascaramento em uma tabela que pode usar.

SQL compilation error: Masking policy <policy_name> does not exist or not authorized.

Conceda o uso de determinada função para a política de mascaramento usando grant apply on masking policy <policy_name> to role <role_name>;

Não é possível descartar ou remover uma política usando drop masking policy <policy_name>;

SQL compilation error: Policy <policy_name> cannot be dropped/replaced as it is associated with one or more entities.

Use uma instrução ALTER TABLE … MODIFY COLUMN ou ALTER VIEW … MODIFY COLUMN para UNSET a política primeiro e depois tente a instrução DROP novamente.

Restaurar uma tabela descartada produz um erro de política de mascaramento.

SQL execution error: Column <column_name> already attached to a masking policy that does not exist. Please contact the policy administrator.

Remova a política de mascaramento atualmente anexada com uma instrução ALTER tabela/exibição MODIFY COLUMN e depois reaplique a política de mascaramento à coluna com uma instrução CREATE OR REPLACE.

Não é possível aplicar uma política de mascaramento a uma coluna específica, mas a política de mascaramento pode ser aplicada a uma coluna diferente.

Specified column already attached to another masking policy.A column cannot be attached to multiple masking policies.please drop the current association in order to attach a new masking policy.

Decida qual política de mascaramento deve ser aplicada à coluna, atualize e tente novamente.

A atualização de uma política com uma instrução ALTER falha.

SQL compilation error: Masking policy <policy_name> does not exist or not authorized.

Verifique se o nome da política no comando ALTER corresponde a uma política existente, executando show masking policies;

A função de proprietário da tabela clonada não pode remover uma política de mascaramento.

SQL access control error: Insufficient privileges to operate on ALTER TABLE UNSET MASKING POLICY “<policy_name>”

Conceda o privilégio APPLY à função que possui a tabela clonada usando grant apply on masking policy <policy_name> to role <role_name>; .. Verifique se a função que possui a tabela clonada tem a concessão usando show grants to role <role_name>; e tente a instrução ALTER novamente.

A atualização de uma política usando IF EXISTS retorna um resultado bem-sucedido, mas não atualiza a política.

Nenhuma mensagem de erro retornada; o Snowflake retorna a instrução executada com sucesso.

Remova IF EXISTS da instrução ALTER e tente novamente.

Ao criar ou substituir uma política de mascaramento por CASE, os tipos de dados não correspondem (por exemplo (cadeia de caracteres VAL) -> retorna número).

SQL compilation error: Masking policy function argument and return type mismatch.

Atualize a política de mascaramento usando CASE com tipos de dados correspondentes usando uma instrução CREATE OR REPLACE ou uma instrução ALTER MASKING POLICY.

Aplicar uma política de mascaramento a uma coluna virtual.

SQL compilation error: Masking policy cannot be attached to a VIRTUAL_COLUMN column.

Aplique a política de mascaramento à(s) coluna(s) na tabela de origem.

Aplicar uma política de mascaramento a uma exibição materializada.

SQL compilation error: syntax error line <number> at position <number> unexpected “modify”. . SQL compilation error: error line <number> at position <number> invalid identifier “<character>” . SQL execution error: One or more materialized views exist on the table. number of mvs=<number>, table name=<table_name>.

Aplique a política de mascaramento à(s) coluna(s) na tabela de origem. Para obter mais informações, consulte Limitações.

Aplicar uma política de mascaramento a uma coluna de tabela usada para criar uma exibição materializada.

SQL compilation error: Masking policy cannot be attached to a MATERIALIZED_VIEW column.

Para aplicar a política de mascaramento à coluna de tabela, descarte a exibição materializada.

Incluir uma coluna mascarada enquanto se cria uma exibição materializada.

Unsupported feature “CREATE ON MASKING POLICY COLUMN”.

Crie a exibição materializada sem incluir as colunas mascaradas ou não defina nenhuma política de mascaramento na tabela base ou exibições, crie a exibição materializada e então aplique as políticas de mascaramento às colunas da exibição materializada.

Não é possível criar uma política de mascaramento com uma função definida pelo usuário (UDF) no corpo da política de mascaramento.

SQL access control error: Insufficient privileges to operate on function “<udf_name>”

Verifique se a função que cria a política de mascaramento tem o privilégio USAGE para a UDF.

Próximos tópicos: