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: