Kundenspezifische Datenklassifizierung

Unter diesem Thema werden Konzepte zur kundenspezifischen Datenklassifizierung in Snowflake vorgestellt.

Übersicht

Snowflake stellt die Klasse CUSTOM_CLASSIFIER im SNOWFLAKE.DATA_PRIVACY-Schema bereit, damit Data Engineers ihre Möglichkeiten zur Datenklassifizierung auf der Grundlage ihres eigenen Wissens über ihre Daten erweitern können. Nachdem Sie eine Instanz der Klasse erstellt haben, können Sie auf der Instanz Methoden aufrufen. Auf diese Weise können Sie eigene semantische Kategorien definieren, Datenschutzkategorien angeben sowie reguläre Ausdrücke zum Abgleichen von Spaltenwertmustern und optional zum Abgleichen des Spaltennamens angeben.

Durch das Erstellen und Verwenden kundenspezifischer Klassifizierungsinstanzen bietet folgende Vorteile:

  • Beschleunigen der Bemühungen um eigene Datenklassifizierungen.

  • Definieren branchen- und domänenspezifischer Tags für Spalten mit sensiblen Daten.

  • Nutzen von Snowflake, um mehr Kontrolle über Ihre Bemühungen zu haben, PII-Daten zu verfolgen.

Allgemeine Informationen zum Algorithmus für die kundenspezifische Klassifizierung

Snowflake verwendet einen Algorithmus für die kundenspezifische Klassifizierung, der im Vergleich zum Algorithmus für die Datenklassifizierung einzigartig ist. Mit den verschiedenen Klassifizierungsalgorithmen sollen stabile Ergebnisse sichergestellt werden, je nachdem, wie Sie Ihre Daten klassifizieren möchten.

Der Algorithmus für die kundenspezifische Klassifizierung verwendet eine Bewertungsregel, um zu bestimmen, welches System-Tag einer semantischen Kategorie empfohlen werden soll und welche Tags von semantischen Kategorien, falls vorhanden, als Alternativen vorgeschlagen werden sollen. Die Bewertungslogik wertet die regulären Ausdrücke aus, die Sie Ihrer Instanz hinzufügen und die Sie durch Aufrufen der Methode custom_classifier !ADD_REGEX für Ihre Instanz angeben.

Die Bewertungsregel verwendet einen Standard-Schwellenwert, der für ein hohes Vertrauen in das empfohlene Tag steht. Der Algorithmus vergleicht die Bewertung für eine Spalte mit dem Schwellenwert und empfiehlt ein Tag, das einer der folgenden Optionen entspricht:

Die folgende Tabelle gibt einen Überblick über den Bewertungsalgorithmus und das jeweils empfohlene Tag:

Namensabgleicher bereitgestellt

Wert stimmt überein >= Schwellenwert

Name stimmt überein

Empfehlung

True

True

True

Kundenspezifische Kategorie

False

True

Snowflake-Kategorie

True

False

Snowflake-Kategorie

False

False

Snowflake-Kategorie

False

True

Nicht anwendbar

Kundenspezifische Kategorie

False

Nicht anwendbar

Snowflake-Kategorie

Einschränkungen

Derzeit können Sie kundenspezifische Klassifikatoren nur mit SQL ausführen. Sie können kundenspezifische Klassifikatoren nicht über Snowsight ausführen.

Verwenden von kundenspezifischen Klassifikatoren

Für die kundenspezifische Klassifizierung wird die Klasse CUSTOM_CLASSIFIER verwendet. Sie können eine Instanz der Klasse CUSTOM_CLASSIFIER erstellen und Instanzmethoden aufrufen, um mit der Instanz verbundene reguläre Ausdrücke zu verwalten. Die folgenden Methoden und SQL-Befehle werden unterstützt:

Außerdem können Sie die folgenden Rollen für die kundenspezifische Klassifizierung verwenden:

  • SNOWFLAKE.CLASSIFICATION_ADMIN: Datenbankrolle, mit der Sie eine kundenspezifische Klassifizierungsinstanz erstellen können.

  • custom_classifier !PRIVACY_USER: Instanzrolle, mit der Sie die folgenden Aktionen durchführen können:

    • Hinzufügen einer Kategorie zu der Instanz, indem die Methode ADD_REGEX auf der Instanz aufgerufen wird.

    • Löschen einer Kategorie aus einer Instanz, indem die Methode DELETE_CATEGORY auf der Instanz aufgerufen wird.

  • Mit der Kontorolle mit OWNERSHIP-Berechtigung für die Instanz können Sie Folgendes ausführen:

    • Löschen der Instanz mit einem DROP CUSTOM_CLASSIFIER-Befehl.

    • Auflisten der Instanzen mit einem SHOW CUSTOM_CLASSIFIER-Befehl.

