Einführung in die Klassifizierung

Unter diesem Thema finden Sie Informationen zur Funktionsweise der Klassifizierung.

Unter diesem Thema:

Übersicht

Bei der Klassifizierung handelt es sich um einen mehrstufigen Prozess, bei dem Zellen und Metadaten auf personenbezogene Daten analysiert und dann die entsprechenden Spalten mit den von Snowflake definierten Tags (d. h. System-Tags) verknüpft werden. Die getaggten Daten können nun von einem Data Engineer nachverfolgt werden.

Auf Grundlage der Tracking-Informationen und der damit verbundenen Audit-Prozesse kann der Data Engineer die Spalte mit den personenbezogenen oder sensiblen Daten mittels einer Maskierungsrichtlinie schützen oder die Tabelle, die die Spalte enthält, mittels einer Zeilenzugriffsrichtlinie.

Das Gesamtergebnis der Klassifizierungs- und Datenschutzmaßnahmen besteht in einer verbesserten Einhaltung von Datenschutzbestimmungen.

Prozess

In diesem Abschnitt wird erläutert, wie der dreistufige Klassifizierungsprozess funktioniert. Sie können diesen Prozess so oft wie nötig wiederholen, z. B. nach dem Einfügen neuer Zeilen in eine Tabelle oder dem Hinzufügen neuer Spalten zu einer Tabelle.

Die Klassifizierung lässt sich auf einen dreistufigen Prozess reduzieren: Analysieren, Überprüfen und Anwenden. Jeder dieser Schritte umfasst verschiedene Operationen:

Analysieren

Der Data Engineer ruft die Funktion EXTRACT_SEMANTIC_CATEGORIES im Snowflake-Konto auf. Diese Funktion analysiert die Spalten einer Tabelle und gibt die möglichen Kategorien und die dazugehörigen Metadaten aus. Weitere Informationen dazu finden Sie unter Interpretation der Ausgabe (unter diesem Thema).

Bemerkung

Komplexe Ansichtsdefinitionen, wie z. B. bei Ansichten mit JOIN-Operationen auf mehreren Objekten, können den Analyseprozess verlangsamen. Bevor Sie eine komplexe Ansicht klassifizieren, sollten Sie das verwendete Warehouse prüfen. Weitere Informationen dazu finden Sie unter Computekosten (unter diesem Thema).

Überprüfen

Im Überprüfungsschritt prüft der Data Engineer die gefundenen Kategorien, um sicherzustellen, dass die Ergebnisse des Analyseschritts sinnvoll sind. Wenn keine Überarbeitungen erforderlich sind, kann der Data Engineer mit dem Anwendungsschritt fortfahren.

Falls Überarbeitungen erforderlich sind, nimmt der Data Engineer erforderliche Änderungen an der Ausgabe des Analyseschritts vor und geht erst danach zum Anwendungsschritt über.

Weitere Informationen dazu finden Sie unter Interpretation der Ausgabe (unter diesem Thema).

Anwenden

Der Anwendungsschritt besteht aus einer einzigen Operation: der Zuweisung des System-Tags.

Dazu kann Data Engineer System-Tags der Spalte manuell zuweisen oder die gespeicherte Prozedur ASSOCIATE_SEMANTIC_CATEGORY_TAGS aufrufen.

Nach dem Zuweisen der System-Tags kann der Data Engineer dann die System-Tags verfolgen und die personenbezogenen oder sensiblen Daten mit einer Maskierungsrichtlinie oder einer Zeilenzugriffsrichtlinie schützen.

Ausführliche Beispiele für diesen Prozess finden Sie unter Datenklassifizierung verwenden.

System-Tags und Kategorien

System-Tags sind Tags, die Snowflake erstellt, verwaltet und über die freigegebene SNOWFLAKE-Datenbank zur Verfügung stellt. Es gibt zwei System-Tags für die Klassifizierung, die beide im Schema SNOWFLAKE.CORE vorhanden sind:

  • SNOWFLAKE.CORE.SEMANTIC_CATEGORY

  • SNOWFLAKE.CORE.PRIVACY_CATEGORY

Der Data Engineer weist diese Tags einer Spalte zu, die personenbezogene oder sensible Daten enthält.

Zeichenfolgenwerte

Snowflake speichert die Zuweisung eines System-Tags zu einer Spalte als Schlüssel-Wert-Paar, wobei der Wert eine Zeichenfolge ist. Snowflake definiert die zulässigen Zeichenfolgenwerte für jedes Klassifizierungs-System-Tag, da Snowflake diese System-Tags verwaltet.

Die Tag-Namen SEMANTIC_CATEGORY und PRIVACY_CATEGORY entsprechen den Klassifizierungskategorien, die Snowflake den Spaltendaten während des Spalten-Sampling-Prozesses zuordnet (d. h. Tag-Namen und Kategorienamen verwenden die gleichen Wörter):

Semantische Kategorie

Die semantische Kategorie kennzeichnet personenbezogene Attribute.

Beispiele für personenbezogene Attribute, die von der Klassifizierung unterstützt werden, sind Name, Alter und Geschlecht. Diese drei Attribute sind mögliche Zeichenfolgenwert bei der Zuweisung des SEMANTIC_CATEGORY-Tags zu einer Spalte.

Die Klassifizierung kann Informationen aus verschiedenen Ländern wie Australien, Kanada oder dem Vereinigten Königreich erkennen. Wenn Ihre Tabellenspalte beispielsweise Informationen zu Telefonnummern enthält, kann der Analyseprozess die verschiedenen Telefonnummernwerte aus jedem dieser Länder unterscheiden. Eine vollständige Liste der unterstützten internationalen Werte finden Sie unter System-Tags mit internationalen Tag-Werten (unter diesem Thema).

Datenschutzkategorie

Wenn die Analyse ergibt, dass die Spaltendaten einer semantischen Kategorie entsprechen, ordnet Snowflake die Spalte außerdem einer Datenschutzkategorie zu. Die Datenschutzkategorie hat drei Werte: „identifier“ für Identifikatoren, „quasi-identifier“ für Quasi-Identifikatoren und „sensitive“ für sensible Daten. Diese drei Werte sind die Zeichenfolgenwerte, die bei der Zuweisung des Klassifizierungs-System-Tags PRIVACY_CATEGORY zu einer Spalte angegeben werden können.

  • Identifikator („identifier“): Attribute mit diesem Wert dienen der eindeutigen Identifizierung einer Person. Beispiele sind Name, Sozialversicherungsnummer und Telefonnummer.

    Bezeichnerattribute sind gleichbedeutend mit direkte Identifikatoren.

  • Quasi-Identifikatoren („quasi-identifier“): Diese Attribute können eine Person eindeutig identifizieren, wenn zwei oder mehr dieser Attribute kombiniert werden. Zu den Attributen gehören beispielsweise Alter und Geschlecht.

    Quasi-Identifikatoren sind ein Synonym für indirekte Identifikatoren.

  • Sensible Daten („sensitive“): Diese Attribute werden nicht als ausreichend angesehen, um eine Person zu identifizieren, sondern sind Informationen, die die Person aus Gründen des Datenschutzes eher nicht preisgeben möchte.

    Derzeit ist das einzige Attribut, das Snowflake als sensibel bewertet, das Gehalt.

Die folgende Tabelle fasst die Beziehung zwischen jeder Klassifizierungskategorie und jedem System-Tag, sowie den Zeichenfolgenwerten jedes Klassifizierungs-System-Tags zusammen: Die Zeilen in dieser Tabelle zeigen die Unterstützung für Kategorien an, die keine internationalen Werte haben.

Tag-Werte für PRIVACY_CATEGORY

Tag-Werte für SEMANTIC_CATEGORY

IDENTIFIER

  • EMAIL

  • IBAN

  • IMEI

  • IP_ADDRESS

  • VIN

  • NAME

  • PAYMENT_CARD

  • URL

QUASI_IDENTIFIER

  • AGE

  • GENDER

  • COUNTRY

  • DATE_OF_BIRTH

  • ETHNICITY

  • LATITUDE

  • LAT_LONG

  • LONGITUDE

  • MARITAL_STATUS

  • OCCUPATION

  • YEAR_OF_BIRTH

SENSITIVE

  • SALARY

Bemerkung

Mehrere Zeichenfolgenwerte semantischer Tags aus allen drei Datenschutzkategorien können nach bestehenden Gesetzen und Vorschriften als „sensible personenbezogene Daten“, „Besondere Datenkategorien“ oder Ähnliches gelten und zusätzliche Schutzmaßnahmen oder Kontrollen erfordern.

Derzeit werden Spaltendaten bei der Klassifizierung nicht gleichzeitig als sensibel und identifizierend getaggt. Mit anderen Worten, wenn Sie das System-Tag auf eine bestimmte Spalte setzen, müssen Sie entweder das SEMANTIC_CATEGORY- oder das PRIVACY_CATEGORY-Tag wählen.

System-Tags mit internationalen Tag-Werten

Snowflake unterstützt internationale SEMANTIC_CATEGORY-Tag-Werte, die für Australien, Kanada, Neuseeland, die Schweiz, das Vereinigte Königreich und die USA gelten. Um diese Länder zu unterstützen, entsprechen die Tag-Werte bestimmten übergeordneten Kategoriegruppen. Eine übergeordnete Kategorie enthält Informationen zum Klassifizierungsergebnis, einschließlich der Angabe, ob die Spalte hauptsächlich aus Werten aus dem einen oder anderen Land besteht.

Die folgende Tabelle fasst die Beziehung zwischen den Klassifizierungs-Tags, den Kategoriegruppen und Gruppenmitgliedern sowie den unterstützten Ländern zusammen. Die Ländercodes basieren auf dem Standard ISO 3166-1 ALPHA-2. Andere semantische Kategorien, wie EMAIL und GENDER, sind davon nicht betroffen. Um internationale Informationen zu verfolgen, kann der Data Engineer beim Setzen eines System-Tags auf einer Spalte den Wert aus der Spalte der SEMANTIC_CATEGORY-Tag-Werte verwenden.

PRIVACY_CATEGORY-Tag-Werte

SEMANTIC_CATEGORY-Tag-Werte (übergeordnete Gruppe)

Gruppenmitglieder

Ländercode

IDENTIFIER

BANK_ACCOUNT

  • CA_BANK_ACCOUNT

  • NZ_BANK_ACCOUNT

  • US_BANK_ACCOUNT

  • IBAN

  • CA

  • NZ

  • US

ORGANIZATION_IDENTIFIER

  • AU_BUSINESS_NUMBER

  • AU_COMPANY_NUMBER

  • SG_UNIQUE_ENTITY_NUMBER

  • AU

  • AU

  • SG

DRIVERS_LICENSE

  • AU_DRIVERS_LICENSE

  • CA_DRIVERS_LICENSE

  • US_DRIVERS_LICENSE

  • AU

  • CA

  • US

MEDICARE_NUMBER

  • AU_MEDICARE_NUMBER

  • NZ_NHI_NUMBER

  • AU

  • NZ

PASSPORT

  • AU_PASSPORT

  • CA_PASSPORT

  • NZ_PASSPORT

  • SG_PASSPORT

  • US_PASSPORT

  • AU

  • CA

  • NZ

  • SG

  • US

PHONE_NUMBER

  • AU_PHONE_NUMBER

  • CA_PHONE_NUMBER

  • UK_PHONE_NUMBER

  • US_PHONE_NUMBER

  • AU

  • CA

  • GB

  • US

STREET_ADDRESS

  • CA_STREET_ADDRESS

  • US_STREET_ADDRESS

  • CA

  • US

TAX_IDENTIFIER

  • AU_TAX_NUMBER

  • NZ_INLAND_REVENUE_NUMBER

  • AU

  • NZ

NATIONAL_IDENTIFIER

  • CA_SOCIAL_INSURANCE_NUMBER

  • UK_NATIONAL_INSURANCE_NUMBER

  • SG_NATIONAL_REGISTRATION_IDENTITY_CARD

  • US_SSN

  • CA

  • GB

  • SG

  • US

QUASI_IDENTIFIER

CITY

  • CA_CITY

  • NZ_CITY

  • US_CITY

  • CA

  • NZ

  • US

POSTAL_CODE

  • AU_POSTAL_CODE

  • CA_POSTAL_CODE

  • CH_POSTAL_CODE

  • NZ_POSTAL_CODE

  • UK_POSTAL_CODE

  • US_POSTAL_CODE

  • AU

  • CA

  • CH

  • NZ

  • GB

  • US

ADMINISTRATIVE_AREA_1

  • CA_PROVINCE_OR_TERRITORY

  • NZ_REGION

  • US_STATE_OR_TERRITORY

  • CA

  • NZ

  • US

ADMINISTRATIVE_AREA_2

  • US_COUNTY

  • US

Interpretation der Ausgabe

Im Folgenden wird ein vereinfachtes Beispiel für Einzelne Tabelle klassifizieren aus Datenklassifizierung verwenden gezeigt:

  1. Erstellen Sie eine Tabelle:

    CREATE OR REPLACE TABLE hr_data (
        age INTEGER,
        email_address VARCHAR,
        fname VARCHAR,
        lname VARCHAR
        );
    
    Copy
  2. Laden Sie Daten in die Tabelle, und rufen Sie dann die Funktion EXTRACT_SEMANTIC_CATEGORIES auf:

    INSERT INTO hr_data (fname, lname, age, email_address) 
        VALUES 
            ('Thomas',    'Smith',   44, 'TS_NoAdvertising@SpamFilter.com'),
            ('Katherine', 'Lee',     29, 'KL_JunkMailFolder@GatingEmail.com'),
            ('Lisa',      'Curie',   29, 'LC_03@GatingEmail.com'),
            ('Albert',    'Meitner', 14, 'AM_bucket@GatingEmail.com'),
            ('Horace',    'Jones',   53, 'HJ_track@SpamFilter.com'),
            ('Natalia',   'Chavez',  38, 'NataliaC@DoNotTrack.org');
    
    Copy
    USE ROLE data_engineer;
    
    SELECT EXTRACT_SEMANTIC_CATEGORIES('hr_data');
    
    Copy
  3. Bewerten Sie die Standardausgabe. Beispiel:

    +-----------------------------------------------+                               
    | EXTRACT_SEMANTIC_CATEGORIES('HR_DATA')        |
    |-----------------------------------------------|
    | {                                             |
    |   "AGE": {                                    |
    |     "alternates": [],                         |
    |     "recommendation": {                       |
    |       "confidence": "HIGH",                   |
    |       "coverage": 1,                          |
    |       "details": [],                          |
    |       "privacy_category": "QUASI_IDENTIFIER", |
    |       "semantic_category": "AGE"              |
    |     },                                        |
    |     "valid_value_ratio": 1                    |
    |   },                                          |
    |   "EMAIL_ADDRESS": {                          |
    |     "alternates": [],                         |
    |     "recommendation": {                       |
    |       "confidence": "HIGH",                   |
    |       "coverage": 1,                          |
    |       "details": [],                          |
    |       "privacy_category": "IDENTIFIER",       |
    |       "semantic_category": "EMAIL"            |
    |     },                                        |
    |     "valid_value_ratio": 1                    |
    |   },                                          |
    |   "FNAME": {                                  |
    |     "alternates": [],                         |
    |     "recommendation": {                       |
    |       "confidence": "HIGH",                   |
    |       "coverage": 1,                          |
    |       "details": [],                          |
    |       "privacy_category": "IDENTIFIER",       |
    |       "semantic_category": "NAME"             |
    |     },                                        |
    |     "valid_value_ratio": 1                    |
    |   },                                          |
    |   "LNAME": {                                  |
    |     "alternates": [],                         |
    |     "recommendation": {                       |
    |       "confidence": "HIGH",                   |
    |       "coverage": 1,                          |
    |       "details": [],                          |
    |       "privacy_category": "IDENTIFIER",       |
    |       "semantic_category": "NAME"             |
    |     },                                        |
    |     "valid_value_ratio": 1                    |
    |   }                                           |
    | }                                             |
    +-----------------------------------------------+
    

    Verwenden Sie die Tabellenfunktion FLATTEN, um die Lesbarkeit zu verbessern:

    SELECT
        f.key::varchar as column_name,
        f.value:"recommendation":"privacy_category"::varchar as privacy_category,  
        f.value:"recommendation":"semantic_category"::varchar as semantic_category,
        f.value:"recommendation":"confidence"::varchar as confidence,
        f.value:"recommendation":"coverage"::number(10,2) as coverage,
        f.value:"details"::variant as details,
        f.value:"alternates"::variant as alternates
      FROM
      TABLE(FLATTEN(EXTRACT_SEMANTIC_CATEGORIES('hr_data')::VARIANT)) AS f;
    
    Copy
    +---------------+------------------+-------------------+------------+----------+---------+------------+
    | COLUMN_NAME   | PRIVACY_CATEGORY | SEMANTIC_CATEGORY | CONFIDENCE | COVERAGE | DETAILS | ALTERNATES |
    |---------------+------------------+-------------------+------------+----------+---------+------------|
    | AGE           | QUASI_IDENTIFIER | AGE               | HIGH       |     1.00 | NULL    | []         |
    | EMAIL_ADDRESS | IDENTIFIER       | EMAIL             | HIGH       |     1.00 | NULL    | []         |
    | FNAME         | IDENTIFIER       | NAME              | HIGH       |     1.00 | NULL    | []         |
    | LNAME         | IDENTIFIER       | NAME              | HIGH       |     1.00 | NULL    | []         |
    +---------------+------------------+-------------------+------------+----------+---------+------------+
    

Unterstützte Objekt- und Spaltendatentypen

Snowflake unterstützt das Klassifizieren von Daten, die in allen Typen von Tabellen und Ansichten gespeichert sind, wie externen Tabellen, materialisierten Ansichten und sicheren Ansichten.

Sie können Tabellen- und Ansichtsspalten für alle unterstützten Datentypen klassifizieren, mit Ausnahme der folgenden Datentypen:

  • GEOGRAPHY

  • BINARY

  • VARIANT

    Beachten Sie, dass Sie eine Spalte mit dem Datentyp VARIANT klassifizieren können, wenn der Spaltendatentyp in einen NUMBER- oder STRING-Datentyp umgewandelt werden kann. Snowflake klassifiziert die Spalte nicht, wenn die Spalte JSON-, XML- oder andere semistrukturierte Daten enthält.

Wenn eine Tabelle Spalten enthält, deren Datentyp nicht unterstützt wird, oder die Spalte nur NULL-Werte enthält, ignoriert der Klassifizierungsprozess diese Spalten und nimmt sie nicht in die Ausgabe auf.

Wichtig

Wenn Ihre Daten NULL-Werte mit einem anderen Wert als NULL darstellen, kann die Genauigkeit der Klassifizierungsergebnisse beeinträchtigt werden.

Computekosten

Für den Klassifizierungsprozess sind Computeressourcen erforderlich, die von dem virtuellen Warehouse bereitgestellt werden, das zum Zeitpunkt der Klassifizierung verwendet und ausgeführt wird.

Der Zeitaufwand für die Klassifizierung von Daten einer Tabelle/Ansicht (und damit die Anzahl der vom Warehouse verbrauchten Credits) hängt von der Menge der zu klassifizierenden Daten ab.

Insbesondere bei einer Tabelle/Ansicht mit einer großen Anzahl von Spalten, die eine Klassifizierung unterstützen, kann dies Auswirkungen auf die Verarbeitungszeit haben. Generell gilt, dass die Verarbeitungsgeschwindigkeit linear mit der Größe des Warehouses steigt. Mit anderen Worten: Jede Vergrößerung eines Warehouses (z. B. von X-Small auf Small) lässt sich die Verarbeitungszeit in der Regel um die Hälfte reduzieren.

Verwenden Sie die folgenden allgemeinen Richtlinien bei der Auswahl der Warehouse-Größe:

  • Bearbeitungszeit spielt keine Rolle: sehr kleines Warehouse (X-Small).

  • Bis zu 100 Spalten in einer Tabelle: kleines Warehouse (Small).

  • 101 bis 300 Spalten in einer Tabelle: mittelgroßes Warehouse (Medium).

  • 301 Spalten oder mehr in einer Tabelle: großes Warehouse (Large).

Vorteile

Die Klassifizierung bietet Datenschutz- und Data Governance-Administratoren die folgenden Vorteile:

Datenzugriff

Die Ergebnisse der Klassifizierung von Spaltendaten können Administratoren der Identitäts- und Zugriffsverwaltung dabei helfen, ihre Snowflake-Rollenhierarchien zu evaluieren und zu pflegen, um sicherzustellen, dass die Snowflake-Rollen die passenden Berechtigungen für den Zugriff auf sensible oder PII-Daten haben.

Datenfreigabe (Data Sharing)

Der Klassifizierungsprozess kann helfen, den Speicherort von PII Daten zu identifizieren und zu bestätigen. Anschließend kann ein Data Sharing-Anbieter anhand der Klassifizierungsergebnisse entscheiden, ob die Daten freigeben werden können und wie die PII-Daten einem Data Sharing-Verbraucher zur Verfügung gestellt werden sollen.

Anwendung von Richtlinien

Die Nutzung von Spalten, die PII-Daten enthalten, wie z. B. beim Verweisen auf Spalten in Basistabellen, um eine Ansicht oder materialisierte Ansicht zu erstellen, kann dabei helfen, die beste Methode zum Schutz der Daten entweder mit einer Maskierungsrichtlinie oder einer Zeilenzugriffsrichtlinie zu bestimmen.

Empfehlungen

Um das Klassifizierungs-Feature einzusetzen und das Tracking der PII-Daten zu optimieren, gehen Sie wie folgt vor:

Validierung

Fragen Sie zuerst die Account Usage-Ansichten ab:

  • ACCESS_HISTORY: Ermitteln der Tabellen- und Ansichtsobjekte, auf die am häufigsten zugegriffen wird.

  • OBJECT_DEPENDENCIES: Ermitteln von Metadaten-Referenzen zwischen zwei oder mehreren Objekten.

Verwenden Sie die Ergebnisse der Abfragen, um die Zuweisung der Klassifizierungs-System-Tags auf Schema- oder Datenbankebene zu priorisieren.

Spaltennamen

Verwenden Sie sinnvolle Spaltennamen in Ihren Tabellenobjekten, und schulen Sie die Tabellenersteller, sich an die internen Richtlinien für die Tabellenerstellung zu halten.

Datentypen

Verwenden Sie sinnvolle Datentypen für Spalten. So sollte zum Beispiel eine AGE-Spalte mit Altersangaben den Datentyp NUMBER haben.

VARIANT

Wenn eine Spalte den Datentyp VARIANT hat, führen Sie vor dem Klassifizieren der Tabelle den Befehl FLATTEN auf der Spalte aus.

Prüfen

Speichern Sie die Ergebnisse des Aufrufs der Funktion EXTRACT_SEMANTIC_CATEGORIES in einer temporären Tabelle, und überprüfen Sie die Ergebnisse, bevor Sie die Klassifizierungs-System-Tags zuweisen.

Nachdem Sie die System-Tags zugewiesen haben, fragen Sie die Account Usage-Ansichten TAG_REFERENCES und COLUMNS ab, um die Spalten zu prüfen, die nicht klassifiziert wurden.

Weisen Sie zum Beispiel der kundenspezifischen Rolle data_engineer die Datenbankrolle GOVERNANCE_VIEWER zu, und führen Sie folgende Anweisungen aus:

use role accountadmin;

grant database role governance_viewer to role data_engineer;

use role data_engineer;

select table_name,
       table_catalog
from snowflake.account_usage.columns c
  where not exists(
    select * from snowflake.account_usage.tag_references t
    where c.column_id = t.column_id
  )
  and deleted is null
order by table_catalog;
Copy

Verwenden Sie die Abfrageergebnisse, um zu bestimmen, welche Tabellenkataloge (d. h. Datenbanken) am wichtigsten sind, um die Klassifizierung der Tabellen erneut zu überprüfen und zu priorisieren.

Datensätze

Erstellen Sie einen historischen Datensatz mit den Ergebnissen des Aufrufs der Funktion EXTRACT_SEMANTIC_CATEGORIES und den Ergebnissen der Zuweisung der Klassifizierungs-System-Tags.

Warehouse

Verwenden Sie bei der Klassifizierung der Daten die passende Warehouse-Größe. Weitere Informationen dazu finden Sie unter Computekosten (unter diesem Thema).

Klassifizierung verwalten

Berechtigungsreferenz

In der folgenden Tabelle sind die erforderlichen Mindestberechtigungen für die Analyse- und Überprüfungsschritte für die Klassifizierung zusammengefasst:

Berechtigung

Objekt

Anmerkungen

USAGE

Datenbank und Schema

Diese Berechtigung ist für die übergeordnete Datenbank und das Schema der Tabelle erforderlich, in denen die zu klassifizierenden Spalten gespeichert sind.

SELECT , UPDATE

Tabelle

Die SELECT-Berechtigung ermöglicht das Abfragen einer Tabelle, was zur Klassifizierung von Spaltendaten und zum Aufrufen der Funktion EXTRACT_SEMANTIC_CATEGORIES erforderlich ist.

Die UPDATE-Berechtigung ermöglicht das Aufrufen der gespeicherten Prozedur ASSOCIATE_SEMANTIC_CATEGORY_TAGS, mit der die Klassifizierungsergebnisse automatisch auf Spalten einer Tabelle angewendet werden.

Die erforderlichen Berechtigungen für den Anwendungsschritt, insbesondere das Zuweisen des System-Tags, bei der Klassifizierung hängen von der gewählten Methode ab. Derzeit gibt es drei Optionen:

  • Verwenden der Datenbankrolle GOVERNANCE_ADMIN.

  • Zuweisen der Berechtigung IMPORTED PRIVILEGES zu einer kundenspezifischen Rolle.

  • Verwenden der Rolle ACCOUNTADMIN.

Datenbankrolle

Die Datenbankrollenmethode verwendet die Datenbankrolle GOVERNANCE_ADMIN, um ein Klassifizierungs-System-Tag einer Tabellenspalte zuzuweisen. Zusätzlich hat der Data Engineer die globale Berechtigung APPLY TAG, um Tags auf Objekte zu setzen, die er nicht besitzt.

Gehen Sie dabei wie folgt vor:

  1. Weisen Sie die Datenbankrolle GOVERNANCE_ADMIN einer kundenspezifischen Rolle Ihrer Wahl zu (z. B. data_engineer):

    use role accountadmin;
    grant database role snowflake.governance_admin to role data_engineer;
    grant apply tag on account to role data_engineer;
    
    Copy
  2. Weisen Sie einer Tabellenspalte ein System-Tag zu, z. B. der Spalte EMAIL in der Tabelle mit dem Namen hr.tables.empl_info (d. h. einer Tabelle mit Mitarbeiterinformationen in der Personaldatenbank):

    use role data_engineer;
    
    alter table hr.tables.empl_info
      modify column email
      set tag snowflake.core.semantic_category = 'email';
    
    Copy

Die Verwendung der Datenbankrollenmethode kann dazu beitragen, die Anforderung des Prinzips der niedrigsten Berechtigung zu erfüllen.

Kundenspezifische Rolle

Die Methode mit der kundenspezifischen Rolle (d. h. einer von Ihnen auf Kontoebene erstellten Rolle) erfordert das Erteilen von zwei Berechtigungen zu einer Rolle Ihrer Wahl. Beispiel:

use role accountadmin;
grant imported privileges on database snowflake to role data_engineer;
grant apply tag on account to role data_engineer;
Copy

Das Ergebnis dieser beiden Berechtigungszuweisungen ermöglicht den Zugriff auf die freigegebene SNOWFLAKE-Datenbank und die Anwendung der Klassifizierungs-System-Tags auf jede Tabellenspalte im Konto. Ein Benutzer mit der Rolle data_engineer kann dann das Klassifizierungs-System-Tag einer Tabelle zuweisen, wie für die Datenbankrollenmethode gezeigt.

Die beiden Anweisungen zur Berechtigungszuweisung bei dieser Methode ermöglichen jedoch auch Folgendes:

  • Voller Zugriff zur Abfrage aller Ansichten in der freigegebenen SNOWFLAKE-Datenbank.

  • Setzen von allen Tags im Konto auf jedes Objekt, das im Konto getaggt werden kann.

Wenn die Methode mit der kundenspezifischen Rolle die Anforderung des Prinzips der niedrigsten Berechtigung nicht erfüllt, müssen Sie die Datenbankrollenmethode verwenden.

ACCOUNTADMIN

Die Verwendung der Rolle ACCOUNTADMIN erfordert keine zusätzlichen Anweisungen für Berechtigungszuweisung. Die Rolle ACCOUNTADMIN ist jedoch die Rolle mit der höchsten Berechtigung in Snowflake.

Wenn in Ihrer Produktionsumgebung Beschränkungen bezüglich der Verwendung der Rolle ACCOUNTADMIN bestehen, verwenden Sie entweder die Datenbankrollenmethode oder die Methode mit kundenspezifischer Rolle.

Was den Schutz von Spaltendaten anbelangt, so können der data_engineer-Rolle die Berechtigungen zur Zuweisung einer Maskierungsrichtlinie bzw. einer Zeilenzugriffsrichtlinie erteilt werden, oder eine andere Rolle kann für die Zuweisung der Richtlinien zuständig sein. Welche Methode Sie wählen, hängt davon ab, welche Vorgehensweise Ihre Administratoren bei der Zuweisung von Berechtigungen und Rollen bevorzugen.

Repräsentative Beispiele finden Sie unter Datenklassifizierung verwenden.

Tracking von System-Tags

Snowflake bietet integrierte Ansichten und Funktionen zur Verfolgung der Verwendung von System-Tags für die Klassifizierung:

  • Um die Spalten zu ermitteln, denen in Ihrem Konto ein System-Tag zugewiesen ist, fragen Sie die Account Usage-Ansicht TAG_REFERENCES ab:

    SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TAG_REFERENCES
        WHERE TAG_NAME = 'PRIVACY_CATEGORY'
        ORDER BY OBJECT_DATABASE, OBJECT_SCHEMA, OBJECT_NAME, COLUMN_NAME;
    
    Copy
  • Um für eine Tabelle oder eine Ansicht in einer bestimmten Datenbank die Spalten zu ermitteln, denen ein System-Tag zugewiesen ist, rufen Sie die Information Schema-Tabellenfunktion TAG_REFERENCES auf:

    SELECT * FROM
      TABLE(
        my_db.information_schema.tag_references(
          'my_db.my_schema.hr_data.fname',
          'COLUMN'
        )
      )
    ;
    
    Copy
  • Um alle Tags zu ermitteln, die in jeder Spalte einer Tabelle oder einer Ansicht innerhalb einer bestimmten Datenbank zugewiesen wurden, rufen Sie die Information Schema-Tabellenfunktion TAG_REFERENCES_ALL_COLUMNS auf:

    select * from
      table(
        my_db.information_schema.tag_references_all_columns(
          'my_db.my_schema.hr_data',
          'table'
        )
      )
    ;
    
    Copy
  • Um einen bestimmten Tag-Wert für eine Spalte zu ermitteln, rufen Sie die Systemfunktion SYSTEM$GET_TAG auf:

    select system$get_tag(
      'snowflake.core.privacy_category',
      'hr_data.fname',
      'COLUMN'
      )
    ;
    
    Copy

Nächste Themen: