ALTER PRIVACY POLICY

Ändert die Eigenschaften einer bestehenden Datenschutzrichtlinie.

Vorsicht

Wenn Sie budget_limit, max_budget_per_aggregate oder budget_window ändern, wird jede Eigenschaft, die nicht in Ihrem ALTER-Befehl angegeben ist, auf ihren Standardwert zurückgesetzt. Um die aktuellen Werte der Parameter zu erhalten, führen Sie den Befehl DESCRIBE PRIVACY POLICY aus.

Siehe auch:

CREATE PRIVACY POLICY , DESCRIBE PRIVACY POLICY , DROP PRIVACY POLICY , SHOW PRIVACY POLICIES

Syntax

ALTER PRIVACY POLICY [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER PRIVACY POLICY [ IF EXISTS ] <name> SET BODY -> <expression>

ALTER PRIVACY POLICY <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER PRIVACY POLICY <name> UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER PRIVACY POLICY [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'

ALTER PRIVACY POLICY [ IF EXISTS ] <name> UNSET COMMENT
Copy

Parameter

name

Gibt den Bezeichner für die zu ändernde Datenschutzrichtlinie an.

Wenn der Bezeichner Leerzeichen oder Sonderzeichen enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen gesetzt werden. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß- und Kleinschreibung zu beachten.

Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.

RENAME TO new_name

Gibt den neuen Bezeichner für die Datenschutzrichtlinie an. Dieser muss für Ihr Schema eindeutig sein. Der neue Bezeichner kann nicht verwendet werden, wenn der Bezeichner bereits für eine andere Datenschutzrichtlinie verwendet wird.

Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.

Sie können das Objekt in eine andere Datenbank und/oder in ein anderes Schema verschieben und dabei optional das Objekt umbenennen. Geben Sie dazu einen qualifizierten new_name-Wert an, der den neuen Datenbank- und/oder Schemanamen im Format db_name.schema_name.object_name bzw. schema_name.object_name enthält.

Bemerkung

  • Die Zieldatenbank und/oder das Zielschema müssen bereits vorhanden sein. Außerdem darf in der Zieldatenbank nicht bereits ein gleichnamiges Schema vorhanden sein, da die Anweisung sonst einen Fehler zurückgibt.

  • Das Verschieben eines Objekts in ein verwaltetes Zugriffsschema ist nicht zulässig, es sei denn, der Objekteigentümer (d. h. die Rolle mit der Berechtigung OWNERSHIP für das Objekt) ist auch Eigentümer des Zielschemas.

SET ...

Gibt eine (oder mehrere) Eigenschaften an, die für die Datenschutzrichtlinie eingestellt werden sollen:

BODY -> expression

Gibt einen neuen Textteil (Body) für die Richtlinie an.

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

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

Gibt den Namen des Tags und den Wert der Tag-Zeichenfolge an.

Der Tag-Wert ist immer eine Zeichenfolge, die maximale 256 Zeichen lang sein kann.

Weitere Informationen zur Angabe von Tags in einer Anweisung finden Sie unter Tag-Kontingente für Objekte und Spalten.

COMMENT = 'string_literal'

Fügt einen Kommentar hinzu oder überschreibt den vorhandenen Kommentar für die Datenschutzrichtlinie.

Standard: Kein Wert

UNSET ...

Gibt eine oder mehrere Eigenschaften und/oder Parameter, die für die Datenschutzrichtlinie aufgehoben werden sollen, indem sie auf ihre Standardwerte zurückgesetzt werden:

  • TAG tag_name [ , tag_name ... ]

  • COMMENT

Wenn Sie eine Eigenschaft und/oder einen Parameter zurücksetzen, geben Sie nur den Namen an. Die Angabe eines Wertes für die Eigenschaft gibt einen Fehler zurück.

Anforderungen an die Zugriffssteuerung

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

Berechtigung

Objekt

Anmerkungen

OWNERSHIP

Datenschutzrichtlinie

OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege).

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

  • Wenn Sie eine bestehende Datenschutzrichtlinie aktualisieren möchten und die aktuelle Definition der Richtlinie sehen müssen, führen Sie den Befehl DESCRIBE PRIVACY POLICY aus. Sie können auch die Funktion GET_DDL verwenden, um die vollständige Definition der Datenschutzrichtlinie zu erhalten, einschließlich ihres Textteils (Bodys).

  • Das Verschieben einer Datenschutzrichtlinie in ein verwaltetes Zugriffsschema (unter Verwendung der ALTER PRIVACY POLICY … RENAME TO-Syntax) ist nicht erlaubt, es sei denn, der Eigentümer der Datenschutzrichtlinie (d. h. die Rolle mit der Berechtigung OWNERSHIP Berechtigung für die Datenschutzrichtlinie verfügt) ist auch Eigentümer des Zielschemas.

  • 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.

Beispiele

Ändern Sie den (Textteil) Body einer Datenschutzrichtlinie my_priv_policy so, dass er immer ein Budget namens analysts zurückgibt:

-- Modify the body of privacy policy "my_priv_policy" so it always returns a
-- budget named "analysts"
ALTER PRIVACY POLICY my_priv_policy SET BODY ->
  PRIVACY_BUDGET(BUDGET_NAME => 'analysts');

-- Set budget limit to 50 and max budget per aggregate to 0.1
-- budget window is not mentioned so it is reset to its default value
ALTER PRIVACY POLICY users_policy SET BODY ->
  privacy_budget(budget_name=>'analysts', budget_limit=>50, max_budget_per_aggregate=>0.1);
Copy