Usar SQL para configurar a classificação de dados confidenciais

As seções a seguir descrevem como usar o SQL para configurar a classificação automática de dados confidenciais em um banco de dados. Se você quiser usar uma interface da web para configurar a classificação de dados confidenciais, consulte Usar o Trust Center para configurar a classificação de dados confidenciais.

O fluxo de trabalho básico para usar SQL para classificar dados confidenciais consiste nas seguintes etapas:

  1. Crie um perfil de classificação que controle o que acontece durante a classificação de dados confidenciais.

  2. Defina o perfil de classificação em um banco de dados ou esquema para classificar automaticamente as tabelas na entidade.

Para obter exemplos completos desse fluxo de trabalho, consulte Exemplos.

Sobre os perfis de classificação

Um perfil de classificação define os critérios usados para classificar automaticamente as tabelas em um banco de dados. Esses critérios incluem:

  • Quanto tempo uma tabela deve existir antes de ser classificada automaticamente.

  • Quanto tempo antes as tabelas classificadas anteriormente devem ser reclassificadas.

  • Se as tags personalizadas e do sistema são definidas automaticamente nas colunas após a classificação. Você pode decidir se deseja que o Snowflake aplique automaticamente as tags sugeridas ou se prefere revisar as atribuições de tag propostas e depois aplicá-las você mesmo.

  • Um mapeamento entre as tags de classificação do sistema e as tags de objetos definidos pelo usuário para que as tags definidas pelo usuário possam ser aplicadas automaticamente.

  • Se classificadores personalizados são ou não usados para classificar os dados.

Quando um engenheiro de dados atribui o perfil de classificação a um banco de dados, os dados confidenciais nas tabelas que pertencem ao banco de dados são classificados automaticamente de acordo com o cronograma definido pelo perfil. Um engenheiro de dados poderá atribuir o mesmo perfil de classificação a vários bancos de dados ou criar vários perfis de classificação para definir critérios de classificação diferentes para bancos de dados distintos.

Para usar SQL para criar um perfil de classificação, execute o comando CREATE CLASSIFICATION_PROFILE para criar uma instância da classe CLASSIFICATION_PROFILE.

Para obter um exemplo de uso do comando CREATE CLASSIFICATION_PROFILE para criar um perfil de classificação, consulte Exemplos.

Sobre o mapeamento de tags

É possível usar o perfil de classificação para mapear as tags de sistema SEMANTIC_CATEGORY para uma ou mais tags de objeto. Com esse mapeamento de tags, uma coluna com dados confidenciais pode ser automaticamente atribuída a uma tag definida pelo usuário com base em sua classificação. O mapeamento de tags pode ser adicionado durante a criação do perfil de classificação ou posteriormente, chamando o método <classification_profile_name>!SET_TAG_MAP.

Independentemente de você estar definindo o mapeamento de tags ao criar o perfil de classificação ou depois, o conteúdo do mapeamento é especificado como um objeto JSON. Esse objeto JSON contém a chave 'column_tag_map', que é uma matriz de objetos que especificam uma tag definida pelo usuário, o valor da cadeia de caracteres dessa tag e as categorias semânticas às quais a tag está sendo mapeada.

A seguir, um exemplo de um mapeamento de tags:

'tag_map': {
  'column_tag_map': [
    {
      'tag_name':'tag_db.sch.pii',
      'tag_value':'Highly Confidential',
      'semantic_categories':[
        'NAME',
        'NATIONAL_IDENTIFIER'
      ]
    },
    {
      'tag_name': 'tag_db.sch.pii',
      'tag_value':'Confidential',
      'semantic_categories': [
        'EMAIL'
      ]
    }
  ]
}
Copy

Com base nesse mapeamento, se você tiver uma coluna de endereços de e-mail e o processo de classificação determinar que a coluna contém esses endereços, a tag tag_db.sch.pii = 'Confidential' será definida na coluna que contém os endereços de e-mail.

Se o seu mapeamento de tags incluir vários objetos JSON que mapeiam tags, valores de tags e valores de categorias, a ordem dos objetos JSON determinará qual tag e qual valor serão definidos na coluna se houver um conflito. Especifique os objetos JSON na ordem de atribuição desejada, da esquerda para a direita, ou de cima para baixo, se estiver formatando JSON.

Dica

Cada objeto no campo column_tag_map tem apenas uma chave obrigatória: tag_name. Se você omitir as chaves tag_value e semantic_categories, a tag definida pelo usuário será aplicada a todas as colunas às quais a tag do sistema SEMANTIC_CATEGORY for aplicada, e o valor da tag definida pelo usuário corresponderá ao valor da tag SEMANTIC_CATEGORY de uma determinada coluna.

Se houver um conflito entre uma tag atribuída manualmente e uma tag aplicada pela classificação automática, ocorrerá um erro. Para obter informações sobre o rastreamento desses erros, consulte Solução de problemas de classificação de dados confidenciais.

Definir um perfil de classificação em um banco de dados

Implemente a classificação de dados confidenciais definindo um perfil de classificação em um banco de dados. Após você definir o perfil de classificação no banco de dados, todas as tabelas e exibições dentro desse banco de dados são monitoradas automaticamente pela classificação de dados confidenciais.

Você também pode definir uma classificação em um esquema. Se você definir um perfil de classificação em um esquema existente em um banco de dados que também esteja associado a um perfil de classificação, o perfil definido no esquema substituirá o definido no banco de dados.

Para definir um perfil de classificação, use um comando ALTER DATABASE ou ALTER SCHEMA para configurar o parâmetro CLASSIFICATION_PROFILE. Por exemplo, para definir o perfil de classificação my_profile para que todas as tabelas e exibições no banco de dados my_db sejam monitoradas pela classificação de dados confidenciais, execute o seguinte comando:

ALTER DATABASE my_db
  SET CLASSIFICATION_PROFILE = 'governance_db.classify_sch.my_profile';
Copy

Controle de acesso

Estes são os privilégios e as funções que permitem que você trabalhe com perfis de classificação e habilite a classificação de dados confidenciais.

Tarefa

Privilégios/funções necessários

Notas

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

Função de banco de dados SNOWFLAKE.CLASSIFICATION_ADMIN

Para obter informações sobre como conceder essa função de banco de dados a outras funções, consulte Como usar as funções de banco de dados SNOWFLAKE.

CREATESNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE no esquema

Você precisa desse privilégio no esquema em que deseja criar a instância do perfil de classificação.

USAGE no banco de dados e no esquema

Você precisa de privilégios no esquema em que deseja criar a instância do perfil de classificação.

Definir o perfil de classificação em um banco de dados/esquema

Um dos seguintes:

  • EXECUTEAUTOCLASSIFICATION na conta

  • EXECUTE AUTO CLASSIFICATION no banco de dados/esquema

Por padrão, o proprietário do banco de dados/esquema tem o privilégio EXECUTE AUTO CLASSIFICATION sobre ele.

Qualquer privilégio no banco de dados do esquema

Ao definir um perfil de classificação em um esquema, você precisa de pelo menos um privilégio no banco de dados que contém esse esquema.

Qualquer privilégio no banco de dados/esquema

Você precisa de pelo menos um privilégio no banco de dados/esquema que contém a tabela que deseja classificar automaticamente. O privilégio EXECUTE AUTO CLASSIFICATION atende a esse requisito.

Um dos seguintes:

  • OWNERSHIP na instância do perfil de classificação.

  • Função de instância <classification_profile>!PRIVACY_USER no perfil de classificação.

Para obter informações sobre como conceder a função de instância PRIVACY_USER a outras funções, consulte Funções de instância.

APPLY TAG na conta

Chame os métodos em uma instância de perfil de classificação

Função de instância <classification_profile>!PRIVACY_USER

Para obter informações sobre como conceder essa função de instância a outras funções, consulte Funções de instância.

Listagem de perfis de classificação

Função de instância <classification_profile>!PRIVACY_USER

Descarte de perfis de classificação

OWNERSHIP na instância do perfil de classificação

Para obter um exemplo de concessão desses privilégios e funções de banco de dados à função de um engenheiro de dados, consulte Exemplo básico: classificação automática de tabelas em um banco de dados.

Exemplos

Exemplo básico: classificação automática de tabelas em um banco de dados

Conclua estas etapas para classificar automaticamente uma tabela no banco de dados:

  1. Como administrador, conceda ao engenheiro de dados as funções e privilégios necessários para classificar automaticamente as tabelas em um banco de dados.

    USE ROLE ACCOUNTADMIN;
    
    GRANT USAGE ON DATABASE mydb TO ROLE data_engineer;
    GRANT EXECUTE AUTO CLASSIFICATION ON DATABASE mydb TO ROLE data_engineer;
    
    GRANT DATABASE ROLE SNOWFLAKE.CLASSIFICATION_ADMIN TO ROLE data_engineer;
    GRANT CREATE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE ON SCHEMA mydb.sch TO ROLE data_engineer;
    
    GRANT APPLY TAG ON ACCOUNT TO ROLE data_engineer;
    
    Copy
  2. Alterne para a função de engenheiro de dados:

    USE ROLE data_engineer;
    
    Copy
  3. Crie o perfil de classificação como uma instância da classe CLASSIFICATION_PROFILE:

    CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE
      my_classification_profile(
        {
          'minimum_object_age_for_classification_days': 0,
          'maximum_classification_validity_days': 30,
          'auto_tag': true,
          'classify_views': true
        });
    
    Copy
  4. Chame o método DESCRIBE na instância para confirmar suas propriedades:

    SELECT my_classification_profile!DESCRIBE();
    
    Copy
  5. Defina a instância do perfil de classificação no esquema, que inicia o processo em segundo plano de monitoramento das tabelas no esquema e as classifica automaticamente quanto a dados confidenciais.

    ALTER DATABASE mydb
     SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
    
    Copy

    Nota

    Há um atraso de uma hora entre a configuração do perfil de classificação no esquema e o início da classificação do esquema pelo Snowflake.

  6. Após esperar uma hora, chame o procedimento armazenado SYSTEM$GET_CLASSIFICATION_RESULT para obter os resultados da classificação automática.

    CALL SYSTEM$GET_CLASSIFICATION_RESULT('mydb.sch.t1');
    
    Copy

Exemplo: uso de um mapeamento de tags e classificadores personalizados

  1. Como administrador, conceda ao engenheiro de dados as funções e privilégios necessários para classificar automaticamente as tabelas em um banco de dados e definir tags nas colunas.

  2. Crie o perfil de classificação.

    CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE
      my_classification_profile(
        {
          'minimum_object_age_for_classification_days': 0,
          'maximum_classification_validity_days': 30,
          'auto_tag': true,
          'classify_views': true
        });
    
    Copy
  3. Chame o método SET_TAG_MAP na instância para adicionar um mapeamento de tags ao perfil de classificação. Isso permite que tags personalizadas sejam aplicadas automaticamente em colunas com dados confidenciais.

    CALL my_classification_profile!SET_TAG_MAP(
      {'column_tag_map':[
        {
          'tag_name':'my_db.sch1.pii',
          'tag_value':'sensitive',
          'semantic_categories':['NAME']
        }]});
    
    Copy

    Como alternativa, você poderia ter adicionado esse mapeamento de tags ao criar o perfil de classificação.

  4. Chame o método SET_CUSTOM_CLASSIFIERS para adicionar classificadores personalizados ao perfil de classificação. Isso permite que os dados confidenciais sejam classificados automaticamente com categorias semânticas e de privacidade definidas pelo usuário.

    CALL my_classification_profile!set_custom_classifiers(
      {
        'medical_codes': medical_codes!list(),
        'finance_codes': finance_codes!list()
      });
    
    Copy

    Como alternativa, você poderia ter adicionado os classificadores personalizados ao criar o perfil de classificação.

  5. Chame o método DESCRIBE na instância para confirmar que o mapeamento de tags e os classificadores personalizados foram adicionados ao perfil de classificação.

    SELECT my_classification_profile!DESCRIBE();
    
    Copy
  6. Defina a instância do perfil de classificação no banco de dados.

    ALTER DATABASE mydb
     SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
    
    Copy
  7. Anexe uma política de mascaramento à tag tag_db.sch.pii para ativar o mascaramento baseado em tag.

    ALTER TAG tag_db.sch.pii SET MASKING POLICY pii_mask;
    
    Copy

Exemplo: testes de um perfil de classificação antes de ativar a classificação automática

  1. Como administrador, conceda ao engenheiro de dados as funções e os privilégios de que ele precisa para classificar automaticamente as tabelas em um esquema e definir tags nas colunas.

  2. Crie o perfil de classificação com um mapeamento de tags e classificadores personalizados:

    CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE my_classification_profile(
      {
        'minimum_object_age_for_classification_days':0,
        'auto_tag':true,
        'tag_map': {
          'column_tag_map':[
            {
              'tag_name':'tag_db.sch.pii',
              'tag_value':'highly sensitive',
              'semantic_categories':['NAME','NATIONAL_IDENTIFIER']
            },
            {
              'tag_name':'tag_db.sch.pii',
              'tag_value':'sensitive',
              'semantic_categories':['EMAIL','MEDICAL_CODE']
            }
          ]
        },
        'classify_views': true
        'custom_classifiers': {
          'medical_codes': medical_codes!list(),
          'finance_codes': finance_codes!list()
        }
      }
    );
    
    Copy
  3. Chame o procedimento armazenado SYSTEM$CLASSIFY para testar os mapeamentos de tags na tabela table1 antes de ativar a classificação automática.

    CALL SYSTEM$CLASSIFY(
     'db.sch.table1',
     'db.sch.my_classification_profile'
    );
    
    Copy

    A chave tags na saída contém os detalhes sobre se a tag foi definida (true se definida, false caso contrário), o nome da tag definida e o valor da tag:

    {
      "classification_profile_config": {
        "classification_profile_name": "db.schema.my_classification_profile"
      },
      "classification_result": {
        "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"
              },
              {
                "tag_applied": true,
                "tag_name": "tag_db.sch.pii",
                "tag_value": "sensitive"
              }
            ]
          },
          "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": "tag_db.sch.pii",
                "tag_value": "highly sensitive"
              }
            ]
          },
          "valid_value_ratio": 1
        }
      }
    }
    
  4. Após verificar se a classificação automática com base no perfil de classificação terá o resultado desejado, defina a instância do perfil de classificação no banco de dados.

    ALTER DATABASE mydb
     SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
    
    Copy