Use SQL to set up sensitive data classification¶
In den folgenden Abschnitten wird beschrieben, wie Sie SQL verwenden, um die automatische Klassifizierung sensibler Daten innerhalb einer Datenbank einzurichten. Wenn Sie eine Weboberfläche verwenden möchten, um die Klassifizierung sensibler Daten einzurichten, lesen Sie Verwenden des Trust Centers, um die Klassifizierung sensibler Daten einzurichten.
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.
Beispiele für einen durchgängigen Arbeitsablauf finden Sie unter Beispiele.
Über Klassifizierungsprofile¶
A classification profile defines the criteria that are used to automatically classify tables in a database. This criteria includes:
Wie lange eine Tabelle existieren soll, bevor sie automatisch klassifiziert wird.
Wie lange es dauert, bis zuvor klassifizierte Tabellen neu klassifiziert werden sollten.
Ob System- und benutzerdefinierte Tags nach der Klassifizierung automatisch auf Spalten gesetzt werden. Sie können entscheiden, ob Sie möchten, dass Snowflake die vorgeschlagenen Tags automatisch anwendet, oder ob Sie es vorziehen, die vorgeschlagenen Tag-Zuweisungen zu überprüfen und sie dann selbst anzuwenden.
Eine Zuordnung zwischen Systemklassifizierungs-Tags und benutzerdefinierten Objekt-Tags, sodass die benutzerdefinierten Tags automatisch angewendet werden können.
Ob kundenspezifische Klassifikatoren zur Klassifizierung von Daten verwendet werden.
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 Beispiele.
Über die Zuordnung von 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.
Im Folgenden finden Sie ein Beispiel für eine Tag-Zuordnung:
'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'
]
}
]
}
Wenn Sie eine Spalte mit E-Mail-Adressen haben und der Klassifizierungsprozess feststellt, dass die Spalte diese Adressen enthält, wird auf der Grundlage dieser Zuordnung das Tag tag_db.sch.pii = 'Confidential' für die Spalte mit den E-Mail-Adressen gesetzt.
Wenn Ihre Tag-Zuordnung mehrere JSON-Objekte enthält, die Tags, Tag-Werte und Kategorie-Werte zuordnen, bestimmt die Reihenfolge der JSON-Objekte, welches Tag und welcher Wert im Falle eines Konflikts in der Spalte gesetzt wird. Geben Sie die JSON-Objekte in der gewünschten Zuordnungsreihenfolge von links nach rechts an, oder von oben nach unten, wenn Sie JSON formatieren.
Tipp
Jedes Objekt im Feld column_tag_map hat nur einen erforderlichen Schlüssel: tag_name. Wenn Sie die Schlüssel tag_value und semantic_categories weglassen, wird das benutzerdefinierte Tag auf jede Spalte angewendet, auf die das System-Tag SEMANTIC_CATEGORY angewendet wird, und der Wert des benutzerdefinierten Tags entspricht dem Wert des Tags SEMANTIC_CATEGORY für eine bestimmte Spalte.
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 Fehlerbehebung bei der Klassifizierung sensibler Daten.
Festlegen eines Klassifizierungsprofils für eine Datenbank¶
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.
Sie können auch eine Klassifizierung für ein Schema festlegen. Wenn Sie ein Klassifizierungsprofil für ein Schema festlegen, das in einer Datenbank existiert, die ebenfalls mit einem Klassifizierungsprofil verbunden ist, hat das für das Schema festgelegte Profil Vorrang vor dem für die Datenbank festgelegten Profil.
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';
Zugriffssteuerung¶
Here are the privileges and roles that let you work with classification profiles and enable sensitive data classification.
Aufgabe |
Erforderliche Berechtigungen/Rollen |
Anmerkungen |
|---|---|---|
Erstellen Sie ein Klassifizierungsprofil |
SNOWFLAKE.CLASSIFICATION_ADMIN Datenbankrolle |
Informationen darüber, wie Sie diese Datenbankrolle anderen Rollen zuweisen können, finden Sie unter Verwenden von SNOWFLAKE-Datenbankrollen. |
CREATESNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE auf dem Schema |
Sie benötigen diese Berechtigung für das Schema, in dem Sie die Klassifizierungsprofilinstanz erstellen möchten. |
|
USAGE für Datenbank und Schema |
Sie benötigen Berechtigungen für das Schema, in dem Sie die Klassifizierungsprofilinstanz erstellen möchten. |
|
Festlegen des Klassifizierungsprofils für eine Datenbank/ein Schema |
Eine der folgenden Berechtigungen:
|
Standardmäßig verfügt der Eigentümer der Datenbank/des Schemas über die Berechtigung des Typ EXECUTE AUTO CLASSIFICATION dafür. |
Beliebige Berechtigung für die Datenbank des Schemas |
Wenn Sie ein Klassifizierungsprofil für ein Schema festlegen, benötigen Sie mindestens eine Berechtigung für die Datenbank, die dieses Schema enthält. |
|
Beliebige Berechtigung für Datenbank/Schema |
Sie benötigen mindestens eine Berechtigung für die Datenbank/das Schema, die/das die Tabelle enthält, die Sie automatisch klassifizieren möchten. Die Berechtigung des Typs EXECUTE AUTO CLASSIFICATION erfüllt diese Anforderung. |
|
Eine der folgenden Berechtigungen:
|
Informationen darüber, wie Sie anderen Rollen die Instanzrolle PRIVACY_USER zuweisen können, finden Sie unter Instanzrollen. |
|
APPLY TAG auf dem Konto |
||
Aufruf von Methoden auf einer Klassifizierungsprofilinstanz |
<classification_profile>!PRIVACY_USER-Instanzrolle |
Informationen darüber, wie Sie diese Instanzrolle anderen Rollen zuweisen können, finden Sie unter Instanzrollen. |
Klassifizierungsprofile auflisten |
<classification_profile>!PRIVACY_USER-Instanzrolle |
|
Klassifizierungsprofile löschen |
OWNERSHIP auf Klassifizierungsprofil-Instanz |
Ein Beispiel für die Gewährung dieser Berechtigungen und Datenbankrollen für die Rolle eines Data Engineers finden Sie unter Grundlegendes Beispiel: Automatisches Klassifizieren von Tabellen in einer Datenbank.
Beispiele¶
Grundlegendes Beispiel: Automatisches Klassifizieren von Tabellen in einer Datenbank
Beispiel: Verwendung einer Tag-Zuordnung und benutzerdefinierter Klassifikatoren
Beispiel: Testen eines Klassifizierungsprofils vor der Aktivierung der automatischen Klassifizierung
Grundlegendes Beispiel: Automatisches Klassifizieren von Tabellen in einer Datenbank¶
Führen Sie diese Schritte aus, um eine Tabelle in der Datenbank automatisch zu klassifizieren:
Admins geben den Data Engineers die Rollen und Berechtigungen, die nötig sind, um Tabellen in einer Datenbank automatisch zu klassifizieren.
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;
Wechseln Sie in die Rolle des Data Engineers:
USE ROLE data_engineer;
Erstellen Sie das Klassifizierungsprofil als eine Instanz der Klasse 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 });
Rufen Sie die Methode DESCRIBE für die Instanz auf, um ihre Eigenschaften zu bestätigen:
SELECT my_classification_profile!DESCRIBE();
Legen Sie die Instanz des Klassifizierungsprofils für das Schema fest, die im Hintergrund den Prozess der Überwachung der Tabellen im Schema und deren automatische Klassifizierung auf sensible Daten startet.
ALTER DATABASE mydb SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
Bemerkung
Zwischen dem Einstellen des Klassifizierungsprofils für das Schema und dem Beginn der Klassifizierung des Schemas durch Snowflake vergeht eine Stunde.
Nachdem Sie eine Stunde gewartet haben, rufen Sie die gespeicherte Prozedur SYSTEM$GET_CLASSIFICATION_RESULT auf, um die Ergebnisse der automatischen Klassifizierung zu erhalten.
CALL SYSTEM$GET_CLASSIFICATION_RESULT('mydb.sch.t1');
Beispiel: Verwendung einer Tag-Zuordnung und benutzerdefinierter Klassifikatoren¶
Admins geben den Data Engineers die Rollen und Berechtigungen, die nötig sind, um Tabellen in einer Datenbank automatisch zu klassifizieren und Tags für Spalten festzulegen.
Erstellen Sie das Klassifizierungsprofil.
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 });
Rufen Sie die Methode SET_TAG_MAP für die Instanz auf, um eine Tag-Zuordnung zum Klassifizierungsprofil hinzuzufügen. Dadurch können benutzerdefinierte Tags automatisch auf Spalten angewendet werden, die sensible Daten enthalten.
CALL my_classification_profile!SET_TAG_MAP( {'column_tag_map':[ { 'tag_name':'my_db.sch1.pii', 'tag_value':'sensitive', 'semantic_categories':['NAME'] }]});
Alternativ hätten Sie diese Zuordnung auch bei der Erstellung des Klassifizierungsprofils hinzufügen können.
Rufen Sie die Methode SET_CUSTOM_CLASSIFIERS auf, um benutzerdefinierte Klassifizierer zum Klassifizierungsprofil hinzuzufügen. So können sensible Daten automatisch mit vom Benutzer definierten semantischen und datenschutzrechtlichen Kategorien klassifiziert werden.
CALL my_classification_profile!set_custom_classifiers( { 'medical_codes': medical_codes!list(), 'finance_codes': finance_codes!list() });
Alternativ hätten Sie die benutzerdefinierten Klassifikatoren auch bei der Erstellung des Klassifizierungsprofils hinzufügen können.
Rufen Sie die Methode DESCRIBE für die Instanz auf, um zu bestätigen, dass die Tag-Map und die benutzerdefinierten Klassifikatoren dem Klassifizierungsprofil hinzugefügt wurden.
SELECT my_classification_profile!DESCRIBE();
Legen Sie die Instanz des Klassifizierungsprofils für die Datenbank fest.
ALTER DATABASE mydb SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
Weisen Sie dem Tag
tag_db.sch.piieine Maskierungsrichtlinie zu, um die tagbasierte Maskierung zu aktivieren.ALTER TAG tag_db.sch.pii SET MASKING POLICY pii_mask;
Beispiel: Testen eines Klassifizierungsprofils vor der Aktivierung der automatischen Klassifizierung¶
Geben Sie als Administrator dem Data Engineer die Rollen und Berechtigungen, die er benötigt, um Tabellen in einem Schema automatisch zu klassifizieren und Tags für Spalten zu setzen.
Erstellen Sie das Klassifizierungsprofil mit einer Tag-Zuordnung und benutzerdefinierten Klassifikatoren:
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() } } );
Rufen Sie die gespeicherte Prozedur SYSTEM$CLASSIFY auf, um die Tag-Zuordnungen in der Tabelle
table1zu testen, bevor Sie die automatische Klassifizierung aktivieren.CALL SYSTEM$CLASSIFY( 'db.sch.table1', 'db.sch.my_classification_profile' );
Der Schlüssel
tagsin der Ausgabe enthält die Details darüber, ob das Tag gesetzt wurde (truewenn gesetzt,falseandernfalls), den Namen des Tags, der gesetzt wurde, und den Wert des Tags:{ "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 } } }
Nachdem Sie sich vergewissert haben, dass die automatische Klassifizierung auf der Grundlage des Klassifizierungsprofils zum gewünschten Ergebnis führt, legen Sie die Instanz des Klassifizierungsprofils in der Datenbank fest.
ALTER DATABASE mydb SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';