Zugriffssteuerung für dynamische Tabellen¶
Unter diesem Thema werden die Berechtigungen beschrieben, die Sie benötigen, um Operationen mit dynamischen Tabellen durchzuführen, z. B. Erstellen, Abfragen, Ändern, Anzeigen und Löschen.
Weitere Informationen zum Snowflake-Berechtigungsmodell finden Sie unter Übersicht zur Zugriffssteuerung und Zugriffssteuerungsrechte.
Eigentümerschaft übertragen¶
Um einem Benutzer vollen Zugriff auf eine dynamische Tabelle zu gewähren, können Sie eine der folgenden Möglichkeiten nutzen:
Einer Rolle die Berechtigung OWNERSHIP für die dynamische Tabelle zuweisen.
Einer Rolle alle Berechtigung außer OWNERSHIP für eine dynamische Tabelle zuweisen.
Achten Sie bei der Zuweisung von Berechtigungen darauf, dass Sie als Objekttyp DYNAMIC TABLE angeben, da dynamische Tabellen andere Berechtigungen haben als normale Tabellen.
Um die Berechtigung OWNERSHIP für dynamische Tabellen zu erteilen, stellen Sie sicher, dass die empfangende Rolle über die Berechtigung USAGE für Folgendes verfügt. Andernfalls schlagen nachfolgende geplante Aktualisierungen fehl.
Die Datenbank und das Schema, das die dynamische Tabelle enthält.
Das Warehouse, das zur Aktualisierung der Tabelle verwendet wird.
Um die Eigentümerschaft an einer dynamischen Tabelle zu übertragen, können Sie entweder den Befehl GRANT OWNERSHIP oder Snowsight verwenden.
Im folgenden Beispiel wird der Befehl GRANT OWNERSHIP verwendet, um der Rolle budget_admin die Eigentumsberechtigung für my_dynamic_table zu erteilen.
GRANT OWNERSHIP ON DYNAMIC TABLE my_dynamic_table TO ROLE budget_admin;
Im folgenden Beispiel wird der Befehl GRANT OWNERSHIP verwendet, um der Rolle budget_admin die Eigentumsberechtigung für alle zukünftigen dynamischen Tabellen zu erteilen, die im Schema mydb.myschema erstellt werden.
GRANT OWNERSHIP ON FUTURE DYNAMIC TABLES IN SCHEMA mydb.myschema TO ROLE budget_admin;
Melden Sie sich bei Snowsight an.
Wählen Sie im Navigationsmenü die Option Transformation » Dynamic tables aus.
Suchen Sie Ihre dynamische Tabelle in der Liste, und wählen Sie dann
» Transfer Ownership aus.Wählen Sie die Rolle, auf die Sie die Eigentümerschaft übertragen möchten.
Weitere Informationen zum Snowflake-Berechtigungsmodell finden Sie unter Übersicht zur Zugriffssteuerung und Zugriffssteuerungsrechte.
Aktualisieren dynamischer Tabellen mit bestimmten Benutzerberechtigungen und Sekundärrollen¶
Sie können dynamische Tabellen so konfigurieren, dass sie neben den Berechtigungen der Eigentümerrolle mit den Berechtigungen eines bestimmten Benutzenden aktualisiert werden können. Dynamische Tabellen, die EXECUTE AS USER angeben, werden im Namen des benannten Benutzenden und nicht vom Systembenutzenden ausgeführt.
Sie können zum Beispiel einem Benutzenden eine Primärrolle zuweisen, die Zugriff auf eine Tabelle ermöglicht, und einer Sekundärrolle, die Zugriff auf ein virtuelles Warehouse ermöglicht. Der Benutzende kann dann eine dynamische Tabelle erstellen, die mit den kombinierten Berechtigungen beider Rollen arbeitet, was die Verwaltung von Berechtigungen vereinfacht und die Flexibilität Ihrer Datenoperationen verbessert.
Während die Option EXECUTEASUSER das Aktualisieren dynamischer Tabellen unter der Rolle des Benutzenden ermöglicht, unterliegen alle anderen Vorgänge für diese dynamischen Tabellen dem Standardberechtigungsmodell.
Wichtige Anwendungsfälle¶
Berechtigungen mit mehreren Rollen verwalten: In Situationen, in denen Benutzende Sekundärrollen haben, können sie mit den kombinierten Berechtigungen ihrer Primär- und Sekundärrollen eine dynamische Tabelle erstellen und aktualisieren. Diese Konfiguration stellt sicher, dass der Benutzende, der die dynamische Tabelle aktualisiert, über die erforderlichen Berechtigungen verfügt, um auf alle erforderlichen Ressourcen zuzugreifen, während die Konsistenz mit bestehenden rollenbasierten Zugriffssteuerungen erhalten bleibt.
Detaillierte Sicherheits- und Governance-Kontrollen: Benutzende können optionale Sicherheitsmaßnahmen mit zusätzlichen Optionen wie REQUIREUSER konfigurieren, wobei eine dynamische Tabelle nur ausgeführt werden kann, wenn ein Benutzender angegeben ist.
Verantwortung für alle Vorgänge: Alle Aktualisierungen für eine dynamische Tabelle des Typs EXECUTEASUSER werden dem konfigurierten Benutzenden zugeordnet und nicht demSYSTEM-Benutzenden. Diese Zuordnung hilft, einen klaren Prüfpfad für alle Vorgänge zu erhalten.
Zugriffssteuerung¶
Die Eigentümerrolle der dynamischen Tabelle muss die IMPERSONATE-Berechtigung für den durch EXECUTE AS USER angegebenen Benutzenden haben, und dem angegebenen Benutzenden muss die Eigentümerrolle der dynamischen Tabelle zugewiesen sein. Wenn die IMPERSONATE-Berechtigung widerrufen wird, schlägt die Aktualisierung der dynamischen Tabelle fehl und die dynamische Tabelle könnte :ref:` automatisch angehalten werden<label-dynamic_tables_manage_understanidng_auto_suspend>`.
Wenn die dynamische Tabelle aktualisiert wird, ist die Primärrolle der Aktualisierungssitzung die Eigentümerrolle der dynamischen Tabelle und die Standard-Sekundärrollen des Benutzenden sind aktiviert. Benutzende können die Primärrollen mit dem Befehl USEROLE wechseln und die Sekundärrollen in der Aufgabensitzung mit dem Befehl USE SECONDARYROLES anpassen.
Produktübergreifende Hinweise¶
Datenmaskierungs- und Zeilenzugriffsrichtlinien: Richtlinien – z. B. solche, die CURRENT_USER() verwenden – bewerten anhand des angegebenen Benutzenden und der angegebenen Rollen und nicht anhand des SYSTEM-Benutzenden.
Replikation und Failover: Der Benutzername und der Rollenname werden in die sekundären Bereitstellungen repliziert.
Wenn ein Benutzender oder eine Rolle in der sekundären Bereitstellung nicht verfügbar ist, wird der Benutzer als INVALID markiert und Aktualisierungen schlagen fehl, bis das Problem behoben ist.
Ungültige Sekundärrollen werden bei der Ausführung übersprungen, wenn die verbleibenden Rollen ausreichende Berechtigungen bieten.
Beispiele¶
Konfigurieren einer dynamische Tabelle zum Ausführen von Aktualisierungen als Benutzender¶
Im folgenden Beispiel wird eine dynamische Tabelle erstellt, die Aktualisierungen als der angegebene Benutzende ausführt, wobei die Primärrolle auf die Eigentümerrolle der dynamischen Tabelle festgelegt ist. Aktualisierungen werden mit allen Parametern für die Benutzerherkunft ausgeführt, die der Benutzende angegeben hat.
Wenn keine Option für Sekundärrollen explizit angegeben ist, wird bei der Aktualisierung standardmäßig die aktuelle Sitzungseinstellung des Benutzenden verwendet.
CREATE DYNAMIC TABLE my_dynamic_table
[ EXECUTE AS USER my_user_name
[ USE SECONDARY ROLES { ALL | NONE | (<role1>, <role2>, ... ) } ]
]
Festlegen einer Sekundärrolle für eine bestehende dynamische Tabelle¶
Im folgenden Beispiel wird eine dynamische Tabelle so konfiguriert, dass sie als der angegebene Benutzende ausgeführt wird. Wenn keine bestimmten Sekundärrollen ausgewählt sind, wird beim Aktualisierungsprozess standardmäßig die aktiven Sekundärrollen der aktuellen Sitzung verwendet. Wenn die dynamische Tabelle bereits so eingestellt ist, dass sie als ein bestimmter Benutzender ausgeführt wird, aktualisiert dieser Befehl die Konfiguration, um als der Benutzende ausgeführt zu werden, der den Befehl ALTERDYNAMICTABLE ausführt.
Zum Ausführen dieses Befehls ist die OWNERSHIP-Berechtigung für die dynamische Tabelle erforderlich.
ALTER DYNAMIC TABLE my_dynamic_table SET
EXECUTE AS USER my_user_name
[ USE SECONDARY ROLES { ALL | NONE | (<role1>, <role2>, ... ) } ]
Zurücksetzen einer dynamischen Tabelle, damit Sie als SYSTEM-Benutzender ausgeführt wird¶
Im folgenden Beispiel wird eine dynamische Tabelle so zurückgesetzt, dass sie unter dem SYSTEM-Benutzenden ausgeführt wird, wobei die Eigentümerrolle der dynamischen Tabelle genutzt wird.
Zum Ausführen dieses Befehls ist die OWNERSHIP-Berechtigung für die dynamische Tabelle erforderlich.
ALTER DYNAMIC TABLE my_dynamic_table UNSET EXECUTE AS USER;
Berechtigungen zum Erstellen einer dynamischen Tabelle¶
Um eine dynamische Tabelle zu erstellen, müssen Sie eine Rolle verwenden, die über die folgenden Berechtigungen verfügt:
Berechtigung |
Objekt |
|---|---|
CREATE DYNAMIC TABLE |
Schema, in dem die dynamische Tabelle erstellt werden soll. |
SELECT |
Vorhandene Tabellen und Ansichten, die Sie für die dynamische Tabelle abfragen möchten. |
USAGE |
Datenbank und Schema, die Sie für die neue dynamische Tabelle verwenden möchten. Warehouse, das zum Aktualisieren der Tabelle verwendet werden soll. Bemerkung Obwohl Sie |
Um eine dynamische Tabelle zu erstellen, die von einer anderen dynamischen Tabelle abhängt, müssen Sie eine Rolle verwenden, die über die folgenden Berechtigungen verfügt:
Berechtigung |
Objekt |
|---|---|
SELECT |
Dynamische Tabelle, die Sie abfragen möchten, um die neue dynamische Tabelle zu erstellen. |
OPERATE |
Alle vorgelagerten dynamischen Tabellen, von denen die neue dynamische Tabelle abhängt. Nur erforderlich, wenn Sie die dynamische Tabelle so einstellen, dass sie beim Erstellen synchron aktualisiert wird. |
Berechtigungen zum Abfragen einer dynamischen Tabelle¶
Um eine dynamische Tabelle abzufragen, können Sie eine Rolle verwenden, die über die Berechtigungen zum Erstellen einer dynamischen Tabelle verfügt. In Szenarios, bei denen ein Benutzer, wie z. B. ein Datenanalyst, nur eine dynamische Tabelle abfragen muss, verwenden Sie eine Rolle mit den folgenden Berechtigungen:
Berechtigung |
Objekt |
|---|---|
USAGE |
Datenbank und Schema, die die dynamische Tabelle enthalten. Warehouse, das zur Ausführung der Abfrage verwendet wird |
SELECT |
Die abgefragte dynamische Tabelle. |
Berechtigungen zum Ändern einer dynamischen Tabelle¶
Um eine dynamische Tabelle zu ändern, müssen Sie eine Rolle verwenden, die über die OWNERSHIP- oder die OPERATE-Berechtigung für diese dynamische Tabelle verfügt.
Wenn Sie die Berechtigung OPERATE für eine dynamische Tabelle haben, können Sie mit dem Befehl ALTER DYNAMIC TABLE Folgendes tun:
Anhalten einer dynamischen Tabelle mit ALTER … SUSPEND
Fortsetzen einer dynamischen Tabelle mit ALTER … RESUME
Aktualisieren einer dynamischen Tabelle mit ALTER … REFRESH
Einstellen oder Ändern des Warehouses und/oder der Zielverzögerung mit ALTER … SET.
Wenn Sie die Berechtigung OWNERSHIP für eine dynamische Tabelle haben, können Sie zusätzlich zu den oben aufgeführten Operationen Folgendes tun:
einen Kommentar mit ALTER … SET | UNSET COMMENT setzen oder löschen
eine dynamische Tabelle mit ALTER … RENAME TO umbenennen
eine dynamische Tabelle mit ALTER … SWAP WITH gegen eine andere austauschen
mit ALTER … SET einen neuen Parameter festlegen
Gruppierungsschlüsse angeben oder löschen Siehe Clustering-Aktionen (clusteringAction).
Governance-Richtlinien ändern. Siehe Data-Governance-Richtlinie und Tag-Aktionen (dataGovnPolicyTagAction).
Suchoptimierung ändern. Siehe Suchoptimierungsaktionen (searchOptimizationAction).
Berechtigung zum Anzeigen der Metadaten einer dynamischen Tabelle¶
Um Metadaten anzuzeigen, müssen Sie eine Rolle verwenden, die über die Berechtigung MONITOR für diese dynamische Tabelle verfügt.
Für Szenarios, in denen der Benutzer nur die Metadaten und das Information Schema einer dynamischen Tabelle einsehen muss (z. B. Rollen für Data Scientists), verwenden Sie eine Rolle, die über die Berechtigung MONITOR für diese dynamische Tabelle verfügt. Die Berechtigung OPERATE gewährt ebenfalls diesen Zugriff, bietet aber auch die Fähigkeit, dynamische Tabellen zu ändern. MONITOR ist daher die geeignetere Option in Szenarios ist, in denen ein Benutzer eine dynamische Tabelle nicht ändern muss.
Wenn Sie die Berechtigung MONITOR für eine dynamische Tabelle haben, können Sie Folgendes tun:
Verwenden des Befehls DESCRIBE DYNAMIC TABLE und der Snowsight-Detailseite für dynamische Tabellen, um die spezifischen Details einer dynamischen Tabelle anzuzeigen. Die folgenden Felder werden ausgeblendet, wenn Sie nur über die SELECT-Berechtigung für eine dynamische Tabelle verfügen:
text,warehouse,scheduling_state,last_suspended_onundsuspend_reason_code(nur UI).Verwenden des Befehls SHOW DYNAMIC TABLES, um zu ermitteln, auf welche dynamischen Tabellen Sie Zugriff haben.
Rufen Sie die DYNAMIC_TABLE_GRAPH_HISTORY Funktionstabelle auf, um den Task-Graph-Verlauf anzuzeigen.
Rufen Sie die Tabellenfunktion DYNAMIC_TABLE_REFRESH_HISTORY auf, um den Aktualisierungsverlauf anzuzeigen.
Berechtigungen zum Löschen einer dynamischen Tabelle¶
Um eine dynamische Tabelle zu löschen, müssen Sie eine Rolle verwenden, die über die Berechtigung OWNERSHIP für diese dynamische Tabelle verfügt.
Berechtigungen zur Verwendung von doppelten Warehouses¶
Alle Berechtigungsanforderungen für die Verwendung von INITIALIZATION_WAREHOUSE sind die gleichen wie für WAREHOUSE.
Operation |
Berechtigung |
|---|---|
CREATE DYNAMIC TABLE mit INITIALIZATION_WAREHOUSE |
CREATE DYNAMIC TABLE und USAGE für beide Warehouses, WAREHOUSE und INITIALIZATION_WAREHOUSE. |
ALTER DYNAMIC TABLE … SET / UNSET INITIALIZATION_WAREHOUSE |
OWNERSHIP oder OPERATE für die dynamische Tabelle und USAGE für das entsprechende Warehouse. |
ALTER DYNAMIC TABLE … REFRESH für eine dynamische Tabelle, die INITIALIZATION_WAREHOUSE verwendet. |
OPERATE für die dynamische Tabelle und USAGE für das entsprechende Warehouse. |
Weitere Informationen dazu finden Sie unter Erläuterungen zur Nutzung von Warehouses für dynamische Tabellen.