ALTER MASKING POLICY

Ersetzt die vorhandenen Regeln einer Maskierungsrichtlinie durch neue Regeln oder einen neuen Kommentar und ermöglicht das Umbenennen einer Maskierungsrichtlinie.

Alle an den Richtlinienregeln vorgenommenen Änderungen werden bei Ausführung der nächsten SQL-Abfrage wirksam, die die Maskierungsrichtlinie verwendet.

Siehe auch:

DDL für Maskierungsrichtlinien

Syntax

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

ALTER MASKING POLICY [ IF EXISTS ] <name> SET BODY -> <expression_on_arg_name_to_mask>

ALTER MASKING POLICY [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER MASKING POLICY [ IF EXISTS ] <name> UNSET TAG <tag_name> [ , <tag_name> ... ]

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

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

Parameter

name

Bezeichner für die Maskierungsrichtlinie. Dieser muss im übergeordneten Schema der Richtlinie eindeutig sein.

Der Bezeichnerwert muss mit einem alphabetischen Zeichen 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 Details dazu finden Sie unter Anforderungen an Bezeichner.

RENAME TO new_name

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

Weitere Details 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 Maskierungsrichtlinie festgelegt werden sollen:

BODY -> expression_on_arg_name_to_mask

SQL-Ausdruck, der die Daten in der mit arg_name_mask angegebenen Spalte transformiert.

Der Ausdruck kann Funktionen für bedingte Ausdrücke enthalten, um bedingte Logik, integrierte Funktionen oder UDFs zur Datentransformation zu repräsentieren.

UDFs und externe Funktionen:

  • Der Eigentümer der Richtlinien, die Rolle mit der OWNERSHIP-Berechtigung für die Richtlinie, muss die USAGE-Berechtigung für die UDF oder externe Funktion haben. Die USAGE-Berechtigung für die UDF- oder externe Funktion ist für die Rolle nicht erforderlich, die zur Abfrage einer Spalte verwendet wird, auf die eine Maskierungsrichtlinie angewendet wurde.

  • Wenn eine der beiden Funktionen innerhalb des Textes der bedingten Maskierungsrichtlinie verwendet wird, muss der Richtlinieneigentümer die OWNERSHIP-Berechtigung für die UDF oder die externe Funktion haben. Benutzer, die eine Spalte abfragen, auf die eine bedingte Maskierungsrichtlinie angewendet wird, benötigen keine USAGE-Berechtigung für die UDF oder externe Funktion.

Kontextfunktionen im body der Richtlinie:

Wenn die Richtlinie die Funktion CURRENT_DATABASE oder CURRENT_SCHEMA aufruft, ergibt die Funktion die Datenbank oder das Schema, in der/dem die geschützte Tabelle oder Ansicht enthalten ist, und nicht die Datenbank oder das Schema für die Sitzung, die Sie mit einem USE <Objekt>-Befehl angeben oder mit der Kontextauswahl in Snowsight auswählen.

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

Standard: Kein Wert

UNSET ...

Gibt eine oder mehrere Eigenschaften und/oder Parameter an, deren Einstellung für die Maskierungsrichtlinie wieder aufgehoben werden sollen, wodurch sie auf die 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

Maskierungsrichtlinie

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.

Weitere Informationen zur DDL und zu Berechtigungen von Maskierungsrichtlinien finden Sie unter Verwalten der Sicherheit auf Spaltenebene.

Nutzungshinweise

  • Wenn Sie eine bestehende Maskierungsrichtlinie aktualisieren möchten und dazu die aktuelle Definition der Richtlinie anzeigen müssen, können Sie die Funktion GET_DDL aufrufen oder den Befehl DESCRIBE MASKING POLICY ausführen.

  • Sie können die Richtliniensignatur (d. h. den Argumentnamen oder den Eingabe-/Ausgabedatentyp) nicht ändern. Wenn Sie die Signatur ändern müssen, führen Sie eine DROP MASKING POLICY-Anweisung für die Richtlinie aus, und erstellen Sie eine neue Richtlinie.

  • Bevor Sie eine ALTER-Anweisung ausführen, können Sie mithilfe der DESCRIBE MASKING POLICY-Anweisung den Argumentnamen ermitteln, der zum Aktualisieren der Richtlinie verwendet werden soll.

  • Verwenden Sie bei Maskierungsrichtlinien, die im Maskierungsrichtlinientext eine Unterabfrage enthalten, in der WHEN-Klausel ein EXISTS. Ein repräsentatives Beispiel ist im Beispiel für eine kundenspezifische Berechtigungstabelle im Abschnitt „Beispiele“ unter CREATE MASKING POLICY zu finden.

  • Das Hinzufügen einer Maskierungsrichtlinie zu einer Spalte schlägt fehl, wenn die Spalte von einer Zeilenzugriffsrichtlinie referenziert wird. Weitere Informationen dazu finden Sie unter ALTER ROW ACCESS POLICY.

  • Wenn Sie eine UDF in einer Maskierungsrichtlinie verwenden, stellen Sie sicher, dass die Datentypen von UDF-Spalte und Maskierungsrichtlinie übereinstimmen. Weitere Informationen dazu finden Sie unter Benutzerdefinierte Funktionen in einer Maskierungsrichtlinie.

  • 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

Im folgenden Beispiel wird die Maskierungsrichtlinie aktualisiert, um einen SHA-512-Hash zu verwenden. Benutzern ohne die Rolle ANALYST wird der Wert als SHA-512-Hash angezeigt, Benutzern mit der Rolle ANALYST dagegen der Klartextwert.

DESCRIBE MASKING POLICY email_mask;
Copy
+-----+------------+---------------+-------------------+-----------------------------------------------------------------------+
| Row | name       | signature     | return_type       | body                                                                  |
+-----+------------+---------------+-------------------+-----------------------------------------------------------------------+
| 1   | EMAIL_MASK | (VAL VARCHAR) | VARCHAR(16777216) | case when current_role() in ('ANALYST') then val else '*********' end |
+-----+------------+---------------+-------------------+-----------------------------------------------------------------------+
ALTER MASKING POLICY email_mask SET BODY ->
  CASE
    WHEN current_role() IN ('ANALYST') THEN VAL
    ELSE sha2(val, 512)
  END;
Copy