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:
Crie um perfil de classificação que controle o que acontece durante a classificação de dados confidenciais.
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'
]
}
]
}
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';
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:
|
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:
|
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
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 banco de dados¶
Conclua estas etapas para classificar automaticamente uma tabela no banco de dados:
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;
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': 0, 'maximum_classification_validity_days': 30, 'auto_tag': true, 'classify_views': 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 DATABASE mydb SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
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.
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');
Exemplo: uso de um mapeamento de tags e classificadores personalizados¶
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.
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 });
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 banco de dados.
ALTER DATABASE mydb SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
Anexe uma política de mascaramento à tag
tag_db.sch.piipara 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_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() } } );
Chame o procedimento armazenado SYSTEM$CLASSIFY para testar os mapeamentos de tags na tabela
table1antes de ativar a classificação automática.CALL SYSTEM$CLASSIFY( 'db.sch.table1', 'db.sch.my_classification_profile' );
A chave
tagsna saída contém os detalhes sobre se a tag foi definida (truese definida,falsecaso 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 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';