Grundlegendes zur externen Tokenisierung

Dieses Thema bietet einen allgemeinen Überblick über die Funktion zur externen Tokenisierung.

Wichtig

Für die externe Tokenisierung sind Externe Funktionen erforderlich, die in der Snowflake Standard Edition enthalten sind, und Sie können externe Funktionen mit einem Tokenisierungsanbieter (d. h. Protegrity) verwenden.

Wenn Sie jedoch Ihren Tokenisierungsanbieter in Snowflake Externe Tokenisierung integrieren möchten, müssen Sie ein Upgrade auf Enterprise Edition oder höher durchführen.

Wenden Sie sich für ein Upgrade direkt an den Snowflake-Support.

Was ist die externe Tokenisierung?

Die externe Tokenisierung ermöglicht Konten, Daten vor dem Laden in Snowflake zu tokenisieren und zur Laufzeit der Abfrage zu detokenisieren. Bei der Tokenisierung werden vertrauliche Daten entfernt, indem sie durch ein nicht entschlüsselbares Token ersetzt werden. Bei der externen Tokenisierung werden Maskierungsrichtlinien mit externen Funktionen verwendet.

In Snowflake sind Maskierungsrichtlinien Objekte auf Schemaebene. Dies bedeutet, dass in Snowflake eine Datenbank und ein Schema vorhanden sein müssen, bevor eine Maskierungsrichtlinie auf eine Spalte angewendet werden kann. Derzeit unterstützt Snowflake die Verwendung der dynamischen Datenmaskierung auf Tabellen und Ansichten.

Zur Laufzeit der Abfrage wird die Maskierungsrichtlinie überall dort auf die Spalte angewendet, wo diese angezeigt wird. Abhängig von den Bedingungen der Maskierungsrichtlinie, dem SQL-Ausführungskontext und der Rollenhierarchie wird denjenigen, die die Snowflake-Abfrage ausführen, der Klartextwert, einen teilweise maskierter Wert oder ein vollständig maskierter Wert angezeigt.

Weitere Informationen zur Funktionsweise von Maskierungsrichtlinien, einschließlich Laufzeitverhalten von Abfragen, Erstellen einer Richtlinie, Verwendung mit Tabellen und Ansichten sowie Verwaltungskonzepte unter Verwendung von Maskierungsrichtlinien, finden Sie unter Grundlegendes zur Sicherheit auf Spaltenebene.

Weitere Informationen zu den Auswirkungen von SQL-Ausführungskontext und Rollenhierarchie finden Sie unter Erweiterte Sicherheit auf Spaltenebene.

Durch das Tokenisieren von Daten vor dem Laden in Snowflake wird sichergestellt, dass vertrauliche Daten niemals unnötig offengelegt werden. Durch die Verwendung von Maskierungsrichtlinien mit externen Funktionen wird sichergestellt, dass zur Laufzeit der Abfrage nur den entsprechenden Zielgruppen detokenisierte Daten angezeigt werden.

Derzeit unterstützt Snowflake die Verwendung von Protegrity zur Verwaltung der Tokenisierung vertraulicher Daten in allen Datenspeichern (z. B. Tabellen, Datenbanken, Data Warehouses) in Ihrem Unternehmen. Wenn Snowflake die externe Funktion in der Maskierungsrichtlinie aufruft, wird das Protegrity Data Security Gateway (DSG) über die REST-API aufgerufen.

Da eine externe Funktion in Snowflake nicht ausgeführt wird, muss ein Amazon-API-Gateway in Ihrer Umgebung aktiviert und eine REST-API-Integration zwischen Snowflake und dem Server erstellt werden, der diese Daten tokenisiert. Wenn die Abfrage zur Laufzeit eine oder mehrere Spalten aufruft, auf denen eine Maskierungsrichtlinie mit einer externen Funktion angewendet wird, detokenisiert Protegrity die Spaltendaten, die an Snowflake zurückgesendet werden sollen. Die Maskierungsrichtlinie stellt sicher, dass die detokenisierten Daten nur Benutzern angezeigt werden, die Mitglieder der angegebenen Rollen sind.

Vorteile der externen Tokenisierung

Im Folgenden sind einige der wichtigsten Vorteile der externen Tokenisierung zusammengefasst.

Tokenisierte Daten vorladen

Bei Verwendung eines Tokenisierungsanbieters werden tokenisierte Daten in Snowflake vorgeladen. Selbst ohne Anwendung einer Maskierungsrichtlinie auf eine Spalte in einer Tabelle oder Ansicht wird Benutzern daher nie der tatsächliche Datenwert angezeigt. Dies bietet eine verbesserte Datensicherheit für die vertraulichsten Daten in Ihrem Unternehmen.

Benutzerfreundlichkeit

Sie können eine Richtlinie einmal schreiben und sie dann auf Tausende von Spalten in Datenbanken und Schemas anwenden.

Datenadministration und SoD

Die Entscheidung, welche Spalten geschützt werden sollen, wird nicht vom Objektbesitzer sondern vom Sicherheits- oder Datenschutzbeauftragten getroffen. Maskierungsrichtlinien sind einfach zu verwalten und unterstützen zentralisierte und dezentralisierte Administrationsmodelle.

Datenautorisierung und Data Governance

Kontextueller Datenzugriff nach Rollen- oder benutzerdefinierten Berechtigungen.

Unterstützt die von Sicherheits- oder Datenschutzbeauftragten implementierte Data Governance und kann berechtigten Benutzern mit der Rolle ACCOUNTADMIN oder SECURITYADMIN das unnötige Anzeigen von Daten untersagen.

Änderungsmanagement

Einfache Änderung des Inhalts der Maskierungsrichtlinie, ohne die Maskierungsrichtlinie erneut auf Tausende von Spalten anwenden zu müssen.

Ein Vergleich der Vorteile zwischen dynamischer Datenmaskierung und externer Tokenisierung finden Sie unter Vorteile der Sicherheit auf Spaltenebene.

Einschränkungen für die externe Tokenisierung

Eine Übersicht zu den Einschränkungen finden Sie unter Einschränkungen für die Sicherheit auf Spaltenebene.

Hinweise zur externen Tokenisierung

Weitere Hinweise zur externen Tokenisierung finden Sie unter Hinweise zur Sicherheit auf Spaltenebene.

Berechtigungen und Abhängigkeiten der externen Tokenisierung

In der folgenden Tabelle sind die Berechtigungen für Maskierungsrichtlinien für die externe Tokenisierung zusammengefasst.

Berechtigung

Verwendung

APPLY

Aktiviert das Anwenden von Operationen zum Festlegen/Aufheben der Maskierungsrichtlinie.

OWNERSHIP

Überträgt die Eigentümerschaft an einer Maskierungsrichtlinie, wodurch die vollständige Kontrolle über die Maskierungsrichtlinie gewährt wird. Erforderlich, um die meisten Eigenschaften einer Maskierungsrichtlinie zu ändern.

Bemerkung

Das Durchführen von Operationen auf einer Maskierungsrichtlinie erfordert auch die USAGE-Berechtigung für die übergeordnete Datenbank und das übergeordnete Schema.

Da Maskierungsrichtlinien für die externe Tokenisierung eine externe Funktion erfordern, die von einer API-Integration abhängt, werden in der folgenden Tabelle die Berechtigungen zusammengefasst, die die benutzerdefinierte Rolle (z. B. MASKING_ADMIN) für Snowflake-Objekte haben muss. Beachten Sie, dass diese Berechtigungen nur für die benutzerdefinierte Rolle gelten und nicht für die Rolle des Benutzers erforderlich sind, der die Spalte mit einer Maskierungsrichtlinie abfragt.

Benutzerdefinierte Rolle

Berechtigung

Objekt

Eigentümer der Richtlinie für die externe Tokenisierung

USAGE

Externe Funktion

Der Eigentümer der externe Funktion (d. h. die Rolle mit der Berechtigung OWNERSHIP für die externe Funktion)

USAGE

Alle API-Integrationsobjekte, auf die von der externen Funktion verwiesen wird.

DDL für die externe Tokenisierung

Snowflake bietet die folgenden Befehle zum Verwalten von Richtlinien für die externe Tokenisierung.

Überwachung der externen Tokenisierung

Snowflake bietet zwei Account Usage-Ansichten, die speziell für Maskierungsrichtlinien gelten:

  • MASKING_POLICIES liefert eine Liste aller Maskierungsrichtlinien in Ihrem Snowflake-Konto.

  • POLICY_REFERENCES liefert eine Liste aller Objekte, in denen eine Maskierungsrichtlinie festgelegt ist.

Die Information Schema-Tabellenfunktion POLICY_REFERENCES kann für Folgendes verwendet werden:

  • Rückgabe einer Liste aller Objekte (d. h. Tabellen, Ansichten), bei denen für eine Spalte die angegebene Maskierungsrichtlinie festgelegt wurde.

  • Rückgabe einer Liste von Richtlinienzuordnungen, die den angegebenen Objektnamen und Objekttyp aufweisen.

Snowflake zeichnet die ursprüngliche Abfrage des Benutzers auf der Seite Verlauf (auf der Weboberfläche) auf. Die Abfrage befindet sich in der Spalte SQL Text.

Die Namen der Maskierungsrichtlinien, die in einer bestimmten Abfrage verwendet wurden, finden Sie im Query Profile.

Der Abfrageverlauf ist nur für die Account Usage-Ansicht QUERY_HISTORY spezifisch. In dieser Ansicht enthält die Spalte Query Text den Text der SQL-Anweisung. Namen von Maskierungsrichtlinien sind in der QUERY_HISTORY-Ansicht nicht enthalten.

Problembehandlung bei der externen Tokenisierung

Zur Behebung von Problemen mit Maskierungsrichtlinien können Fehlermeldungen verwendet werden.

Fehlermeldungen

In der folgenden Tabelle sind Fehlermeldungen beschrieben, die Snowflake bei Verwendung von Maskierungsrichtlinien zurückgeben kann.

Verhalten

Fehlermeldung

Problembehandlung

Maskierungsrichtlinie kann nicht auf eine Snowflake-Funktion angewendet werden.

Unsupported feature CREATE ON MASKING POLICY COLUMN.

Maskierungsrichtlinien können derzeit nicht auf diese Funktion angewendet werden.

Eine aktive Rolle kann keine Maskierungsrichtlinie erstellen oder ersetzen.

SQL access control error: Insufficient privileges to operate on account <Kontoname>

Erteilen Sie der angegebenen Rolle mit grant create masking policy on account to role <role_name>; . die Berechtigung CREATE MASKING POLICY. Überprüfen Sie mit show grants to role <role_name>, ob die Rolle über die Berechtigung verfügt, und wiederholen Sie die Maskierungsanweisung CREATE OR REPLACE erneut.

Eine bestimmte Rolle kann einer Tabelle keine Maskierungsrichtlinie hinzufügen.

SQL compilation error: Database <Datenbankname> does not exist or not authorized.

Erteilen Sie der Rolle mit grant apply masking policy on account to role <role_name>; die Berechtigung APPLY MASKING POLICY.

Eine bestimmte Rolle, die kein Eigentümer einer Maskierungsrichtlinie für eine Tabelle ist, versucht, eine Maskierungsrichtlinie auf eine Tabelle anzuwenden, die sie verwenden darf.

SQL compilation error: Masking policy <Name_der_Richtlinie> does not exist or not authorized.

Erteilen Sie der angegebene Rollen die Nutzungsberechtigung für die Maskierungsrichtlinie mit grant apply on masking policy <policy_name> to role <role_name>;

Eine Richtlinie kann nicht mit drop masking policy <policy_name>; gelöscht oder entfernt werden.

SQL compilation error: Policy <Name_der_Richtlinie> cannot be dropped/replaced as it is associated with one or more entities.

Verwenden Sie zuerst eine ALTER TABLE … MODIFY COLUMN- oder ALTER VIEW … MODIFY COLUMN-Anweisung, um zuerst die Richtlinie mit UNSET zu deaktivieren, und wiederholen Sie dann die DROP-Anweisung.

Das Wiederherstellen einer gelöschten Tabelle führt zu einem Maskierungsrichtlinienfehler.

SQL execution error: Column <Spaltenname> already attached to a masking policy that does not exist. Please contact the policy administrator.

Deaktivieren Sie die aktuell angehängte Maskierungsrichtlinie mit einer ALTER TABLE/VIEW MODIFY COLUMN-Anweisung, und wenden Sie die Maskierungsrichtlinie dann erneut mit einer CREATE OR REPLACE-Anweisung auf die Spalte an.

Eine Maskierungsrichtlinie kann nicht auf eine bestimmte Spalte angewendet werden, die Maskierungsrichtlinie kann jedoch auf eine andere Spalte angewendet werden.

Specified column already attached to another masking policy. A column cannot be attached to multiple masking policies. Please drop the current association in order to attach a new masking policy.

Entscheiden Sie, welche Maskierungsrichtlinie für die Spalte gelten soll, aktualisieren Sie diese, und versuchen Sie es erneut.

Das Aktualisieren einer Richtlinie mit einer ALTER-Anweisung schlägt fehl.

SQL compilation error: Masking policy <Name_der_Richtlinie> does not exist or not authorized.

Überprüfen Sie, ob der Richtlinienname im ALTER-Befehl mit einer vorhandenen Richtlinie übereinstimmt, indem Sie show masking policies; ausführen.

Die Rolle, die Eigentümer der geklonten Tabelle ist, kann eine Maskierungsrichtlinie nicht deaktivieren.

SQL access control error: Insufficient privileges to operate on ALTER TABLE UNSET MASKING POLICY ‚<Richtlinienname>‘

Erteilen Sie der Rolle, die Eigentümer der geklonten Tabelle ist, mit grant apply on masking policy <policy_name> to role <role_name>; die APPLY-Berechtigung. . Stellen Sie sicher, dass die Rolle, die Eigentümer der geklonten Tabelle ist, die Berechtigung zur Verwendung von show grants to role <role_name>; besitzt, und versuchen Sie die ALTER-Anweisung erneut.

Das Aktualisieren einer Richtlinie mit IF EXISTS gibt zwar ein erfolgreiches Ergebnis zurück, die Richtlinie wird jedoch nicht aktualisiert.

Es wurde keine Fehlermeldung zurückgegeben. Snowflake gibt die Meldung aus, dass die Anweisung erfolgreich ausgeführt wurde.

Entfernen Sie IF EXISTS aus der ALTER-Anweisung, und versuchen Sie es erneut.

Beim Erstellen oder Ersetzen einer Maskierungsrichtlinie durch CASE stimmen die Datentypen nicht überein (z. B. (VAL Zeichenfolge) -> gibt Nummer zurück).

SQL compilation error: Masking policy function argument and return type mismatch.

Aktualisieren Sie die Maskierungsrichtlinie, indem Sie CASE mit übereinstimmenden Datentypen und mithilfe einer CREATE OR REPLACE-Anweisung oder einer ALTER MASKING POLICY-Anweisung verwenden.

Anwenden eine Maskierungsrichtlinie auf eine virtuelle Spalte.

SQL compilation error: Masking policy cannot be attached to a VIRTUAL_COLUMN column.

Wenden Sie die Maskierungsrichtlinie auf die Spalten in der Quelltabelle an.

Anwenden einer Maskierungsrichtlinie auf eine materialisierte Ansicht.

SQL compilation error: syntax error line <Zahl> at position <Zahl> unexpected ‚modify‘. . SQL compilation error: error line <Zahl> at position <Zahl> invalid identifier ‚<Zeichen>‘ . SQL execution error: One or more materialized views exist on the table. number of mvs=<Zahl>, table name=<Tabellenname>.

Wenden Sie die Maskierungsrichtlinie auf die Spalten in der Quelltabelle an. Weitere Informationen dazu finden Sie unter Einschränkungen.

Anwenden einer Maskierungsrichtlinie auf eine Tabellenspalte, mit der eine materialisierte Ansicht erstellt wird.

SQL compilation error: Masking policy cannot be attached to a MATERIALIZED_VIEW column.

Löschen Sie die materialisierte Ansicht, um die Maskierungsrichtlinie auf die Tabellenspalte anzuwenden.

Einfügen einer maskierten Spalte beim Erstellen einer materialisierten Ansicht.

Unsupported feature ‚CREATEONMASKINGPOLICYCOLUMN‘.

Erstellen Sie die materialisierte Ansicht ohne Einbeziehung der maskierten Spalten oder legen Sie keine Maskierungsrichtlinien auf der Basistabelle oder den Ansichten fest, erstellen Sie die materialisierte Ansicht, und wenden Sie dann die Maskierungsrichtlinien auf die Spalten der materialisierten Ansicht an.

Es ist nicht möglich, eine Maskierungsrichtlinie mit einer benutzerdefinierten Funktion (UDF) im Maskierungsrichtlinientext zu erstellen.

SQL access control error: Insufficient privileges to operate on function ‚<UDF-Name>‘

Überprüfen Sie, ob die Rolle, die die Maskierungsrichtlinie erstellt, die Berechtigung USAGE für die UDF hat.

Nächste Themen: