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:

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;
Copy

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;
Copy

Weitere Informationen zum Snowflake-Berechtigungsmodell finden Sie unter Übersicht zur Zugriffssteuerung und Zugriffssteuerungsrechte.

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 CREATE DYNAMIC TABLE ... INITIALIZE = ON_SCHEDULE mit einer Sekundärrolle ausführen können, die über die Berechtigung USAGE verfügt, wird die dynamische Tabelle nicht erfolgreich aktualisiert, wenn die primäre Rolle nicht über diese Berechtigung verfügt, und daher nicht initialisiert.

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:

Wenn Sie die Berechtigung OWNERSHIP für eine dynamische Tabelle haben, können Sie zusätzlich zu den oben aufgeführten Operationen Folgendes tun:

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_on und suspend_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.