Verwalten von Sitzungsrichtlinien¶
Unter diesem Thema werden Snowflake-Sitzungen und Sitzungsrichtlinien beschrieben sowie eine Anleitung zum Konfigurieren von Sitzungsrichtlinien auf Konto- oder Benutzerebene bereitgestellt.
Berechtigungen von Sitzungsrichtlinien¶
Snowflake unterstützt die folgenden Berechtigungen für Sitzungsrichtlinien, um zu bestimmen, ob Benutzer Sitzungsrichtlinien erstellen, festlegen und besitzen können.
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.
Berechtigung |
Verwendung |
---|---|
CREATE SESSION POLICY |
Ermöglicht das Erstellen einer neuen Sitzungsrichtlinie in einem Schema. |
APPLY SESSION POLICY |
Ermöglicht die Anwendung einer Sitzungsrichtlinie auf Konto- oder Benutzerebene. |
OWNERSHIP |
Gewährt volle Kontrolle über die Sitzungsrichtlinie. Erforderlich, um die meisten Eigenschaften einer Sitzungsrichtlinie zu ändern. |
Übersicht der Befehle, Operationen und Berechtigungen¶
In der folgenden Tabelle wird die Beziehung zwischen den DDL-Operationen für Sitzungsrichtlinien und den dafür erforderlichen Berechtigungen zusammengefasst.
Operation |
Erforderliche Berechtigung |
---|---|
Sitzungsrichtlinie erstellen |
Eine Rolle mit CREATESESSIONPOLICY-Berechtigung für das Schema. |
Sitzungsrichtlinie ändern |
Eine Rolle mit OWNERSHIP-Berechtigung für die Sitzungsrichtlinie. |
Sitzungsrichtlinie löschen |
Eine Rolle mit OWNERSHIP-Berechtigung für die Sitzungsrichtlinie. |
Sitzungsrichtlinie beschreiben |
Eine Rolle mit OWNERSHIP-Berechtigung für die Sitzungsrichtlinie oder . mit APPLY SESSION POLICY-Berechtigung für das Konto. |
Sitzungsrichtlinien anzeigen |
Eine Rolle mit OWNERSHIP-Berechtigung für die Sitzungsrichtlinie oder . mit APPLY SESSION POLICY-Berechtigung für das Konto. |
Sitzungsrichtlinie festlegen/aufheben |
Bei Konten eine Rolle mit der Berechtigung APPLY SESSION POLICY für das Konto und der Berechtigung OWNERSHIP für die Sitzungsrichtlinie oder eine Rolle mit der Berechtigung APPLY SESSION POLICY für das Konto und der Berechtigung APPLY ON SESSION POLICY für eine bestimmte Sitzungsrichtlinie. Bei Benutzern eine Rolle mit der Berechtigung APPLY SESSION POLICY ON USER <Name_des_Benutzers>. |
Übersicht zu DDL für Sitzungsrichtlinien¶
Snowflake bietet die folgenden DDL-Befehle zum Verwalten von Sitzungsrichtlinienobjekten:
Um eine Sitzungsrichtlinie für das Konto festzulegen oder aufzuheben, führen Sie den Befehl ALTER ACCOUNT wie unten gezeigt aus.
ALTER ACCOUNT SET SESSION POLICY mydb.policies.session_policy_prod_1;ALTER ACCOUNT UNSET SESSION POLICY;
Um eine Sitzungsrichtlinie auf Benutzerebene festzulegen oder aufzuheben, führen Sie den Befehl ALTER USER wie unten gezeigt aus.
ALTER USER jsmith SET SESSION POLICY mydb.policies.session_policy_prod_1_jsmith;ALTER USER jsmith UNSET SESSION POLICY;
Sitzungsrichtlinien prüfen¶
Sie können die Ansicht Ansicht SESSION_POLICIES abfragen, um eine Zeile für jede Sitzungsrichtlinie und deren Metadaten in Ihrem Snowflake-Konto zurückzugeben.
Verwenden Sie die Information Funktion POLICY_REFERENCES, um eine Zeile für jeden Benutzer zurückzugeben, der der angegebenen Sitzungsrichtlinie zugeordnet ist, und eine Zeile für die dem Snowflake-Konto zugeordnete Sitzungsrichtlinie.
Derzeit wird nur die folgende Syntax für Sitzungsrichtlinien unterstützt:
POLICY_REFERENCES( POLICY_NAME => '<session_policy_name>' )
Wobei
session_policy_name
der vollqualifizierte Name der Sitzungsrichtlinie ist.Führen Sie zum Beispiel die folgende Abfrage aus, um eine Zeile für jeden Benutzer zurückzugeben, dem die Sitzungsrichtlinie mit dem Namen
session_policy_prod_1
zugewiesen ist, die in der Datenbank mit dem Namenmy_db
und dem Schema mit dem Namenmy_schema
gespeichert ist:SELECT * FROM TABLE( my_db.INFORMATION_SCHEMA.POLICY_REFERENCES( POLICY_NAME => 'my_db.my_schema.session_policy_prod_1' ));
Problembehandlung für Sitzungsrichtlinien¶
Wenn einem Konto oder einem Benutzer eine Sitzungsrichtlinie zugewiesen ist und die Datenbank oder das Schema, die bzw. das die Sitzungsrichtlinie enthält, gelöscht wird, und dann dem Konto oder dem Benutzer eine neue Sitzungsrichtlinie zugewiesen wird, ist der Benutzer nicht an das Sitzungstimeout nach Leerlauf der neuen Sitzungsrichtlinie gebunden.
Die Problemumgehung besteht darin, die ursprüngliche Sitzungsrichtlinie rückgängig zu machen: bei einem Konto mit dem ALTER ACCOUNT-Befehl und bei einem Benutzer mit dem ALTER USER-Befehl, wie unter diesem Thema gezeigt.
In der folgenden Tabelle sind einige Fehlermeldungen zusammengefasst, die bei Sitzungsrichtlinien auftreten können.
Verhalten
Fehlermeldung
Problembehandlung
Sitzungsrichtlinie kann nicht erstellt werden.
Cannot perform CREATE SESSION POLICY. This session does not have a current database. Call ‚USE DATABASE‘, or use a qualified name.
Geben Sie vor der Ausführung von CREATE SESSION POLICY eine Datenbank an, oder verwenden Sie in der Anweisung CREATE SESSION POLICY den vollqualifizierten Objektnamen.
Sitzungsrichtlinie kann nicht erstellt werden.
SQL access control error: Insufficient privileges to operate on schema ‚<Name_des_Schemas>‘
Überprüfen Sie, ob die Rolle, die die Anweisung CREATE SESSION POLICY-Anweisung ausführt, Berechtigung CREATE SESSION POLICY ON SCHEMA.
Sitzungsrichtlinie kann nicht erstellt werden.
SQL compilation error: Database ‚<Name_der_Datenbank>‘ does not exist or not authorized.
Überprüfen Sie, ob die Datenbank vorhanden ist und die Rolle, die die CREATE SESSION POLICY-Anweisung ausführt, die USAGE-Berechtigung für das Schema hat, in dem die Sitzungsrichtlinie vorhanden sein soll.
DESCRIBE-Anweisung kann nicht ausgeführt werden.
SQL compilation error: Schema ‚<Name_des_Schemas>‘ does not exist or not authorized.
Überprüfen Sie, ob die Rolle, die die DESC SESSION POLICY-Anweisung ausführt, die OWNERSHIP-Berechtigung für die Sitzungsrichtlinie oder die APPLY-Berechtigung für die Sitzungsrichtlinie hat.
Sitzungsrichtlinie kann nicht gelöscht werden.
SQL compilation error: Session policy ‚<Name_der_Richtlinie>‘ does not exist or not authorized.
Überprüfen Sie, ob die Rolle, die die DROP SESSION POLICY-Anweisung ausführt, die Berechtigung OWNERSHIP für die Sitzungsrichtlinie hat.
Sitzungsrichtlinie kann nicht gelöscht werden.
Session policy <Name_der_Richtlinie> cannot be dropped because it is attached to an account.
Heben Sie die Sitzungsrichtlinie für das Konto mit einer ALTER ACCOUNT-Anweisung auf, und führen Sie die Drop-Anweisung erneut aus.
Sitzungsrichtlinie kann für Konto nicht festgelegt werden.
Session policy ‚<Name_der_Richtlinie> is already attached to account <Name_des_Kontos>.
Ein Konto kann nur eine aktive Sitzungsrichtlinie haben. Bestimmen Sie, welche Sitzungsrichtlinie für das Konto festgelegt werden soll. . Falls erforderlich, heben Sie die aktuelle Sitzungsrichtlinie für das Konto mit einem ALTER ACCOUNT-Befehl auf, und legen Sie dann die andere Sitzungsrichtlinie für das Konto mit einem weiteren ALTER ACCOUNT-Befehl fest.
Timeout-Wert kann nicht festgelegt werden.
SQL compilation error: invalid value ‚<Ganzzahl>‘ for property ‚session_idle_timeout_mins‘
Der Wert für das Sitzungstimeout in Minuten muss eine ganze Zahl zwischen
5
und240
(einschließlich) sein. . Wählen Sie eine gültige Ganzzahl für das Sitzungstimeout, und führen Sie die Anweisung CREATE OR ALTER SESSION POLICY erneut aus.Bestehende Sitzungsrichtlinie kann nicht aktualisiert werden.
SQL compilation error: Session policy ‚<Name_der_Richtlinie>‘ does not exist or not authorized.
Überprüfen Sie den Namen der Sitzungsrichtlinie, die Syntax des ALTER SESSION POLICY-Befehls und die Berechtigungen zum Bearbeiten der Sitzungsrichtlinie, der Datenbank und des Schemas.