Uso de tokenização externa

Este tópico fornece instruções sobre como usar a tokenização externa no Snowflake com integrações de parceiros e como criar uma integração personalizada de tokenização externa.

O Snowflake suporta a tokenização externa na AWS, Microsoft Azure e Google Cloud Platform.

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 obter mais 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.

Integração de parceiros para tokenização externa

Os seguintes parceiros facilitam a tokenização externa no Snowflake. Para utilizar estas integrações de parceiros, siga as instruções na documentação do parceiro ou contate o parceiro para iniciar o processo de configuração:

Criação de uma integração personalizada para tokenização externa

Complete as seguintes etapas para criar uma integração personalizada para tokenização externa:

Etapa 1: Criar uma função externa

Crie uma função externa no Snowflake e configure seu ambiente de provedor de nuvem para se comunicar com a função externa. Para obter mais detalhes, consulte:

Etapa 2: Conceder privilégios de política de mascaramento a uma função personalizada

Um responsável por segurança ou privacidade deve servir como administrador da política de mascaramento (ou seja, função personalizada: MASKING_ADMIN) e ter os privilégios de definir, gerenciar e aplicar políticas de mascaramento às colunas.

O Snowflake fornece os seguintes privilégios para conceder a um responsável por segurança ou privacidade para políticas de mascaramento de segurança em nível de coluna:

Privilégio

Descrição

CREATE MASKING POLICY

Este privilégio em nível de esquema controla quem pode criar políticas de mascaramento.

APPLY MASKING POLICY

Este privilégio em nível de conta controla quem pode definir ou remover políticas de mascaramento nas colunas e é concedido à função ACCOUNTADMIN por padrão. . Este privilégio só permite aplicar uma política de mascaramento a uma coluna e não fornece qualquer privilégio de tabela adicional descrito em Privilégios de controle de acesso.

APPLY ON MASKING POLICY

Opcional. Este privilégio em nível de política pode ser usado por um proprietário de política para descentralizar as operações definidas ou removidas de uma dada política de mascaramento em colunas para os proprietários do objeto (ou seja, a função que tem o privilégio OWNERSHIP sobre o objeto). . O Snowflake suporta o controle de acesso discricionário onde os proprietários de objetos também são considerados administradores de dados. . Se o administrador de políticas confia que os proprietários dos objetos sejam considerados administradores de dados para colunas protegidas, então o administrador de políticas pode usar este privilégio para descentralizar a aplicação de operações de definição e remoção de políticas.

O exemplo seguinte cria a função MASKING_ADMIN e concede privilégios de política de mascaramento a essa função.

Crie uma função personalizada de administrador de políticas de mascaramento:

use role useradmin;
CREATE ROLE masking_admin;
Copy

Conceda privilégios à função masking_admin:

use role securityadmin;
GRANT CREATE MASKING POLICY on SCHEMA <db_name.schema_name> to ROLE masking_admin;
GRANT APPLY MASKING POLICY on ACCOUNT to ROLE masking_admin;
Copy

Permita que a função table_owner defina ou remova a política de mascaramento ssn_mask (opcional):

GRANT APPLY ON MASKING POLICY ssn_mask to ROLE table_owner;
Copy

Onde:

  • db_name.schema_name

    Especifica o identificador do esquema para o qual o privilégio deve ser concedido.

Para obter mais informações, consulte:

Etapa 3: Conceder a função personalizada a um usuário

Conceda a função personalizada MASKING_ADMIN a um usuário que serve como responsável por segurança ou privacidade.

use role useradmin;
grant role masking_admin to user jsmith;
Copy

Etapa 4: Criar uma política de mascaramento

Neste exemplo representativo, os usuários com a função personalizada ANALYST veem os valores de e-mail não tokenizados. Usuários sem a função personalizada ANALYST veem os valores tokenizados.

A função externa para destokenizar os valores de e-mail é de_email().

-- create masking policy

create or replace masking policy email_de_token as (val string) returns string ->
  case
    when current_role() in ('ANALYST') then de_email(val)
    else val
  end;
Copy

Dica

Se você quiser atualizar uma política de mascaramento existente e precisar ver a definição atual da política, chame a função GET_DDL ou execute o comando DESCRIBE MASKING POLICY.

Etapa 5: Aplicar uma política de mascaramento a uma coluna de tabela ou exibição

Estes exemplos consideram que uma política de mascaramento não é aplicada à coluna de tabela quando a tabela é criada e à coluna de exibição quando a exibição é criada. Opcionalmente, você pode aplicar uma política de mascaramento a uma coluna da tabela quando criar a tabela com uma instrução CREATE TABLE ou uma coluna de exibição com uma instrução CREATE VIEW.

Execute as seguintes instruções para aplicar a política a uma coluna de tabela ou a uma coluna de exibição.

-- apply masking policy to a table column

alter table if exists user_info modify column email set masking policy email_de_token;

-- apply the masking policy to a view column

alter view user_info_v modify column email set masking policy email_de_token;
Copy

Etapa 6: Consultar dados no Snowflake

Execute duas consultas diferentes no Snowflake, uma consulta com a função personalizada ANALYST e outra consulta com uma função diferente, para verificar se os usuários sem a função personalizada ANALYST veem valores tokenizados.

-- using the ANALYST custom role

use role ANALYST;
select email from user_info; -- should see plain text value

-- using the PUBLIC system role

use role public;
select email from user_info; -- should see tokenized value
Copy

Práticas recomendadas para tokenização externa

  • Sincronização de sistemas. Na AWS, é útil sincronizar usuários e funções no provedor de identidade (IdP) de sua organização com Snowflake e Protegrity. Se os usuários e funções não estiverem sincronizados, pode haver comportamentos inesperados, mensagens de erro e resolução de problemas complexos relativos a funções externas, integrações de API, políticas de mascaramento e políticas de tokenização. Uma opção é usar SCIM para manter usuários e funções sincronizados com seu IdP e Snowflake.

  • Causa raiz do(s) erro(s). Como a tokenização externa requer a coordenação de múltiplos sistemas (por exemplo, IdP, Snowflake, Protegrity, AWS, Azure, GCP), sempre verifique os privilégios, limitações atuais, funções externas, integração de API, políticas de mascaramento e as colunas que têm políticas de mascaramento para a tokenização externa no Snowflake. Para ajudar a determinar a causa raiz, consulte:

Tópico seguinte: