Explicação da tokenização externa

Este tópico fornece uma visão geral do recurso de tokenização externa.

Note que uma política de mascaramento de tokenização externa pode ser atribuída a uma tag para fornecer uma tokenização externa baseada em tags. Para detalhes sobre como atribuir uma política de mascaramento a uma tag, consulte Políticas de mascaramento baseadas em tags.

Importante

A tokenização externa requer Como escrever funções externas, que estão incluídas no Snowflake Standard Edition, e você pode usar funções externas com um provedor de tokenização.

No entanto, se você optar por integrar seu provedor de tokenização com a tokenização externa do Snowflake, você deve atualizar para Enterprise Edition ou superior.

Para se informar sobre a possibilidade de upgrade, entre em contato com o suporte Snowflake.

O que é a tokenização externa?

A tokenização externa permite que as contas tokenizem os dados antes de carregá-los no Snowflake e destokenizem os dados no tempo de execução da consulta. A tokenização é o processo de remoção de dados confidenciais, substituindo-os por um token indecifrável. A tokenização externa usa políticas de mascaramento com funções externas.

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.

A tokenização dos dados antes do carregamento no Snowflake garante que os dados confidenciais nunca sejam expostos desnecessariamente. O uso de políticas de mascaramento com funções externas garante que somente os públicos apropriados possam visualizar dados destokenizados em tempo de execução da consulta.

Benefícios da tokenização externa

A seguir resumimos alguns dos principais benefícios da tokenização externa.

Pré-carregamento de dados tokenizados:

Usando um provedor de tokenização, os dados tokenizados são pré-carregados no Snowflake. Portanto, mesmo sem aplicar uma política de mascaramento a uma coluna em uma tabela ou exibição, os usuários nunca veem o valor real dos dados. Isto proporciona maior segurança para os dados mais confidenciais de sua organização.

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.

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 da tokenização externa

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

Considerações sobre a tokenização externa

Para considerações adicionais sobre tokenização externa, consulte Configurações de segurança em nível de coluna.

Privilégios e dependências da tokenização externa

A tabela a seguir resume os privilégios relacionados às políticas de mascaramento da tokenização externa.

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.

Como a política de mascaramento de tokenização externa requer uma função externa que depende de uma integração de API, a tabela seguinte resume os privilégios que a função personalizada (por exemplo, MASKING_ADMIN) precisa ter sobre os objetos Snowflake. Observe que estes privilégios se aplicam somente à função personalizada e não são necessários para a função do usuário que consulta a coluna com uma política de mascaramento.

Função personalizada

Privilégio

Objeto

Proprietário da política de tokenização externa

USAGE

Função externa

Proprietário da função externa (ou seja, a função com o privilégio OWNERSHIP sobre a função externa)

USAGE

Quaisquer objetos de integração de API que são referenciados pela função externa.

DDL de tokenização externa

O Snowflake fornece o seguinte conjunto de comandos para gerenciar as políticas de tokenização externa.

Auditoria de tokenização externa

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 de tokenização externa

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: