Sensible Daten automatisch klassifizieren¶
Die automatische Klassifizierung sensibler Daten ist ein serverloses Feature, das die automatische Erkennung und Kennzeichnung sensibler Daten ermöglicht. Das Feature überwacht kontinuierlich Tabellen innerhalb eines bestimmten Schemas und klassifiziert deren Spalten mit nativen und benutzerdefinierten Klassifizierungskategorien.
Mit der automatischen Klassifizierung sensibler Daten können Dateningenieure und -verwalter Folgendes tun:
Zeigen Sie, wie die automatische Klassifizierung von Tabellen den internen Anforderungen an Governance und Compliance entspricht.
Stellen Sie sicher, dass sensible Daten ordnungsgemäß gekennzeichnet sind.
Stellen Sie sicher, dass die richtigen Zugriffssteuerungen vorhanden sind, um die sensiblen Daten zu schützen.
Erste Schritte¶
Der grundlegende Arbeitsablauf zur automatischen Klassifizierung sensibler Daten besteht aus den folgenden Schritten:
Erstellen Sie ein Klassifizierungsprofil, das steuert, wie oft sensible Daten in einem Schema automatisch klassifiziert werden, einschließlich der Frage, ob System-Tags nach der Klassifizierung automatisch angewendet werden sollen.
Optional können Sie das Klassifizierungsprofil verwenden, um benutzerdefinierte Tags den System-Tags zuzuordnen, sodass eine Spalte mit sensiblen Daten auf der Grundlage ihrer Klassifizierung mit einem benutzerdefinierten Tag verknüpft werden kann. Sie können die Tag-Zuordnung bei der Erstellung des Klassifizierungsprofils oder nach der Erstellung des Profils hinzufügen.
Fügen Sie optional einen benutzerdefinierten Klassifikator zum Klassifizierungsprofil hinzu, damit sensible Daten automatisch mit benutzerdefinierten semantischen und Datenschutzkategorien klassifiziert werden können. Sie können benutzerdefinierte Klassifikatoren hinzufügen, während Sie das Klassifizierungsprofil erstellen oder nachdem Sie es erstellt haben.
Legen Sie das Klassifizierungsprofil für ein Schema fest, damit die Tabellen in diesem Schema automatisch klassifiziert werden.
Beispiele für einen durchgängigen Arbeitsablauf finden Sie unter Beispiele.
Über Klassifizierungsprofile¶
Ein Data Engineer erstellt ein Klassifizierungsprofil, indem er eine Instanz der CLASSIFICATION_PROFILE Klasse erstellt, um die Kriterien zu definieren, die zur automatischen Klassifizierung von Tabellen in einem Schema verwendet werden. Diese Kriterien umfassen:
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 automatischen Klassifizierung auf Spalten gesetzt werden sollen.
Eine Zuordnung zwischen Systemklassifizierungs-Tags und benutzerdefinierten Objekt-Tags, sodass die benutzerdefinierten Tags automatisch angewendet werden können.
Wenn der Data Engineer das Klassifizierungsprofil einem Schema zuweist, werden sensible Daten in den Tabellen des Schemas automatisch nach dem durch das Profil definierten Zeitplan klassifiziert. Ein Data Engineer kann dasselbe Klassifizierungsprofil mehreren Schemas zuweisen oder mehrere Klassifizierungsprofile erstellen, wenn unterschiedliche Klassifizierungskriterien für verschiedene Schemas festgelegt werden müssen.
Der Prozess der automatischen Klassifizierung von Daten erfordert den Zugriff auf die Rohdaten in der Tabelle. Die Rohdaten enthalten Tabellen, denen eine Maskierungsrichtlinie für eine Spalte zugewiesen wurde. Snowflake behält jedoch die Absicht bei, den Zugriff auf geschützte Daten zu regeln, indem eine interne Rolle zur automatischen Klassifizierung von Daten verwendet wird. Die interne Rolle kann auf Daten zugreifen, die durch eine Maskierungsrichtlinie geschützt sind, aber diese Rolle ist für Benutzer nicht zugänglich.
Ein Beispiel für die Verwendung des Befehls CREATE CLASSIFICATION_PROFILE zur Erstellung eines Klassifizierungsprofils finden Sie unter Beispiele.
Über die Zuordnung von Tags¶
Sie können das Klassifizierungsprofil verwenden, um SEMANTIC_CATEGORY System-Tags einem oder mehreren Objekt-Tags zuzuordnen. Mit dieser Tag-Zuordnung kann einer Spalte mit sensiblen Daten automatisch ein benutzerdefiniertes Tag auf der Grundlage ihrer Klassifizierung zugewiesen werden. Die Tag-Zuordnung kann bei der Erstellung des Klassifizierungsprofils oder später durch Aufruf der Methode <classification_profile_name>!SET_TAG_MAP hinzugefügt werden.
Da benutzerdefinierten Objekt-Tags eine Maskierungsrichtlinie zugeordnet werden kann, können Sie eine Tag-Zuordnung verwenden, um die automatische Tag-basierte Maskierung zu aktivieren, die den Spaltenschutz in Übereinstimmung mit dem SEMANTIC_CATEGORY System-Tag erleichtert.
Unabhängig davon, ob Sie die Tag-Zuordnung während der Erstellung des Klassifizierungsprofils oder danach definieren, wird der Inhalt der Zuordnung als JSON-Objekt angegeben. Dieses JSON-Objekt enthält den 'column_tag_map'
Schlüssel, bei dem es sich um ein Array von Objekten handelt, die ein benutzerdefiniertes Tag, den Zeichenfolgenwert dieses Tags und die semantischen Kategorien, denen das Tag zugeordnet ist, angeben. Nachdem die Tag-Map mit einem Klassifizierungsprofil verknüpft ist und Sie Tabellen in einem Schema automatisch klassifizieren, wird das Tag den Spalten zugewiesen, die den semantischen Kategorien entsprechen.
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 keinen Wert für das benutzerdefinierte Tag angeben, wendet der Klassifizierungsprozess den empfohlenen Wert des SEMANTIC_CATEGORY-Tags an.
Wenn es einen Konflikt zwischen einem manuell zugewiesenen Tag und einem durch die automatische Klassifizierung zugewiesenen Tag gibt, tritt ein Fehler auf. Informationen zur Verfolgung dieser Fehler finden Sie unter Problembehandlung.
Ergebnisse der automatischen Klassifizierung anzeigen¶
Sie können die Ergebnisse der automatischen Klassifizierung auf folgende Weise anzeigen:
Rufen Sie die gespeicherte SYSTEM$GET_CLASSIFICATION_RESULT-Prozedur auf. Beispiel:
CALL SYSTEM$GET_CLASSIFICATION_RESULT('mydb.sch.t1');
Verwenden Sie eine Rolle, die die Datenbankrolle SNOWFLAKE.GOVERNANCE_VIEWER hat, um die Ansicht DATA_CLASSIFICATION_LATEST abzufragen. Beispiel:
SELECT * FROM snowflake.account_usage.data_classification_latest;
Einschränkungen¶
Klassifizierungsprofile können nicht auf einem Leserkonto eingerichtet werden.
Es kann nur ein Klassifizierungsprofil für ein Schema festgelegt werden.
Ein und dasselbe Klassifizierungsprofil kann nicht für mehr als 10.000 Schemas festgelegt werden.
Einem Schema können maximal 10.000 Tabellen zugeordnet werden.
Zugriffssteuerung¶
Dieser Abschnitt beschreibt die Berechtigungen und Rollen, mit denen Sie mit Klassifizierungsprofilen arbeiten und die automatische Klassifizierung sensibler Daten aktivieren können.
Aufgabe |
Erforderliche Berechtigung/Rolle |
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. |
CREATE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE auf dem Schema |
Sie benötigen diese Berechtigung für das Schema, in dem Sie die Klassifizierungsprofilinstanz erstellen möchten. |
|
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. |
Legen Sie das Klassifizierungsprofil für ein Schema fest |
EXECUTE AUTO CLASSIFICATION für ein Konto |
Diese Berechtigung wird standardmäßig an den ACCOUNTADMIN vergeben, über den Sie diese Berechtigung auch an andere Rollen vergeben können. |
MODIFY auf dem Schema |
Sie benötigen diese Berechtigung für das Schema, das die Tabelle enthält, die Sie automatisch klassifizieren möchten. |
|
APPLY TAG auf dem Konto |
||
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 Einfaches Beispiel: Automatisches Klassifizieren von Tabellen in einem Schema.
Kosten für die automatische Klassifizierung sensibler Daten¶
Die automatische Klassifizierung sensibler Daten verbraucht Credits, da sie serverlose Computeressourcen verwendet, um Tabellen im Schema zu klassifizieren. Weitere Informationen zu den Preisen für diesen Verbrauch finden Sie in Tabelle 5 in der Snowflake Service Consumption Table.
Sie können Ansichten in den Schemas ACCOUNT_USAGE und ORGANIZATION_USAGE abfragen, um festzustellen, wie viel für die automatische Klassifizierung sensibler Daten ausgegeben wurde. Um den Credit-Verbrauch zu überwachen, fragen Sie die folgenden Ansichten ab:
- METERING_HISTORY-Ansicht (ACCOUNT_USAGE)
Ermöglicht es Ihnen, die stündlichen Kosten der automatischen Klassifizierung abzurufen, indem Sie sich auf
SENSITIVE_DATA_CLASSIFICATION
in der SpalteSERVICE_TYPE
konzentrieren. Beispiel: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';
- METERING_DAILY_HISTORY anzeigen (ACCOUNT_USAGE und ORGANIZATION_USAGE)
Ermöglicht es Ihnen, die täglichen Kosten der automatischen Klassifizierung abzurufen, indem Sie sich auf
SENSITIVE_DATA_CLASSIFICATION
in der SpalteSERVICE_TYPE
konzentrieren. Beispiel: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)
Ermöglicht es Ihnen, die täglichen Kosten der automatischen Klassifizierung abzurufen, indem Sie sich auf
SENSITIVE_DATA_CLASSIFICATION
in der SpalteSERVICE_TYPE
konzentrieren. Verwenden Sie diese Ansicht, um die Kosten in Währung zu ermitteln, nicht in Credits.
Beispiele¶
Einfaches Beispiel: Automatisches Klassifizieren von Tabellen in einem Schema
Beispiel: Verwendung einer Tag-Zuordnung und benutzerdefinierter Klassifikatoren
Beispiel: Testen eines Klassifizierungsprofils vor der Aktivierung der automatischen Klassifizierung
Einfaches Beispiel: Automatisches Klassifizieren von Tabellen in einem Schema¶
Führen Sie diese Schritte aus, um eine Tabelle im Schema automatisch zu klassifizieren:
Geben Sie als Administrator dem Data Engineer die Rollen und Berechtigungen, die er benötigt, um Tabellen in einem Schema automatisch zu klassifizieren.
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;
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': 1, 'maximum_classification_validity_days': 30, 'auto_tag': 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 SCHEMA mydb.sch SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
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');
Wenn Sie die automatische Klassifizierung von Tabellen in einem Schema nicht mehr benötigen, deaktivieren Sie das Klassifizierungsprofil in dem Schema:
ALTER SCHEMA mydb.sch UNSET CLASSIFICATION_PROFILE;
Löschen Sie alle nicht benötigten Klassifizierungsprofile mit dem Befehl DROP CLASSIFICATION_PROFILE.
Beispiel: Verwendung einer Tag-Zuordnung und benutzerdefinierter Klassifikatoren¶
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.
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 });
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 das Schema fest.
ALTER SCHEMA mydb.sch SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
Weisen Sie dem Tag
tag_db.sch.pii
eine 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_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() } } );
Rufen Sie die gespeicherte Prozedur SYSTEM$CLASSIFY auf, um die Tag-Zuordnungen in der Tabelle
table1
zu testen, bevor Sie die automatische Klassifizierung aktivieren.CALL SYSTEM$CLASSIFY( 'db.sch.table1', 'db.sch.my_classification_profile' );
Der Schlüssel
tags
in der Ausgabe enthält die Details darüber, ob das Tag gesetzt wurde (true
wenn gesetzt,false
andernfalls), 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 das gewünschte Ergebnis liefert, legen Sie die Instanz des Klassifizierungsprofils im Schema fest.
ALTER SCHEMA mydb.sch SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
Problembehandlung¶
Automatische Klassifizierungsfehler werden in der Standard-Ereignistabelle des Kontos festgehalten. Sie können die folgende Abfrage verwenden, um auf die Fehlermeldungen zuzugreifen:
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;