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   | 
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   | 
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   | 
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   | 
Não é possível descartar ou remover uma política usando   | 
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   | 
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   | 
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: