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

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.

Snowflake records the original query run by the user on the History page (in the web interface). The query is found in the SQL Text column.

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: