Use SQL to set up sensitive data classification¶
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.
The basic workflow for using SQL to classify sensitive data consists of the following steps:
Create a classification profile that controls what happens during sensitive data classification.
Set the classification profile on a database or schema to automatically classify tables in the entity.
Para obter exemplos completos desse fluxo de trabalho, consulte Exemplos.
Sobre os perfis de classificação¶
A classification profile defines the criteria that are used to automatically classify tables in a database. This criteria includes:
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.
When a data engineer assigns the classification profile to a database, sensitive data in the tables that belong to the database is automatically classified on the schedule defined by the profile. A data engineer can assign the same classification profile to multiple databases, or create multiple classification profiles to set different classification criteria for different databases.
To use SQL to create a classification profile, run the CREATE CLASSIFICATION_PROFILE command to create an instance of the CLASSIFICATION_PROFILE class.
For an example of using the CREATE CLASSIFICATION_PROFILE command to create a classification profile, see Exemplos.
Sobre o mapeamento de tags¶
You can use the classification profile to map SEMANTIC_CATEGORY system tags to one or more object tags. With this tag mapping, a column with sensitive data can be automatically assigned a user-defined tag based on its classification. The tag map can be added while creating the classification profile or later by calling the <classification_profile_name>!SET_TAG_MAP method.
Regardless of whether you are defining the tag map while creating the classification profile or after, the contents of the map are specified
as a JSON object. This JSON object contains the 'column_tag_map' key, which is an array of objects that specify a user-defined tag,
the string value of that tag, and the semantic categories to which the tag is being mapped.
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.
If there is a conflict with a manually assigned tag and a tag applied by automatic classification, an error occurs. For information about tracking these errors, see Solução de problemas de classificação de dados confidenciais.
Definir um perfil de classificação em um banco de dados¶
Implement sensitive data classification by setting a classification profile on a database. After you set the classification profile on the database, all tables and views within that database are automatically monitored by sensitive data classification.
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.
To set a classification profile, use an ALTER DATABASE or ALTER SCHEMA command to set
the CLASSIFICATION_PROFILE parameter. For example, to set a classification profile my_profile so all tables and views in the my_db
database are monitored by sensitive data classification, run the following command:
ALTER DATABASE my_db
SET CLASSIFICATION_PROFILE = 'governance_db.classify_sch.my_profile';
Controle de acesso¶
Here are the privileges and roles that let you work with classification profiles and enable sensitive data classification.
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';