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: