Implementieren von Datenschutz auf Entitätsebene mit Aggregationsrichtlinien¶
Der Datenschutz auf Entitätsebene stärkt den Schutz der Privatsphäre, der durch die Aggregationsrichtlinien sichergestellt wird. Mit Datenschutz auf Entitätsebene kann Snowflake sicherstellen, dass eine Aggregationsgruppe eine bestimmte Anzahl von Entitäten und nicht nur eine bestimmte Anzahl von Zeilen enthält.
Die meisten Aufgaben und Überlegungen im Zusammenhang mit Aggregationsrichtlinien sind dieselben, unabhängig davon, ob Sie Datenschutz auf Entitätsebene implementieren. Allgemeine Informationen zur Verwendung von Aggregationsrichtlinien finden Sie unter Aggregationsrichtlinien.
Allgemeine Informationen zum Datenschutz auf Entitätsebene¶
Eine Entität bezieht sich auf eine Menge von Attributen, die zu einem logischen Objekt gehören (z. B. ein Benutzerprofil oder Haushaltsdaten). Diese Attribute können verwendet werden, um eine Entität innerhalb eines Datensets zu identifizieren. Datenschutz auf Entitätsebene ist ein Feature aus dem Bereich von Privacy-Enhancing Technologies, kurz PET (dt. Technologien zum Schutz der Privatsphäre), das die Privatsphäre einer Entität schützt, die in einem freigegebenen Datenset gespeichert ist. Das Feature stellt sicher, dass Abfragen keine sensiblen Attribute einer Entität offenlegen können, selbst wenn diese Attribute in mehreren Datensätzen zu finden sind.
Um Datenschutz auf Entitätsebene zu erreichen, können Sie in Snowflake festlegen, welche Attribute zur Identifizierung einer Entität verwendet werden können (ein Entitätsschlüssel). Damit kann Snowflake alle Datensätze identifizieren, die zu einer bestimmten Entität innerhalb eines Datensets gehören. Wenn zum Beispiel die Spalte email
als der Entitätsschlüssel definiert ist, kann Snowflake feststellen, dass alle Datensätze, in denen email=joe.smith@example.com
vorkommt, zur selben Entität gehören.
Aggregationsrichtlinien ohne Datenschutz auf Entitätsebene¶
Standardmäßig verlangen die Aggregationsrichtlinien, dass Analysten Abfragen ausführen, die Daten aggregieren, anstatt einzelne Zeilen abzurufen, wodurch die Privatsphäre auf Zeilenebene erreicht wird. Der Datenschutz auf Zeilenebene verhindert jedoch nicht, dass eine Abfrage Attribute einer Entität offenlegt, wenn diese Attribute in mehreren Zeilen gefunden werden (z. B. in einer Tabelle mit Transaktionsdaten).
Angenommen, ein Streaming-Dienst ActonViz hat eine Transaktionstabelle, die die E-Mail-Adressen (user_id
) und Haushalte (household_id
) aller Zuschauer erfasst, die sich bestimmte Sendungen ansehen.
user_id |
household_id |
program_id |
watch_time |
Startzeit |
---|---|---|---|---|
dave_sr@company.com |
12345 |
1 |
29 |
2023-09-12 09:00 |
mary@bazco.com |
23485 |
1 |
30 |
2023-09-12 09:00 |
dave_sr@company.com |
12345 |
6 |
18 |
2023-09-11 13:00 |
joe@jupiterlink.com |
85456 |
6 |
25 |
2023-09-15 22:00 |
junior@example.com |
12345 |
5 |
30 |
2023-09-13 11:00 |
ActonViz kann eine Aggregationsrichtlinie verwenden, um Werbekunden zu zwingen, Daten in Gruppen zusammenzufassen, die mindestens 2 Datensätze enthalten. Dies verhindert, dass die Werbekunden Daten aus einem einzelnen Datensatz abrufen können (Datenschutz auf Zeilenebene). Wenn jeder Zuschauer und jeder Haushalt nur einmal in der Tabelle auftauchen würde, wäre das genug, um seine Privatsphäre zu schützen.
Die Abfrage eines Werbekunden könnte jedoch immer noch Informationen über die Zuschauer und deren Haushalte erhalten. Eine Abfrage könnte eine Gruppe erstellen, die ausschließlich aus Datensätzen von Haushalt 12345
besteht, oder, noch schlimmer, eine Gruppe, die ausschließlich aus Datensätzen von Zuschauer dave_sr
besteht. In beiden Fällen würde die Anzahl der Datensätze in der Gruppe den Anforderungen von ActonViz entsprechen (mindestens 2 Datensätze pro Gruppe).
Aggregationsrichtlinien mit Datenschutz auf Entitätsebene¶
Um Datenschutz auf Entitätsebene zu erreichen, können Sie in Snowflake einen Entitätsschlüssel angeben, wenn Sie einer Tabelle oder Ansicht eine Aggregationsrichtlinie zuweisen. Nachdem der Entitätsschlüssel definiert ist, müssen die Gruppen, die von einer Abfrage auf einer aggregationsbeschränkten Tabelle oder Ansicht zurückgegeben werden, die angegebene Anzahl von Entitäten enthalten, nicht nur eine bestimmte Anzahl von Zeilen.
Angenommen, ActonViz definiert household_id
als Entitätsschlüssel, da dieses Attribut jeden Haushalt eindeutig identifiziert. Die Privatsphäre der einzelnen Haushalte wird nun gewahrt. Vor der Änderung konnte eine Gruppe ausschließlich aus Datensätzen bestehen, in denen household_id = 12345
enthalten war, aber jetzt muss sie mindestens zwei unterschiedliche Werte für die household_id
enthalten.
Beachten Sie, dass der Entitätsschlüssel nicht immer mit dem Primärschlüssel einer Tabelle identisch ist. In diesem Beispiel könnte die Tabelle user_id
als Primärschlüssel verwenden, weil damit ein Zuschauer eindeutig identifiziert wird. Aber in diesem Fall möchte ActonViz die Privatsphäre eines ganzen Haushalts schützen, der aus mehreren Zuschauern besteht, und hat daher household_id
als Entitätsschlüssel gewählt.
Allgemeine Informationen zur Mindestgruppengröße¶
Jede Aggregationsrichtlinie legt eine Mindestgruppengröße fest. Ohne Datenschutz auf Entitätsebene definiert die Mindestgruppengröße die Anzahl der Datensätze, die in eine Aggregationsgruppe aufgenommen werden müssen. Wenn ein Entitätsschlüssel angegeben wird, definiert die Mindestgruppengröße, wie viele Entitäten in einer Aggregationsgruppe enthalten sein müssen.
Die folgenden Richtlinien auf Spaltenebene wirken sich nicht darauf aus, wie Snowflake berechnet, ob genügend Entitäten in einer Aggregationsgruppe vorhanden sind:
Projektionsrichtlinien haben keine Wirkung.
Maskierungsrichtlinien haben keine Wirkung. Wenn der GROUP BY-Spalte eine Maskierungsrichtlinie zugewiesen wird, basieren die von der Abfrage gebildeten Aggregationsgruppen auf den von der Maskierungsrichtlinie zurückgegebenen Werten. In jeder dieser Gruppen müssen genügend Entitäten enthalten sein.
In Fällen, in denen Namensreferenzen mehrfach verwendet werden (z. B. in den Operatoren JOIN oder UNION), erzwingt Snowflake die minimale Gruppengröße für jede Namensreferenz eines jeden Datensets separat. Dies gilt auch dann, wenn die Referenz mehrmals auf dasselbe Datenset verweist.
Datenschutzes auf Entitätsebene mit Aggregationsrichtlinien durchsetzen¶
Um den Datenschutz auf Entitätsebene mit Aggregationsrichtlinien durchzusetzen, gehen Sie wie folgt vor:
Wenn Sie den Befehl CREATE AGGREGATION POLICY ausführen, um die Aggregationsrichtlinie zu erstellen, können Sie die Anzahl der Entitäten angeben, die in jeder Aggregationsgruppe enthalten sein muss.
Definieren Sie den Entitätsschlüssel, wenn Sie die Aggregationsrichtlinie einer Tabelle oder Ansicht zuweisen.
Mindestanzahl der Entitäten angeben¶
Die Syntax für das Erstellen einer Aggregationsrichtlinie mit CREATE AGGREGATION POLICY ändert sich nicht, wenn Sie einen Entitätsschlüssel verwenden, um Datenschutz auf Entitätsebene zu erreichen. Sie verwenden weiterhin das Argument MIN_GROUP_SIZE der Funktion AGGREGATION_CONSTRAINT, um eine Mindestgruppengröße anzugeben. Sobald Sie einen Entitätsschlüssel definieren, ändert sich die Mindestgruppengröße von einer Anforderung an die Anzahl der Datensätze in einer Gruppe zu der Anzahl der Entitäten in einer Gruppe.
Der folgende Befehl erstellt zum Beispiel eine Aggregationsrichtlinie mit einer Mindestgruppengröße von 5: Solange Sie bei der Zuweisung der Richtlinie zu einer Tabelle einen Entitätsschlüssel definieren, muss jede Aggregationsgruppe mindestens 5 Entitäten enthalten.
CREATE AGGREGATION POLICY my_agg_policy
AS () RETURNS AGGREGATION_CONSTRAINT ->
AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE => 5);
Ausführliche Informationen zum Erstellen von Aggregationsrichtlinien, einschließlich eines Beispiels für eine bedingte Aggregationsrichtlinie, die unter verschiedenen Umständen unterschiedliche Einschränkungen durchsetzt, finden Sie unter Aggregationsrichtlinie erstellen.
Entitätsschlüssel definieren¶
Sie definieren einen Entitätsschlüssel für eine Tabelle, wenn Sie die Aggregationsrichtlinie der Tabelle oder Ansicht zuweisen. Sie können den Entitätsschlüssel definieren, wenn Sie eine neue Tabelle oder Ansicht erstellen, oder wenn Sie eine bestehende Tabelle oder Ansicht aktualisieren.
Entitätsschlüssel für bestehende Tabellen und Ansichten definieren¶
Wenn Sie den Befehl ALTER TABLE … SET AGGREGATION POLICY oder den Befehl ALTER VIEW … SET AGGREGATION POLICY ausführen, um die Aggregationsrichtlinie zuzuweisen, verwenden Sie die Klausel ENTITY KEY, um anzugeben, welche Spalten in der Tabelle oder Ansicht die identifizierenden Attribute einer Entität (d. h. den Entitätsschlüssel) enthalten.
Um beispielsweise einen Entitätsschlüssel zu erstellen, während Sie einer Tabelle viewership_log
eine Aggregationsrichtlinie my_agg_policy
zuweisen, führen Sie Folgendes aus:
ALTER TABLE viewership_log
SET AGGREGATION POLICY my_agg_policy
ENTITY KEY (first_name,last_name);
Da die Spalten first_name
und last_name
der Entitätsschlüssel sind, kann die Aggregationsrichtlinie feststellen, dass alle Zeilen mit first_name = joe
und last_name = peterbilt
zur gleichen Entität gehören.
Entitätsschlüssel für neue Tabellen und Ansichten definieren¶
Wenn Sie den Befehl CREATE TABLE … WITH AGGREGATION POLICY oder den Befehl CREATE VIEW … WITH AGGREGATION POLICY ausführen, um die Aggregationsrichtlinie zuzuweisen, verwenden Sie die Klausel ENTITY KEY, um anzugeben, welche Spalten in der Tabelle oder Ansicht die identifizierenden Attribute einer Entität enthalten.
Um zum Beispiel eine neue Tabelle t1
zu erstellen und dabei eine Aggregationsrichtlinie zuzuweisen und einen Entitätsschlüssel zu definieren, führen Sie Folgendes aus:
CREATE TABLE t1
WITH AGGREGATION POLICY my_agg_policy
ENTITY KEY (first_name,last_name);
Da die Spalten first_name
und last_name
der Entitätsschlüssel sind, kann die Aggregationsrichtlinie feststellen, dass alle Zeilen mit first_name = joe
und last_name = peterbilt
zur gleichen Entität gehören.
Abfragen von Tabellen mit Aggregationseinschränkung¶
Die Anforderungen an das Abfragen einer Tabelle mit Aggregationseinschränkung, die einen Entitätsschlüssel hat, sind dieselben wie beim Abfragen von Tabellen ohne einen solchen. Weitere Informationen darüber, welche Typen von Abfragen diesen Anforderungen entsprechen, finden Sie unter Abfrageanforderungen.