Differentielle Privatsphäre in Snowflake Data Clean Room

Um die Privatsphäre der Entitäten in Ihren Daten zu schützen, bietet Snowflake Data Clean Rooms differentielle Privatsphäre. Differentielle Privatsphäre ist ein auf Mathematik basierendes Datenschutzsystem [1], das Datenschutz auf Entitätsebene sowohl für einzelne Abfragen als auch für wiederholte Abfragen eines Datensatzes bietet. Datenanbieter können differentielle Privatsphäre in ihren Reinräumen konfigurieren, um einen starken Schutz der Privatsphäre auf Entitätsebene und einen niedrigen Rauschpegel für ihre Daten zu ermöglichen.

Differentielle Privatsphäre ist eine Alternative zu einfachen Aggregationsanforderungen, die private Informationen preisgeben können, wenn Angreifer genügend „enge“ Abfragen auf Daten generieren, die sich um eine Entität unterscheiden (bekannt als differencing attack).

Differentielle Privatsphäre ist auch eine gute Alternative zur Datenmaskierung, bei der Spaltenwerte vollständig ausgeblendet werden, um den Preis, dass Verknüpfungen auf maskierten Zeilen verhindert werden und nützliche Daten vor dem Analysten verborgen bleiben. Differentielle Privatsphäre ermöglicht Verknüpfungen auf geschützten Spalten und erlaubt es Analysten, geschützte Daten einzusehen, indem genug Rauschen hinzugefügt wird, um die Privatsphäre geschützter Zeilen zu schützen, aber nicht so viel Rauschen, dass die Daten für den Analysten unbrauchbar sind.

Wichtig

Die Kunden sind dafür verantwortlich, die unterschiedlichen Datenschutz-Tools in Snowflake Data Clean Rooms so zu konfigurieren, dass sie ihre Datenschutzanforderungen erfüllen. Diese Tools sind standardmäßig nicht konfiguriert.

Wie differentielle Privatsphäre für Clean Rooms funktioniert

Clean Rooms bieten eine eigene Implementierung der differentiellen Privatsphäre, die sich von der differentiellen Privatsphäre von Snowflake unterscheidet. Lesen Sie also dieses Dokument, um die unterschiedliche Verhaltensweise und die Einstellungen zu verstehen.

Die differentielle Privatsphäre schützt die Privatsphäre von Entitäten in Ihren Daten. Clean Rooms definieren eine Entität als einen eindeutigen Wert in einer Spalte. Clean Rooms bestimmen, welche Spalten Daten enthalten, die wahrscheinlich sensibel sind. Eine Sozialversicherungsnummer oder eine E-Mail-Adresse ist zum Beispiel wahrscheinlich sensibel, eine Farbe jedoch nicht. Bei Anwendung der differentiellen Privatsphäre können Clean Rooms eine oder mehrere Entitätsspalten in jeder Tabelle identifizieren. Sie können nicht konfigurieren, welche Spalten als Entitätsspalten bezeichnet werden.

Die differentielle Privatsphäre in Clean Rooms fügt den numerischen Ergebnissen, die mit jeder Entität verbunden sind, auch Rauschen hinzu.

Benutzer könnten versuchen, mehrere verschiedene Abfrageergebnisse zu vergleichen, um das Rauschen zu reduzieren; dies wird als Differenzierungsangriff bezeichnet. Um Differenzierungsangriffe abzuschwächen, berechnet und überwacht die differentielle Privatsphäre ein Datenschutzbudget, das einem Konto zugewiesen ist. Jede Abfrage hat einen Preis, der angibt, wie viel Privatsphäre durch diese Abfrage preisgegeben wird. Diese Kosten werden mathematisch ermittelt und hängen von der Abfrage, den Daten und den vorherigen Abfragen dieses Benutzers ab. Wenn die Kosten einer Abfrage das verbleibende Datenschutzbudget überschreiten, schlägt die Abfrage fehl. Andernfalls kann die Abfrage fortgesetzt werden, und die Kosten werden zum täglichen Datenschutzbudget des Benutzers hinzugefügt. Das Datenschutzbudget wird täglich aktualisiert.

Differentielle Privatsphäre in Clean Rooms erzwingt keine Aggregationseinschränkungen bei Abfragen, aber Sie können Aggregationseinschränkungen unabhängig zu Ihren Daten oder Vorlagen hinzufügen.

Tipp

Snowflake-Datenschutzrichtlinien verhindern die Erstellung einer Ansicht aus einer geschützten Tabelle, sodass Sie keine Tabellen mit Datenschutzrichtlinien verknüpfen können.

Differentielle Privatsphäre in der UI aktivieren und verwalten

In der Clean Room UI können Anbieter Datenschutzeinstellungen auf der Ebene der Vorlage festlegen; Verbraucher können keine Einstellungen für die differentielle Privatsphäre aktivieren oder ändern. Die Standard-Snowflake-Vorlagen, die in der Clean Room UI verwendet werden, können unterschiedliche Datenschutzeinstellungen pro Vorlage haben.

So verwenden Sie die Clean Room UI, um die differentielle Privatsphäre für eine Vorlage zu aktivieren oder zu deaktivieren.

  1. Öffnen Sie die Registerkarte Created ` auf der Seite Clean Rooms.

  2. Wählen Sie Edit oder Drei vertikale Punkte, die weitere Optionen anzeigen » Edit auf der Clean Room-Kachel (je nachdem, ob der Clean Room die Durchführung einer Analyse zulässt).

  3. Wählen Sie Next, bis Sie Configure Analysis & Query erreichen.

  4. Erweitern Sie unten auf der Seite Privacy Settings. Aktivieren oder deaktivieren Sie Differential Privacy und geben Sie Ihre Einstellungen für diese Vorlage an, einschließlich Datenschutzbudget für Benutzer und Abfragekosten. Sie können auch Schwellenwerte festlegen, um in dieser Abfrage Mindestgruppengrößen zu erzwingen.

  5. Um Einstellungen für eine andere Vorlage zu konfigurieren, legen Sie zunächst Werte für die aktuelle Vorlage fest und wählen dann eine andere Vorlage in der Vorlagenauswahl.

Datenschutzbudget in der UI verwalten

Verbleibendes Datenschutzbudget anzeigen

Wenn Sie eine Abfrage ausführen oder die Ergebnisse anzeigen, können Sie Ihr Gesamtbudget und den verwendeten Betrag im Abschnitt Privacy Settings einsehen.

Datenschutzbudget für andere Benutzer festlegen

In der UI kann ein Anbieter ein Datenschutzbudget festlegen, ein Verbraucher jedoch nicht.

  1. Bearbeiten Sie einen Clean Room und gehen Sie auf die Seite Configure Analysis & Query.

  2. Wählen Sie eine Vorlage aus.

  3. Erweitern Sie unten auf der Seite Privacy Settings, wo Sie Ihr Datenschutzbudget für Benutzer und die Kosten für Abfragen sehen können.

Differentielle Privatsphäre in der API aktivieren und verwalten

In der Clean Room API können beide Seiten die differentielle Privatsphäre auf Mitarbeiterebene aktivieren und konfigurieren.

Alle benutzerdefinierten Vorlagen verwenden die gleichen Einstellungen für differentielle Privatsphäre in einem Clean Room. Die von Snowflake zur Verfügung gestellten Vorlagen können mit individuellen Datenschutzeinstellungen in der UI konfiguriert werden.

Gehen Sie wie folgt vor, um differentielle Privatsphäre zu konfigurieren:

  • consumer.enable_templates_for_provider_run - Schalten Sie die differentielle Privatsphäre mit Standardwerten für alle vom Anbieter durchgeführten Analysen aus oder ein.

  • consumer.set_privacy_settings - Legen Sie individuelle Einstellungen für differentielle Privatsphäre in vom Anbieter durchgeführten Analysen mit benutzerdefinierten Vorlagen fest.

  • provider.set_privacy_settings - Legen Sie individuelle Einstellungen für differentielle Privatsphäre in von Verbrauchern durchgeführten Analysen mit benutzerdefinierten Vorlagen fest.

  • provider.add_custom_sql_template - Geben Sie einen Parameter für die Sensibilität an, um das Epsilon (Rauschlevel) für eine Vorlage über oder unter das für den Verbraucher eingestellte Basis-Epsilon zu erhöhen oder zu verringern.

  • provider.add_consumers - Legen Sie die Datenschutzeinstellungen pro Verbraucher fest. Sie können denselben Kunden mehrmals mit unterschiedlichen Einstellungen für differentielle Privatsphäre hinzufügen, um seine Datenschutzeinstellungen zu ändern.

  • provider.suspend_account_dp_task - Deaktivieren Sie die Überwachung des Budgets für differentielle Privatsphäre für alle Clean Rooms in diesem Konto. Die differentielle Privatsphäre wird nicht mehr durchgesetzt.

  • provider.resume_account_dp_task - Aktivieren Sie die Überwachung des Budgets für differentielle Privatsphäre für alle Clean Rooms in diesem Konto. Alle Einstellungen für differentielle Privatsphäre werden respektiert.

Die Datenschutzeinstellungen für einen Clean Room werden in SAMOOHA_CLEANROOM_cleanroom_ID.admin.privacy_budget gespeichert, wobei APPLICATION_ID ein Vorlagenname ist (NULL steht für alle benutzerdefinierten Vorlagen) und PARTY_ACCOUNT der Benutzer ist, auf den sie angewendet werden.

Datenschutzbudget in der API verwalten

Verbleibendes Datenschutzbudget anzeigen

Verbraucher können die Prozedur consumer.view_remaining_privacy_budget aufrufen. Es gibt keine Möglichkeit für Anbieter, ihr verbleibendes Datenschutzbudget im Code zu sehen.

Datenschutzbudget für andere Benutzer festlegen

  • Anbieter rufen provider.set_privacy_settings oder provider.add_consumers auf.

  • Verbraucher rufen consumer.set_privacy_settings auf, um das Budget für vom Anbieter durchgeführte Analysen festzulegen.

Verfügbare Datenschutzeinstellungen

Die folgenden Datenschutzwerte können mit verschiedenen Prozeduren zur Einstellung der Datenschutzwerte festgelegt werden:

  • differential (Ganzzahl) - 1 oder 0, wobei 1 bedeutet, dass die differentielle Privatsphäre aktiviert werden soll, und 0, dass sie nicht aktiviert werden soll.

  • epsilon (Float): Eine Zahl größer als Null, die angibt, wie viel Rauschen zu den Ergebnissen hinzugefügt werden soll. Kleinere Werte (0,1–1,0) bieten einen stärkeren Schutz der Privatsphäre, fügen den Ergebnissen jedoch mehr Rauschen hinzu. Standard: 0,1.

  • noise_mechanism (Zeichenfolge) - Der Algorithmus, der verwendet wird, um Rauschen zu den Ergebnissen hinzuzufügen. Geben Sie entweder Laplace oder Gauß an.

  • privacy_budget (Ganzzahl) - Wie viel Datenschutzbudget diesem Benutzer zugestanden wird, eine Zahl >= 0, wobei 0 bedeutet, dass er keine Abfrage durchführen kann, wenn die differentielle Privatsphäre aktiviert ist. Der Standardwert ist 10.

  • threshold (Ganzzahl) - Geben Sie 1 an, um threshold_value in von Snowflake bereitgestellten Vorlagen zu erzwingen, oder 0, um threshold_value zu ignorieren. Der Standardwert ist 0. Dies wird über den Schalter für die differentielle Privatsphäre in der Clean Room UI gesteuert.

  • threshold_value (Ganzzahl) - Mindestanzahl von Zeilen, die eine Gruppe haben sollte, um in den Daten zu erscheinen. Wird nur in bestimmten von Snowflake bereitgestellten Vorlagen verwendet.

Zusätzliche Datenschutz-Funktionalität

Rauschen zu den Ergebnissen hinzufügen

Wenn Sie manuell Rauschen zu Ihren Ergebnissen hinzufügen möchten, ohne die differentielle Privatsphäre zu implementieren, können Sie die folgende Clean Room-Funktion in Ihrer Vorlage oder Ihrem benutzerdefinierten Code verwenden. Beachten Sie, dass dieser Code voraussetzt, dass der Benutzer über ein ausreichendes Datenschutzbudget verfügt, da er sonst fehlschlägt. Wenn die Aufgabe für die differentielle Privatsphäre deaktiviert ist, verfügt der Benutzer im Grunde über ein unbegrenztes Budget.

cleanroom.addnoise(<val>, <epsilon>, <noiserand>, [<gaussian>], [<delta>])
Copy

Beschreibung: Fügt einem numerischen Wert kalibriertes Rauschen hinzu, um Garantien für die differentielle Privatsphäre zu erfüllen. Diese Funktion kann nur im Zusammenhang mit einem Clean Room aufgerufen werden. Dazu muss weder die differentielle Privatsphäre für den Benutzer oder die Vorlage noch die Aufgabe für die differentielle Privatsphäre aktiviert sein. Verwenden Sie diese Funktion in einer Vorlage oder UDP/UDTP.

Argumente:

  • val (DOUBLE) - Der Originalwert, zu dem das Rauschen hinzugefügt wird.

  • epsilon (DOUBLE) - Der Datenschutzbudget-Parameter, wobei kleinere Werte (0,1–1,0) einen stärkeren Schutz der Privatsphäre bieten, aber mehr Rauschen hinzufügen. Der Wert ist > 0.

  • noiserand (DOUBLE) - Ein Zufallswert zwischen 0 und 1, der jedem Ergebnis Zufälligkeit hinzufügt. Berechnen Sie diesen Wert mit einem Zufallsgenerator, anstatt einen statischen Wert zu übergeben.

  • gaussian (BOOLEAN, optional) - Wenn TRUE, wird Gauß‘sches Rauschen anstelle von Laplace-Rauschen verwendet. Der Standardwert ist FALSE.

  • delta (DOUBLE, optional) - Der Delta-Parameter für den Gauß-Mechanismus, wenn gaussian gleich TRUE ist (kleiner ist besser). Der Standardwert ist 0,000001.

Gibt zurück: Einen DOUBLE-Wert, der den Originalwert mit hinzugefügtem Rauschen darstellt, das die Privatsphäre schützt.

Empfehlungen:

  • Gilt nur für Aggregate (COUNT, SUM, AVG), niemals für einzelne Datensätze.

  • Ziehen Sie in Erwägung, die Ergebnisse zu runden, um sie nicht zu genau zu lassen.

  • Diese Funktion erfordert ein Datenschutzbudget. Beachten Sie also, dass sie fehlschlägt, wenn der Benutzer kein Budget mehr hat.

  • Kombinieren Sie dies mit einer Mindestgruppengröße, um den Schutz zu erhöhen.

Beispiel:

Diese Beispielvorlage fügt einer Zählung eindeutiger gehashter E-Mail-Werte Rauschen hinzu, wobei der für den Clean Room geltende Epsilon-Wert verwendet wird.

CALL samooha_by_snowflake_local_db.provider.add_custom_sql_template(
$cleanroom_name,
$template_name,
$$
SELECT
  cleanroom.addNoise(
    count(distinct p.hashed_email),  -- Value
    {{ privacy.epsilon | sqlsafe }}, -- Epsilon
    UNIFORM(0::FLOAT, 1::FLOAT, RANDOM()) -- Noiserand
    ) AS noisy_count
FROM
    IDENTIFIER({{ source_table[0] }}) p
$$);
Copy

Aggregationsrichtlinien und Mindestgruppengrößen festlegen

Wenn Sie die Aggregation Ihrer Daten erfordern und Mindestgruppengrößen festlegen möchten, können Sie entweder eine Aggregationsrichtlinie für die Quelltabellen festlegen oder die Aggregation in Ihren Vorlagen erzwingen.

Kosten für differentielle Privatsphäre verwalten

Die differentielle Privatsphäre verursacht Kosten auch dann, wenn einzelne Benutzer oder Vorlagen die differentielle Privatsphäre nicht aktiviert haben, da das System bei jeder Abfrage prüft, ob die differentielle Privatsphäre angewendet werden soll. Wenn Sie diese Kosten vermeiden möchten, können Sie die differentielle Privatsphäre für das Konto deaktivieren:

  1. Schalten Sie zunächst die differentielle Privatsphäre für alle Reinräume über die Web-App aus:

    1. Melden Sie sich bei der Web-App an.

    2. Deaktivieren Sie die differentielle Privatsphäre in allen fehlerfreien Reinräumen, auch wenn diese nicht gemeinsam genutzt oder veröffentlicht werden:

      1. Wählen Sie Clean rooms » Created » Edit aus.

      2. Wählen Sie Next, bis Sie Configure Analysis & Query erreichen.

      3. Erweitern Sie unten auf der Seite Privacy Settings. Heben Sie die Markierung von Differential Privacy auf, falls sie aktiviert ist, und klicken Sie dann auf Next und Finish, um Ihre Änderungen zu speichern. Wenn dies nicht ausgewählt ist, klicken Sie einfach auf Cancel, und fahren Sie mit dem nächsten Reinraum fort.

  2. Schließlich setzen Sie die Hintergrundaufgabe für differentielle Privatsphäre in Ihrem Konto aus, indem Sie die Prozedur provider.suspend_account_dp_task in Snowsight aufrufen.

Wichtig

Durch die Aktivierung der differentiellen Privatsphäre in einem Reinraum nach der Deaktivierung der Hintergrundaufgabe wird die Aufgabe für dieses Konto automatisch wieder aktiviert.

Einige Hinweise und Fehlerbehebungen:

  • Wenn Sie vergessen, die differentielle Privatsphäre für einen Reinraum zu deaktivieren und die Hintergrundaufgabe auszusetzen, funktioniert die differentielle Privatsphäre in diesem Reinraum für Benutzer, die sie bereits installiert haben, möglicherweise nicht.

  • Wenn in einem Reinraum vor der Installation des Reinraums die differentielle Privatsphäre aktiviert wird, schlägt die Installation des Reinraums fehl. In diesem Fall müssen Sie die differentielle Privatsphäre im Reinraum deaktivieren oder die Aufgabe wie unten beschrieben wieder aktivieren.

Wenn Sie zu einem späteren Zeitpunkt die differentielle Privatsphäre in Ihrem Konto aktivieren möchten, aktivieren Sie entweder die differentielle Privatsphäre für jeden Reinraum im Konto oder rufen die Prozedur provider.resume_account_dp_task in Snowsight auf.