CREATE PRIVACY POLICY

Erstellt eine neue Datenschutzrichtlinie oder ersetzt eine bestehende Datenschutzrichtlinie.

Siehe auch:

ALTER PRIVACY POLICY , DESCRIBE PRIVACY POLICY , DROP PRIVACY POLICY , SHOW PRIVACY POLICIES

Syntax

CREATE [ OR REPLACE ] PRIVACY POLICY [ IF NOT EXISTS ] <name>
  AS () RETURNS PRIVACY_BUDGET -> <body>
  [ COMMENT = '<string_literal>' ]
Copy

Erforderliche Parameter

name

Zeichenfolge, die den Bezeichner (d. h. den Namen) für die Datenschutzrichtlinie angibt. Der Wert muss für das Schema, in dem die Datenschutzrichtlinie erstellt wird, eindeutig sein.

Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B. "My object"). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.

Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.

body

Der SQL-Ausdruck des Bodys ruft zwei Funktionen auf, um den Rückgabewert der Richtlinie zu steuern: NO_PRIVACY_POLICY und PRIVACY_BUDGET. Wenn eine Abfrage für eine Tabelle ausgeführt wird, der die Richtlinie zugewiesen wurde, wertet Snowflake die Bedingungen des Bodys aus, um die entsprechende Funktion aufzurufen und einen Wert zurückzugeben. Dieser Rückgabewert bestimmt, welches Datenschutzbudget, falls vorhanden, mit der Abfrage der datenschutzgeschützten Tabelle verbunden ist.

Der Ausdruck kann Kontextfunktionen wie CURRENT_ROLE oder INVOKER_ROLE verwenden, um einen Benutzer oder eine Gruppe von Benutzern mit einem Datenschutzbudget zu verknüpfen.

Wenn Sie einen CASE-Block im Ausdruck des Bodys verwenden, muss dieser eine ELSE-Anweisung enthalten, die entweder NO_PRIVACY_POLICY oder PRIVACY_BUDGET aufruft. Jeder Benutzer muss entweder mit einem Datenschutzbudget verbunden sein oder uneingeschränkten Zugriff auf die datenschutzgeschützte Tabelle haben. Wenn ein Benutzer keinen Zugriff auf eine datenschutzgeschützte Tabelle oder Ansicht haben soll, entziehen Sie die SELECT-Berechtigungen, anstatt zu versuchen, dies in der Datenschutzrichtlinie zu definieren.

NO_PRIVACY_POLICY

Verwenden Sie den Ausdruck im Richtlinientext, um die Funktion NO_PRIVACY_POLICY aufzurufen, wenn Sie möchten, dass eine Abfrage uneingeschränkten Zugriff auf die Tabelle oder Ansicht hat, der die Datenschutzrichtlinie zugewiesen ist.

PRIVACY_BUDGET

Verwenden Sie den Ausdruck des Bodys, um die Funktion PRIVACY_BUDGET aufzurufen, wenn Sie ein Datenschutzbudget aus der Richtlinie zurückgeben möchten. Der Ausdruck kann Bedingungen enthalten, die es der Richtlinie ermöglichen, unterschiedliche Datenschutzbudgets für verschiedene Abfragen zurückzugeben, basierend auf Faktoren wie dem Benutzer, der die Abfrage ausführt.

Bei der kontoübergreifenden Zusammenarbeit werden die Datenschutzbudgets automatisch durch den Kontobezeichner des Verbraucherkontos getrennt. Dadurch wird verhindert, dass zwei verschiedene Verbraucherkonten dasselbe Datenschutzbudget gemeinsam nutzen, selbst wenn der Name des Datenschutzbudgets derselbe ist. Wenn Sie die Funktion CURRENT_ACCOUNT verwenden, um den Namen des Kontos mit dem Namen des Datenschutzbudgets zu verknüpfen, können Sie zwischen den einzelnen Datenschutzbudgets unterscheiden. Zum Beispiel können Sie die Funktion wie folgt aufrufen: PRIVACY_BUDGET(BUDGET_NAME => 'external_budget.' || CURRENT_ACCOUNT()).

Die Signatur der Funktion PRIVACY_BUDGET lautet:

PRIVACY_BUDGET(
  BUDGET_NAME=> '<string>'
  [, BUDGET_LIMIT=> <decimal> ]
  [, MAX_BUDGET_PER_AGGREGATE=> <decimal> ]
  [, BUDGET_WINDOW=> <string> ]
)
Copy

Datenschutzbudget-Argumente:

BUDGET_NAME => expression

Wird in den Namen eines Datenschutzbudgets aufgelöst. Snowflake erstellt das Datenschutzbudget automatisch, wenn sein Name im Textteil (Body) der Datenschutzrichtlinie angegeben wird.

BUDGET_LIMIT => decimal

Eine Dezimalzahl > 0, die die Budgetbeschränkung für diese Datenschutzrichtlinie angibt. Dies steuert den Gesamtumfang des erlaubten Datenschutzverlustes. Durch Anpassen dieses Werts wird geändert, wie viele insgesamt unterschiedlich private Aggregate während des Aktualisierungszeitraums für Tabellen berechnet werden können, die durch dieses Datenschutzbudget geschützt sind. Wenn eine Abfrage ausgeführt wird, die dazu führen würde, dass der kumulative Datenschutzverlust diese Zahl überschreitet, schlägt die Abfrage fehl. Eine grobe Schätzung besagt, dass eine Budgetbeschränkung von 233 mit MAX_BUDGET_PER_AGGREGATE=1 etwa 1.000 Aggregate pro Zeitraum erlaubt.

Standardeinstellung: 233.0

MAX_BUDGET_PER_AGGREGATE => decimal

Gibt an, wie viel Datenschutzbudget für jede Aggregatfunktion in einer Abfrage verwendet wird. Die Anpassung dieses Wert ändert die Menge an Rauschen, die zu jeder Abfrage hinzugefügt wird, sowie die Anzahl der Aggregate, die ausgeführt werden können, bevor die Beschränkung des Datenschutzbudgets erreicht wird. Ein Beispiel: Die Abfrage select count(*), avg(a) ... hat zwei Aggregate: count(*) und avg(a). Geben Sie eine Dezimalzahl an > 0.

Standardeinstellung: 0.5

BUDGET_WINDOW => string

Wie oft das Datenschutz aktualisiert wird, d. h. sein kumulativer Datenschutzverlust auf 0 zurückgesetzt wird. Gültige Werte:

  • Daily: Täglich um 12:00 Uhr AM UTC aktualisiert

  • Weekly: Aktualisiert jeden Sonntag um 12:00 AM UTC

  • Monthly: Aktualisiert am ersten Tag des Kalendermonats um 12:00 AM UTC

  • Yearly: Aktualisiert am 1. Januar um 12:00 AM UTC

  • Never: Das Datenschutzbudget wird nie aktualisiert.

Standard: Wöchentlich

Optionale Parameter

COMMENT = 'string_literal'

Gibt einen Kommentar für die Datenschutzrichtlinie an.

Standard: Kein Wert

Anforderungen an die Zugriffssteuerung

Eine Rolle, die zur Ausführung dieses SQL-Befehls verwendet wird, muss mindestens die folgenden Berechtigungen haben:

Berechtigung

Objekt

Anmerkungen

CREATE PRIVACY POLICY

Schema

Beachten Sie, dass für die Bearbeitung eines Objekts in einem Schema auch die Berechtigung USAGE für die übergeordnete Datenbank und das Schema erforderlich ist.

Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.

Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.

Nutzungshinweise

  • Metadaten:

    Achtung

    Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „Benutzer“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.

  • CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.

Beispiele

Erstellen Sie eine Datenschutzrichtlinie, die immer ein Budget namens analysts zurückgibt:

CREATE PRIVACY POLICY my_priv_policy
  AS ( ) RETURNS PRIVACY_BUDGET ->
  PRIVACY_BUDGET(BUDGET_NAME=> 'analysts');
Copy

Erstellen Sie eine Datenschutzrichtlinie, die admin uneingeschränkten Zugriff auf die datenschutzgeschützte Tabelle gewährt, während alle anderen Benutzer mit dem Datenschutzbudget analysts verknüpft werden:

CREATE PRIVACY POLICY my_priv_policy
  AS () RETURNS PRIVACY_BUDGET ->
    CASE
      WHEN CURRENT_USER() = 'ADMIN'
        THEN NO_PRIVACY_POLICY()
      ELSE PRIVACY_BUDGET(BUDGET_NAME => 'analysts')
    END;
Copy