Sitzungsrichtlinien verwenden¶
Unter diesem Thema finden Sie Beispiele für die Verwendung von Sitzungsrichtlinien.
Standard-Sitzungsrichtlinie¶
Die folgenden Schritte sind eine repräsentative Anleitung zum Erstellen einer Sitzungsrichtlinie und zum Festlegen der Sitzungsrichtlinie für ein Konto oder einen Benutzer.
Bei diesen Schritten wird von einem zentralen Verwaltungsansatz ausgegangen, bei dem eine kundenspezifische Rolle mit dem Namen policy_admin
Eigentümer der Sitzungsrichtlinie ist (d. h. die Berechtigung OWNERSHIP für die Sitzungsrichtlinie hat) und für die Festlegung der Sitzungsrichtlinie für ein Konto oder einen Benutzer verantwortlich ist (d. h. die Berechtigung APPLY SESSION POLICY ON ACCOUNT oder die Berechtigung APPLY SESSION POLICY ON USER hat).
Bemerkung
Um eine Richtlinie für ein Konto festzulegen, muss die kundenspezifische Rolle policy_admin
über die folgenden Berechtigungen verfügen:
USAGE für Datenbank und Schema, die die Sitzungsrichtlinie enthalten
CREATE SESSION POLICY für das Schema, das die Sitzungsrichtlinie enthält
Gehen Sie folgendermaßen vor, um eine Sitzungsrichtlinie zu implementieren.
Erstellen Sie eine kundenspezifische Rolle, mit der Benutzer Sitzungsrichtlinien erstellen und verwalten können. In diesem Beispiel ist die kundenspezifische Rolle
policy_admin
, obwohl die Rolle einen beliebigen passenden Namen haben könnte.Wenn die kundenspezifische Rolle bereits vorhanden ist, fahren Sie mit dem nächsten Schritt fort.
Erstellen Sie andernfalls die kundenspezifische Rolle
policy_admin
.USE ROLE USERADMIN; CREATE ROLE policy_admin;
Erteilen Sie der kundenspezifischen Rolle Berechtigungen.
Wenn die kundenspezifische Rolle
policy_admin
nicht bereits über die folgenden Berechtigungen verfügt, weisen Sie ihr folgende Berechtigungen zu:USAGE für Datenbank und Schema, die die Sitzungsrichtlinie enthalten wird
CREATE SESSION POLICY für das Schema, das die Sitzungsrichtlinie enthalten wird
APPLY SESSION POLICY für das Konto
APPLY SESSION POLICY für jeden Benutzer, wenn Sitzungsrichtlinien auf Benutzerebene eingerichtet werden sollen
USE ROLE SECURITYADMIN; GRANT USAGE ON DATABASE mydb TO ROLE policy_admin; GRANT USAGE, CREATE SESSION POLICY ON SCHEMA mydb.policies TO ROLE policy_admin; GRANT APPLY SESSION POLICY ON ACCOUNT TO ROLE policy_admin;
Wenn Sie eine Sitzungsrichtlinie mit einem einzelnen Benutzer verknüpfen:
GRANT APPLY SESSION POLICY ON USER jsmith TO ROLE policy_admin;
Weitere Informationen dazu finden Sie unter Übersicht der Befehle, Operationen und Berechtigungen.
Erstellen Sie eine neue Sitzungsrichtlinie.
USE ROLE policy_admin; CREATE SESSION POLICY mydb.policies.session_policy_prod_1 SESSION_IDLE_TIMEOUT_MINS = 30 SESSION_UI_IDLE_TIMEOUT_MINS = 30 COMMENT = 'Session policy for the prod_1 environment';
Weitere Informationen dazu finden Sie unter CREATE SESSION POLICY.
Legen Sie die Sitzungsrichtlinie für das Konto mit dem Befehl ALTER ACCOUNT oder für einen Benutzer mit dem Befehl ALTER USER fest.
USE ROLE policy_admin; ALTER ACCOUNT SET SESSION POLICY mydb.policies.session_policy_prod_1; ALTER USER jsmith SET SESSION POLICY my_database.my_schema.session_policy_prod_1;
Wichtig
Um eine Sitzungsrichtlinie zu ersetzen, die bereits für ein Konto oder einen Benutzer festgelegt ist, heben Sie zuerst die Sitzungsrichtlinie auf, und legen Sie dann die neue Sitzungsrichtlinie für das Konto oder den Benutzer fest. Beispiel:
ALTER ACCOUNT UNSET session policy; ALTER ACCOUNT SET SESSION POLICY mydb.policies.session_policy_prod_2;
Sekundärrollen in einer Sitzungsrichtlinie festlegen¶
In den folgenden Abschnitten erfahren Sie, wie Sie Sekundärrollen in einer Sitzungsrichtlinie angeben:
Weitere Informationen über Sekundärrollen in einer Sitzungsrichtlinie finden Sie unter Sekundärrollen in einer Sitzungsrichtlinie
Eigenschaft in einer Sitzungsrichtlinie festlegen¶
Der Sicherheitsadminstrator kann eine neue Sitzungsrichtlinie erstellen oder eine bestehende Sitzungsrichtlinie ändern, um die Eigenschaft ALLOWED_SECONDARY_ROLES
festzulegen. Beispiel:
Erstellen Sie eine neue Sitzungsrichtlinie, um alle Sekundärrollen zuzulassen:
CREATE OR REPLACE SESSION POLICY prod_env_session_policy SESSION_IDLE_TIMEOUT_MINS = 30 SESSION_UI_IDLE_TIMEOUT_MINS = 30 ALLOWED_SECONDARY_ROLES = ('ALL') COMMENT = 'session policy for use in the prod_1 environment';
Ändern Sie eine bestehende Sitzungsrichtlinie, um Sekundärrollen zu verbieten:
ALTER SESSION POLICY prod_env_session_policy SET ALLOWED_SECONDARY_ROLES = ();
Der Befehl ALTER SESSION POLICY kann den Wert der Eigenschaft ändern, wenn die Eigenschaft bereits festgelegt ist.
Weitere Informationen zur Syntax finden Sie unter Verwalten von Sitzungsrichtlinien.
Sie können den Befehl DESCRIBE SESSION POLICY verwenden oder die Funktion GET_DDL aufrufen, um den Wert der Eigenschaft ALLOWED_SECONDARY_ROLES
anzuzeigen.
Eigenschaft in einer Sitzungsrichtlinie zurücksetzen¶
Mit dem Befehl ALTER SESSION POLICY können Sie Sekundärrollen in der Sitzungsrichtlinie zurücksetzen:
ALTER SESSION POLICY prod_env_session_policy
UNSET ALLOWED_SECONDARY_ROLES;
Sekundärrollen für alle Benutzer des Kontos verbieten¶
Um zu verhindern, dass alle Benutzer eines Kontos Sekundärrollen verwenden, richten Sie für das Konto eine Sitzungsrichtlinie ein, die Sekundärrollen für die Sitzung verbietet. Beispiel:
Ändern Sie eine Sitzungsrichtlinie, um Sekundärrollen zu verbieten:
ALTER SESSION POLICY prod_env_session_policy SET ALLOWED_SECONDARY_ROLES = ();
Weisen Sie dem Konto die Sitzungsrichtlinie zu:
ALTER ACCOUNT SET SESSION POLICY prod_env_session_policy;
Wenn ein Benutzer versucht, Sekundärrollen mit einem USE SECONDARY ROLES-Befehl zu aktivieren, wie z .B. USE SECONDARY ROLES analyst;
, wird die folgende Fehlermeldung angezeigt:
SQL execution error: USE SECONDARY ROLES '[ANALYST]' not allowed as per session policy.
Sekundärrollen für einen bestimmten Benutzer verbieten¶
Um einem bestimmten Benutzer die Verwendung von Sekundärrollen zu verbieten, legen Sie eine Sitzungsrichtlinie für den Benutzer fest, die Sekundärrollen für die Sitzung verbietet. Zum Beispiel, wenn diese Sitzungsrichtlinie bereits existiert:
ALTER USER jsmith SET SESSION POLICY prod_env_session_policy;
Wenn für das Konto eine Sitzungsrichtlinie festgelegt ist, hat die dem Benutzer zugewiesene Sitzungsrichtlinie Vorrang vor der Sitzungsrichtlinie des Kontos.
Wenn der Benutzer den Befehl USE SECONDARY ROLES ausführt, um Sekundärrollen zu aktivieren, wie z. B. USE SECONDARY ROLES (ANALYST, DATA_SCIENTIST);
, wird die folgende Fehlermeldung angezeigt:
SQL execution error: USE SECONDARY ROLES '[ANALYST, DATA_SCIENTIST]' not allowed as per session policy.
Einem Benutzer die Verwendung bestimmter Sekundärrollen erlauben¶
Um einem Benutzer die Verwendung bestimmter Sekundärrollen zu erlauben, gehen Sie wie folgt vor:
Erstellen Sie eine Sitzungsrichtlinie, die festlegt, welche Sekundärrollen ein Benutzer verwenden kann:
CREATE OR REPLACE SESSION POLICY prod_env_session_policy SESSION_IDLE_TIMEOUT_MINS = 30 SESSION_UI_IDLE_TIMEOUT_MINS = 30 ALLOWED_SECONDARY_ROLES = (DATA_SCIENTIST, ANALYST) COMMENT = 'session policy for user secondary roles data_scientist and analyst';
Legen Sie die Sitzungsrichtlinie für den Benutzer fest:
ALTER USER bsmith SET SESSION POLICY prod_env_session_policy;
Der Benutzer kann die Sekundärrollen bei Bedarf mit einem USE SECONDARY ROLES-Befehl aktivieren. Beispiel:
Aktivieren Sie alle Sekundärrollen:
USE SECONDARY ROLES ALL;
Aktivieren Sie
DATA_SCIENTIST
als Sekundärrolle:USE SECONDARY ROLES DATA_SCIENTIST;
Weitere Informationen zur Syntax finden Sie unter USE SECONDARY ROLES.
Sitzungsrichtlinie auf ein Zielkonto replizieren¶
Sie können eine Sitzungsrichtlinie und deren Referenzen, d. h. die Zuweisungen zu einem Benutzer oder dem Konto, mit Hilfe der Datenbankreplikation und der Kontoreplikation vom Quellkonto auf das Zielkonto replizieren. Weitere Details dazu finden Sie unter:
Ausführliche Informationen zur Replikation einer Sitzungsrichtlinie, in der Sekundärrollen angegeben sind, finden Sie unter Sitzungsrichtlinien mit Sekundärrollen replizieren.