Classificação automática de dados confidenciais¶
A classificação automática de dados confidenciais é um recurso sem servidor que permite a detecção e a marcação automáticas de dados confidenciais. O recurso monitora continuamente as tabelas em um esquema específico e classifica suas colunas usando as categorias de classificação nativa e personalizada.
A classificação automática de dados confidenciais permite que os engenheiros e administradores de dados:
Demonstrar como a classificação automática de tabelas atende às necessidades internas de governança e conformidade.
Assegurarem-se de que os dados confidenciais sejam marcados adequadamente.
Assegurarem-se de que os controles de acesso corretos estejam em vigor para proteger os dados confidenciais.
Introdução¶
O fluxo de trabalho básico para classificar automaticamente os dados confidenciais consiste no seguinte:
Crie um perfil de classificação que controle a frequência com que os dados confidenciais em um esquema são classificados automaticamente, inclusive se as tags do sistema devem ser aplicadas automaticamente após a classificação.
Opcionalmente, use o perfil de classificação para mapear as tags definidas pelo usuário para as tags do sistema, de modo que uma coluna com dados confidenciais possa ser associada a uma tag definida pelo usuário com base em sua classificação. É possível adicionar o mapeamento de tags ao criar o perfil de classificação ou após criá-lo.
Opcionalmente, adicione um classificador personalizado ao perfil de classificação para que os dados confidenciais possam ser classificados automaticamente com categorias semânticas e de privacidade definidas pelo usuário. É possível adicionar classificadores personalizados ao criar o perfil de classificação ou após criá-lo.
Defina o perfil de classificação em um esquema para que as tabelas do esquema sejam classificadas automaticamente.
Para obter exemplos completos desse fluxo de trabalho, consulte Exemplos.
Sobre os perfis de classificação¶
Um engenheiro de dados cria um perfil de classificação criando uma instância da classe CLASSIFICATION_PROFILE para definir os critérios usados para classificar automaticamente as tabelas em um esquema. 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 o sistema e as tags personalizadas devem ser definidas nas colunas após a classificação automática.
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.
Quando o engenheiro de dados atribui o perfil de classificação a um esquema, os dados confidenciais nas tabelas do esquema são automaticamente classificados de acordo com o cronograma definido pelo perfil. Um engenheiro de dados pode atribuir o mesmo perfil de classificação a vários esquemas ou criar vários perfis de classificação se houver necessidade de definir critérios de classificação diferentes para diferentes esquemas.
O processo de classificação automática de dados requer acesso aos dados brutos da tabela. Os dados brutos incluem tabelas com uma política de mascaramento atribuída a uma coluna. No entanto, a Snowflake preserva a intenção de regular o acesso a dados protegidos usando uma função interna para classificar automaticamente os dados. A função interna pode acessar dados protegidos por uma política de mascaramento, mas essa função não é acessível aos usuários.
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. Esse mapeamento de tags permite que uma coluna com dados confidenciais seja 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.
Como as tags de objeto definidas pelo usuário podem ter uma política de mascaramento associada a elas, é possível usar um mapeamento de tags para ativar o mascaramento baseado em tag automático, o que facilita a proteção da coluna alinhada com a tag do sistema SEMANTIC_CATEGORY.
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. Depois que o mapeamento de tags for associado a um perfil de classificação e você classificar automaticamente as tabelas em um esquema, a tag será atribuída às colunas que correspondem às categorias semânticas.
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'
]
}
]
}
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ê não especificar um valor para a tag definida pelo usuário, o processo de classificação aplicará o valor recomendado da tag SEMANTIC_CATEGORY.
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.
Visualização dos resultados da classificação automática¶
É possível visualizar os resultados da classificação automática das seguintes maneiras:
Chame o procedimento armazenado SYSTEM$GET_CLASSIFICATION_RESULT. Por exemplo:
CALL SYSTEM$GET_CLASSIFICATION_RESULT('mydb.sch.t1');
Use uma função que tenha recebido a função de banco de dados SNOWFLAKE.GOVERNANCE_VIEWER para consultar a exibição DATA_CLASSIFICATION_LATEST. Por exemplo:
SELECT * FROM snowflake.account_usage.data_classification_latest;
Limitações¶
Os perfis de classificação não podem ser definidos em uma conta de leitor.
Somente um perfil de classificação pode ser definido em um esquema.
O mesmo perfil de classificação não pode ser definido em mais de 10.000 esquemas.
Um máximo de 10.000 tabelas pode ser classificado em um esquema.
Controle de acesso¶
Esta seção descreve os privilégios e as funções que permitem que você trabalhe com perfis de classificação e habilite a classificação automática de dados confidenciais.
Tarefa |
Privilégio/função 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. |
CREATE SNOWFLAKE.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. |
|
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. |
Definição do perfil de classificação em um esquema |
EXECUTE AUTO CLASSIFICATION na conta |
Esse privilégio é concedido ao ACCOUNTADMIN por padrão, que pode ser usado para conceder esse privilégio a outras funções. |
MODIFY no esquema |
Você precisa desse privilégio no esquema que contém a tabela que deseja classificar automaticamente. |
|
APPLY TAG na conta |
||
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 esquema.
Custo da classificação automática de dados confidenciais¶
A classificação automática de dados confidenciais consome créditos, pois usa os recursos de computação sem servidor para classificar as tabelas no esquema. Para obter mais informações sobre os preços desse consumo, consulte a Tabela 5 em Snowflake Service Consumption Table.
É possível consultar exibições nos esquemas ACCOUNT_USAGE e ORGANIZATION_USAGE para determinar quanto foi gasto na classificação automática de dados confidenciais. Para monitorar o consumo de crédito, consulte as seguintes exibições:
- Exibição METERING_HISTORY (ACCOUNT_USAGE)
Permite que você recupere o custo por hora da classificação automática, concentrando-se em
SENSITIVE_DATA_CLASSIFICATION
na colunaSERVICE_TYPE
. Por exemplo:SELECT service_type, start_time, end_time, entity_id, name, credits_used_compute, credits_used_cloud_services, credits_used, budget_id FROM snowflake.account_usage.metering_history WHERE service_type = 'SENSITIVE_DATA_CLASSIFICATION';
- Exibição METERING_DAILY_HISTORY (ACCOUNT_USAGE e ORGANIZATION_USAGE)
Permite que você recupere o custo diário da classificação automática, concentrando-se em
SENSITIVE_DATA_CLASSIFICATION
na colunaSERVICE_TYPE
. Por exemplo:SELECT service_type, usage_date, credits_used_compute, credits_used_cloud_services, credits_used FROM snowflake.account_usage.metering_daily_history WHERE service_type = 'SENSITIVE_DATA_CLASSIFICATION';
- USAGE_IN_CURRENCY_DAILY (ORGANIZATION_USAGE)
Permite que você recupere o custo diário da classificação automática, concentrando-se em
SENSITIVE_DATA_CLASSIFICATION
na colunaSERVICE_TYPE
. Use essa exibição para determinar o custo em moeda, não em créditos.
Exemplos¶
Exemplo básico: classificação automática de tabelas em um esquema
Exemplo: uso de um mapeamento de tags e classificadores personalizados
Exemplo: testes de um perfil de classificação antes de ativar a classificação automática
Exemplo básico: classificação automática de tabelas em um esquema¶
Conclua estas etapas para classificar automaticamente uma tabela no esquema:
Como administrador, dê ao engenheiro de dados as funções e os privilégios necessários para classificar automaticamente as tabelas em um esquema.
USE ROLE ACCOUNTADMIN; GRANT USAGE ON DATABASE mydb TO ROLE data_engineer; GRANT MODIFY ON SCHEMA mydb.sch TO ROLE data_engineer; GRANT SELECT ON TABLE mydb.sch.t1 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 EXECUTE AUTO CLASSIFICATION ON ACCOUNT TO ROLE data_engineer; GRANT APPLY TAG ON ACCOUNT TO ROLE data_engineer;
Alterne para a função de engenheiro de dados:
USE ROLE data_engineer;
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': 1, 'maximum_classification_validity_days': 30, 'auto_tag': true });
Chame o método DESCRIBE na instância para confirmar suas propriedades:
SELECT my_classification_profile!DESCRIBE();
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 SCHEMA mydb.sch SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
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');
Se você não precisar mais classificar automaticamente as tabelas em um esquema, desmarque o perfil de classificação do esquema:
ALTER SCHEMA mydb.sch UNSET CLASSIFICATION_PROFILE;
Elimine os perfis de classificação que não são necessários usando o comando DROP CLASSIFICATION_PROFILE.
Exemplo: uso de um mapeamento de tags e classificadores personalizados¶
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.
Crie o perfil de classificação.
CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE my_classification_profile( { 'minimum_object_age_for_classification_days': 1, 'maximum_classification_validity_days': 30, 'auto_tag': true });
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'] }]});
Como alternativa, você poderia ter adicionado esse mapeamento de tags ao criar o perfil de classificação.
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() });
Como alternativa, você poderia ter adicionado os classificadores personalizados ao criar o perfil de classificação.
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();
Defina a instância do perfil de classificação no esquema.
ALTER SCHEMA mydb.sch SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
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;
Exemplo: testes de um perfil de classificação antes de ativar a classificação automática¶
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.
Crie o perfil de classificação com um mapeamento de tags e classificadores personalizados:
CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE my_classification_profile2( { 'minimum_object_age_for_classification_days':1, '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'] } ] }, 'custom_classifiers': { 'medical_codes': medical_codes!list(), 'finance_codes': finance_codes!list() } } );
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' );
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 } } }
Após verificar que 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 esquema.
ALTER SCHEMA mydb.sch SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
Solução de problemas¶
Os erros de classificação automática são mantidos na tabela de evento padrão da conta. É possível usar a seguinte consulta para acessar as mensagens de erro:
SELECT
record_type,
record:severity_text::string log_level,
parse_json(value) error_message
FROM log_db.log_schema.log_table
WHERE record_type='LOG' and scope:name ='snow.automatic_sensitive_data_classification'
ORDER BY log_level;