ALTER ROW ACCESS POLICY¶
Ändert die Eigenschaften einer vorhandenen Zeilenzugriffsrichtlinie, einschließlich der Umbenennung der Richtlinie oder des Ersetzens der Richtlinienregeln.
Alle an den Richtlinienregeln vorgenommenen Änderungen werden bei Ausführung der nächsten SQL-Abfrage wirksam, die die Zeilenzugriffsrichtlinie verwendet.
- Siehe auch:
Syntax¶
ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> SET BODY -> <expression_on_arg_name>
ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'
ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> UNSET COMMENT
Parameter¶
name
Bezeichner für die Zeilenzugriffsrichtlinie. 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 neuen Bezeichner für die Zeilenzugriffsrichtlinie an, der für Ihr Schema eindeutig sein muss. Der neue Bezeichner kann nicht verwendet werden, wenn er bereits für eine andere Zeilenzugriffsrichtlinie verwendet wurde.
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 Formatdb_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 Zeilenzugriffsrichtlinie festgelegt werden sollen:
BODY -> expression_on_arg_name
SQL-Ausdruck, der die Daten filtert.
Der Ausdruck kann Funktionen für bedingte Ausdrücke enthalten, um bedingte Logik, integrierte Funktionen oder UDFs zur Datentransformation darzustellen.
Wenn eine UDF oder externe Funktion innerhalb des Richtlinientextes der Zeilenzugriffsrichtlinie verwendet wird, muss der Richtlinieneigentümer die OWNERSHIP-Berechtigung für die UDF oder die externe Funktion haben. Benutzer, die ein Datenbankobjekt abfragen, auf die eine Zeilenzugriffsrichtlinie angewendet wurde, müssen keine USAGE-Berechtigung für die UDF oder die externe Funktion haben.
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 |
Zeilenzugriffsrichtlinie |
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 Zeilenzugriffsrichtlinien finden Sie unter Zeilenzugriffsrichtlinien verwalten.
Nutzungshinweise¶
Wenn Sie eine bestehende Zeilenzugriffsrichtlinie 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 ROW ACCESS POLICY ausführen.
Sie können die Richtliniensignatur (d. h. den Argumentnamen oder den Eingabe-/Ausgabedatentyp) nicht ändern. In ähnlicher Weise wird die Verwendung von
CREATE OR REPLACE ROW ACCESS POLICY
nicht unterstützt, wenn die Richtlinie an eine Tabelle oder Ansicht angehängt ist. Wenn Sie die Signatur ändern müssen, führen Sie eine DROP ROW ACCESS POLICY-Anweisung für die Richtlinie aus, und erstellen Sie dann eine neue Zeilenzugriffsrichtlinie.Bevor Sie eine ALTER-Anweisung ausführen, können Sie mithilfe der DESCRIBE ROW ACCESS POLICY-Anweisung den Argumentnamen ermitteln, der zum Aktualisieren der Richtlinie verwendet werden soll.
Das Einfügen einer oder mehrerer Unterabfragen in den Richtlinientext kann zu Fehlern führen. Wenn möglich, begrenzen Sie die Anzahl der Unterabfragen, begrenzen Sie die Anzahl der JOIN-Operationen, und vereinfachen Sie die Bedingungen der WHERE-Klausel.
Wenn der
body
der Richtlinie ein Lookup auf einer Zuordnungstabelle enthält, erstellen Sie eine zentralisierte Zuordnungstabelle, und speichern Sie die Zuordnungstabelle in derselben Datenbank wie die geschützte Tabelle. Dies ist besonders wichtig, wennbody
die Funktion IS_DATABASE_ROLE_IN_SESSION aufruft. Weitere Informationen dazu finden Sie in den Nutzungshinweisen.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¶
Das folgende Beispiel aktualisiert die Zeilenzugriffsrichtlinie.
DESC ROW ACCESS POLICY rap_table_employee_info;
+-------------------------+-------------+-------------+------+
| name | signature | return_type | body |
+-------------------------+-------------+-------------+------+
| rap_table_employee_info | (V VARCHAR) | BOOLEAN | true |
+-------------------------+-------------+-------------+------+
ALTER ROW ACCESS POLICY rap_table_employee_info SET BODY -> false;