Tutorial: Classificar e marcar automaticamente dados confidenciais

Introdução

Identificar e rastrear seus dados confidenciais é algo simples e direto. O Snowflake fornece um algoritmo integrado para identificar seus dados confidenciais e marcá-los automaticamente com tags do sistema para ajudar a rastrear os tipos de dados e o grau de confidencialidade deles.

Com uma configuração mínima, também é possível configurar um esquema para que o Snowflake execute automaticamente esse processo de classificação para dados novos e alterados, aplicando tags definidas pelo usuário juntamente com as tags do sistema.

Neste tutorial, você vai:

  • Configurar os recursos necessários para concluir o tutorial, incluindo uma tag definida pelo usuário que é aplicada aos dados confidenciais.

  • Criar um perfil de classificação, que o Snowflake usa para classificar automaticamente os dados à medida que são adicionados a um esquema.

  • Adicionar um mapa de tags ao perfil de classificação para que a tag definida pelo usuário seja aplicada aos dados que o Snowflake identifica como confidenciais.

  • Ver os resultados da classificação.

Dica

Embora não seja mostrado neste tutorial, também é possível personalizar a classificação para identificar dados confidenciais usando expressões regulares definidas pelo usuário e marcar esses dados com categorias semânticas definidas pelo usuário. Para obter mais informações, consulte Implementação da classificação personalizada automática.

Configurar banco de dados de governança

Neste tutorial, você criará os objetos do Snowflake (uma tag definida pelo usuário e um perfil de classificação) necessários para controlar seus dados. Com base nas práticas recomendadas, esses objetos são criados em um banco de dados dedicado à governança.

Abra uma planilha SQL e, em seguida, execute as seguintes instruções para criar um banco de dados e um esquema para os objetos de governança:

USE ROLE ACCOUNTADMIN;

CREATE DATABASE IF NOT EXISTS governance_db;
CREATE SCHEMA IF NOT EXISTS governance_db.sch;
Copy

Nota

Para simplificar, você usará a função de sistema ACCOUNTADMIN para evitar a configuração dos privilégios necessários para definir a classificação de dados confidenciais. Na prática, você não deve usar essa função potente, mas sim criar funções personalizadas com os privilégios necessários.

Configurar seus dados

Antes de configurar os dados para este tutorial, crie um warehouse para preencher uma tabela:

CREATE WAREHOUSE IF NOT EXISTS tutorial_wh;
Copy

Criação de uma tabela

  1. Crie o banco de dados e o esquema que conterão a tabela a ser classificada.

    CREATE DATABASE IF NOT EXISTS data_db;
    CREATE SCHEMA IF NOT EXISTS data_db.sch;
    
    Copy
  2. Crie a estrutura da tabela que conterá os dados confidenciais.

    CREATE TABLE data_db.sch.customers (
      account_number NUMBER(38,0),
      first_name VARCHAR(16777216),
      last_name VARCHAR(16777216),
      email VARCHAR(16777216)
    );
    
    Copy

Inserir valores na tabela

Adicione dados à tabela que você criou:

USE WAREHOUSE tutorial_wh;

INSERT INTO data_db.sch.customers (account_number, first_name, last_name, email)
  VALUES
    (1589420, 'john', 'doe', 'john.doe@example.com'),
    (2834123, 'jane', 'doe', 'jane.doe@example.com'),
    (4829381, 'jim', 'doe', 'jim.doe@example.com'),
    (9821802, 'susan', 'smith', 'susan.smith@example.com'),
    (8028387, 'bart', 'simpson', 'bart.barber@example.com');
Copy

Criação de um perfil de classificação

Ótimo, agora você tem uma tabela cheia de dados que precisa classificar para ajudar a proteger seus dados confidenciais. Como você deseja que o Snowflake classifique automaticamente os dados à medida que eles são adicionados a um esquema, será necessário criar um perfil de classificação.

Um perfil de classificação controla a frequência com que os dados em um esquema são classificados e o que acontece durante esse processo de classificação. Cada perfil de classificação é uma instância da classe CLASSIFICATION_PROFILE.

Para criar o perfil de classificação para seu esquema, execute o seguinte:

CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE
  governance_db.sch.my_classification_profile(
      {
        'minimum_object_age_for_classification_days': 0,
        'maximum_classification_validity_days': 30,
        'auto_tag': true
      });
Copy

Quando esse perfil de classificação é definido em seu esquema, acontece o seguinte:

  • A classificação começa em menos de um dia ('minimum_object_age_for_classification_days': 0).

  • Após a classificação inicial, o Snowflake faz uma nova verificação a cada 30 dias para ver se as tabelas precisam ser reclassificadas ('maximum_classification_validity_days': 30).

  • As tags de classificação serão definidas automaticamente nas colunas identificadas como contendo dados confidenciais ('auto_tag': true).

Adicionar mapa de tags ao perfil de classificação

Como você definiu 'auto_tag': true no seu perfil de classificação, o Snowflake aplicará automaticamente as tags de classificação do sistema quando classificar os dados como confidenciais. A tag SEMANTIC_CATEGORY classifica o tipo dos dados, por exemplo, identificando os dados como um nome ou endereço. A tag PRIVACY_CATEGORY classifica a sensibilidade dos dados, por exemplo, identificando os dados como um identificador ou quase identificador.

Agora, suponha que você queira ir além e aplicar automaticamente sua própria tag definida pelo usuário com base em como os dados são classificados. Este tutorial mostra como fazer isso!

Para criar a tag personalizada que você deseja aplicar aos dados confidenciais, execute a seguinte instrução:

CREATE TAG governance_db.sch.tutorial_pii;
Copy

Em seguida, você modificará o perfil de classificação para que essa tag definida pelo usuário seja aplicada quando o Snowflake identificar que uma coluna contém nomes. A adição de um mapa de tags ao perfil de classificação configura como e quando a tag definida pelo usuário é aplicada.

Para adicionar o mapa de tags ao seu perfil de classificação, execute o método classification_profile_name!SET_TAG_MAP:

CALL governance_db.sch.my_classification_profile!SET_TAG_MAP(
  {'column_tag_map':[
    {
      'tag_name':'governance_db.sch.tutorial_pii',
      'tag_value':'sensitive_name',
      'semantic_categories':['NAME']
    }]});
Copy

Agora, se a classificação automática determinar que a categoria semântica definida pelo sistema é NAME, então a tag definida pelo usuário tutorial_pii é definida na coluna. Com base no perfil de classificação, o valor da tag definida pelo usuário tutorial_pii é definido como sensitive_name.

Nota

Você também pode definir um mapa de tags ao criar o perfil de classificação.

Definir perfil de classificação em um esquema

Você tem o perfil de classificação configurado, portanto, está tudo pronto para defini-lo no esquema. Isso inicia o processo de classificação automática.

ALTER SCHEMA data_db.sch
  SET CLASSIFICATION_PROFILE = 'governance_db.sch.my_classification_profile';
Copy

É isso, o Snowflake faz o resto! O Snowflake começa a classificar os dados existentes e continuará a classificar os novos dados à medida que forem adicionados ao esquema.

Exibir resultados de classificação

Antes de concluir esta parte do tutorial, você terá de esperar uma hora para que o Snowflake conclua o processo de classificação.

Após uma hora, execute a seguinte instrução para recuperar os resultados da classificação:

CALL SYSTEM$GET_CLASSIFICATION_RESULT('data_db.sch.customers');
Copy

Nos resultados, observe o seguinte:

  • A coluna ACCOUNT_NUMBER não foi classificada como confidencial, portanto, não recebeu tags de classificação.

  • A coluna EMAIL foi marcada como tendo uma categoria semântica de EMAIL e uma categoria de privacidade de IDENTIFIER.

  • Com base no mapa de tags do perfil de classificação, a tag definida pelo usuário governance_db.sch.tutorial_pii foi atribuída a colunas que tinham uma categoria semântica de NAME (veja as linhas destacadas na saída).

  {
  "classification_profile_config": {
    "classification_profile_name": "GOVERNANCE_DB.SCH.MY_CLASSIFICATION_PROFILE"
  },
  "classification_result": {
    "ACCOUNT_NUMBER": {
      "alternates": []
    },
    "EMAIL": {
      "alternates": [],
      "recommendation": {
        "confidence": "HIGH",
        "coverage": 1,
        "details": [],
        "privacy_category": "IDENTIFIER",
        "semantic_category": "EMAIL",
        "tags": [
          {
            "tag_applied": true,
            "tag_name": "snowflake.core.semantic_category",
            "tag_value": "EMAIL"
          },
          {
            "tag_applied": true,
            "tag_name": "snowflake.core.privacy_category",
            "tag_value": "IDENTIFIER"
          }
        ]
      },
      "valid_value_ratio": 1
    },
    "FIRST_NAME": {
      "alternates": [],
      "recommendation": {
        "confidence": "HIGH",
        "coverage": 1,
        "details": [],
        "privacy_category": "IDENTIFIER",
        "semantic_category": "NAME",
        "tags": [
          {
            "tag_applied": true,
            "tag_name": "snowflake.core.semantic_category",
            "tag_value": "NAME"
          },
          {
            "tag_applied": true,
            "tag_name": "snowflake.core.privacy_category",
            "tag_value": "IDENTIFIER"
          },
          {
            "tag_applied": true,
            "tag_name": "governance_db.sch.tutorial_pii",
            "tag_value": "sensitive_name"
          }
        ]
      },
      "valid_value_ratio": 1
    },
    "LAST_NAME": {
      "alternates": [],
      "recommendation": {
        "confidence": "HIGH",
        "coverage": 1,
        "details": [],
        "privacy_category": "IDENTIFIER",
        "semantic_category": "NAME",
        "tags": [
          {
            "tag_applied": true,
            "tag_name": "snowflake.core.semantic_category",
            "tag_value": "NAME"
          },
          {
            "tag_applied": true,
            "tag_name": "snowflake.core.privacy_category",
            "tag_value": "IDENTIFIER"
          },
          {
            "tag_applied": true,
            "tag_name": "governance_db.sch.tutorial_pii",
            "tag_value": "sensitive_name"
          }
        ]
      },
      "valid_value_ratio": 1
    }
  }
}

Limpeza, resumo e recursos adicionais

Parabéns! Você concluiu este tutorial com sucesso.

Em resumo, você aprendeu a fazer o seguinte:

  • Crie um perfil de classificação para controlar como a classificação automática é implementada.

  • Adicione um mapa de tags ao perfil de classificação para que as tags definidas pelo usuário sejam automaticamente definidas nas colunas que contêm dados confidenciais.

  • Defina o perfil de classificação em um esquema para iniciar a classificação automática.

  • Visualize os resultados da classificação automática.

Descarte os objetos do tutorial

Se você planeja repetir o tutorial, pode manter os objetos que criou.

Caso contrário, descarte os objetos do tutorial da seguinte forma:

DROP TAG governance_db.sch.tutorial_pii;
DROP DATABASE governance_db;
DROP DATABASE data_db;
DROP WAREHOUSE tutorial_wh;
Copy

Qual é o próximo passo?

Para obter detalhes completos sobre a implementação da classificação automática de dados confidenciais, incluindo os custos associados e a implementação da classificação personalizada, consulte Classificação automática de dados confidenciais.