Sie können die Instanzrollen an Kontorollen und Datenbankrollen vergeben, damit andere Benutzer mit kundenspezifischen Klassifizierungsinstanzen arbeiten können. Beispiel:

GRANT SNOWFLAKE.DATA_PRIVACY.CUSTOM_CLASSIFIER ROLE <name>!USER
  TO ROLE <role_name>

REVOKE SNOWFLAKE.DATA_PRIVACY.CUSTOM_CLASSIFIER ROLE <name>!USER
  FROM ROLE <role_name>

GRANT SNOWFLAKE.DATA_PRIVACY.CUSTOM_CLASSIFIER ROLE <name>!USER
  TO DATABASE ROLE <database_role_name>

REVOKE SNOWFLAKE.DATA_PRIVACY.CUSTOM_CLASSIFIER ROLE <name>!USER
  FROM DATABASE ROLE <database_role_name>
Copy

Wobei:

name

Gibt den Namen der kundenspezifischen Klassifizierungsinstanz an, die Sie erstellen.

role_name

Gibt den Namen einer Kontorolle an.

database_role_name

Gibt den Namen eine Datenbankrolle an.

Ähnlich wie bei anderen Snowflake-Objekten erhält die Rolle, die die kundenspezifische Klassifizierungsinstanz erstellt, automatisch die OWNERSHIP-Berechtigung für die Instanz.

Der allgemeine Ansatz zum Klassifizieren von Daten mit kundenspezifischen Klassifikatoren ist wie folgt:

  1. Identifizieren Sie eine Tabelle zur Klassifizierung.

  2. Verwenden Sie SQL, um Folgendes zu tun:

    1. Erstellen Sie eine kundenspezifische Klassifizierungsinstanz.

    2. Fügen Sie der Instanz die System-Tag-Kategorien und regulären Ausdrücke hinzu.

    3. Klassifizieren Sie die Tabelle.

Beispiel

Führen Sie die folgenden Schritte aus, um einen kundenspezifischen Klassifikator zum Klassifizieren einer Tabelle zu erstellen:

  1. Angenommen, wir haben eine Tabelle data.tables.patient_diagnosis, in der eine der Spalten Diagnosecodes enthält, z. B. ICD-10-Codes.

    +-------------+----------------------------------------------------------+
    | ICD_10_CODE | DESCRIPTION                                              |
    +-------------+----------------------------------------------------------+
    | G30.9       | Alzheimer's disease, unspecified                         |
    | G80.8       | Other cerebral palsy                                     |
    | S13.4XXA    | Sprain of ligaments of cervical spine, initial encounter |
    +-------------+----------------------------------------------------------+
    
    Copy

    Diese Tabelle kann auch Spalten enthalten, über die Patienten, die in einer medizinischen Einrichtung behandelt wurden, identifiziert werden können, z. B. Vor- und Nachname, eindeutige Krankenversicherungsnummer und Geburtsdatum. Der Dateneigentümer kann die Tabelle klassifizieren, um sicherzustellen, dass die Spalten korrekt getaggt sind, sodass die Tabelle überwacht werden kann.

    In diesem Beispiel verfügt der Dateneigentümer bereits über diese Berechtigungen, die seiner Rolle zugewiesen sind:

    • OWNERSHIP für die zu klassifizierende Tabelle

    • OWNERSHIP für das Schema, das die Tabelle enthält

    • USAGE für die Datenbank, die das Schema und die Tabelle enthält

  2. Erlauben Sie dem Dateneigentümer das Klassifizieren der Tabelle, indem Sie der Dateneigentümerrolle die Datenbankrolle SNOWFLAKE.CLASSIFICATION_ADMIN zuweisen:

    USE ROLE ACCOUNTADMIN;
    GRANT DATABASE ROLE SNOWFLAKE.CLASSIFICATION_ADMIN
      TO ROLE data_owner;
    
    Copy
  3. Erstellen Sie als Dateneigentümer ein Schema zum Speichern Ihrer kundenspezifischen Klassifizierungsinstanzen:

    USE ROLE data_owner;
    CREATE SCHEMA data.classifiers;
    
    Copy
  4. Verwenden Sie den Befehl CREATE CUSTOM_CLASSIFIER, um eine kundenspezifische Klassifizierungsinstanz im Schema data.classifiers zu erstellen:

    USE SCHEMA data.classifiers;
    CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CUSTOM_CLASSIFIER medical_codes();
    
    Copy

    Aktualisieren Sie Ihren Suchpfad, um die Nutzung der Instanz zu vereinfachen.

  5. Verwenden Sie den Befehl SHOW CUSTOM_CLASSIFIER-Befehl, um jede von Ihnen erstellte Instanz aufzulisten. Beispiel:

    SHOW SNOWFLAKE.DATA_PRIVACY.CUSTOM_CLASSIFIER;
    
    Copy

    Rückgabewerte:

    +----------------------------------+---------------+---------------+-------------+-----------------+---------+-------------+
    | created_on                       | name          | database_name | schema_name | current_version | comment | owner       |
    +----------------------------------+---------------+---------------+-------------+-----------------+---------+-------------+
    | 2023-09-08 07:00:00.123000+00:00 | MEDICAL_CODES | DATA          | CLASSIFIERS | 1.0             | None    | DATA_OWNER  |
    +----------------------------------+---------------+---------------+-------------+-----------------+---------+-------------+
    
  6. Rufen Sie die Methode custom_classifier !ADD_REGEX auf der Instanz auf, um die System-Tags und den regulären Ausdruck zum Identifizieren von ICD-10-Codes in einer Spalte anzugeben. Der reguläre Ausdruck in diesem Beispiel entspricht allen möglichen ICD-10-Codes. Der reguläre Ausdruck für den Abgleich von Spaltenname, ICD* und Kommentar ist optional:

    CALL medical_codes!ADD_REGEX(
      'ICD_10_CODES',
      'IDENTIFIER',
      '[A-TV-Z][0-9][0-9AB]\.?[0-9A-TV-Z]{0,4}',
      'ICD*',
      'Add a regex to identify ICD-10 medical codes in a column'
    );
    
    Copy

    Rückgabewerte:

    +---------------+
    |   ADD_REGEX   |
    +---------------+
    | ICD_10_CODES  |
    +---------------+
    

    Tipp

    Testen Sie den regulären Ausdruck, bevor Sie der kundenspezifischen Klassifizierungsinstanz einen regulären Ausdruck hinzufügen. Beispiel:

    SELECT icd_10_code
    FROM medical_codes
    WHERE icd_10_code REGEXP('[A-TV-Z][0-9][0-9AB]\.?[0-9A-TV-Z]{0,4}');
    
    Copy
    +-------------+
    | ICD-10-CODE |
    +-------------+
    | G30.9       |
    | G80.8       |
    | S13.4XXA    |
    +-------------+
    

    Bei dieser Abfrage werden nur gültige Werte zurückgegeben, die mit dem regulären Ausdruck übereinstimmen. Die Abfrage gibt keine ungültigen Werte wie xyz zurück.

    Weitere Details dazu finden Sie unter Zeichenfolgenfunktionen (reguläre Ausdrücke).

  7. Rufen Sie die Methode custom_classifier !LIST auf der Instanz auf, um den regulären Ausdruck zu überprüfen, den Sie der Instanz hinzugefügt haben:

    SELECT medical_codes!LIST();
    
    Copy

    Rückgabewerte:

    +--------------------------------------------------------------------------------+
    | MEDICAL_CODES!LIST()                                                           |
    +--------------------------------------------------------------------------------+
    | {                                                                              |
    |   "ICD-10-CODES": {                                                            |
    |     "col_name_regex": "ICD*",                                                  |
    |     "description": "Add a regex to identify ICD-10 medical codes in a column", |
    |     "privacy_category": "IDENTIFIER",                                          |
    |     "value_regex": "[A-TV-Z][0-9][0-9AB]\.?[0-9A-TV-Z]{0,4}"                   |
    | }                                                                              |
    +--------------------------------------------------------------------------------+
    

    Um eine Kategorie zu entfernen, rufen Sie die Methode custom_classifier !DELETE_CATEGORY auf der Instanz auf.

  8. Verwenden Sie SQL, um die Tabelle zu klassifizieren. Weitere Details dazu finden Sie unter Verwenden von SQL zum Klassifizieren der Tabellen in einem Schema.

  9. Wenn die Instanz nicht mehr benötigt wird, verwenden Sie den Befehl DROP CUSTOM_CLASSIFIER, um eine kundenspezifische Klassifizierungsinstanz aus dem System zu entfernen:

    DROP SNOWFLAKE.DATA_PRIVACY.CUSTOM_CLASSIFIER data.classifiers.medical_codes;
    
    Copy