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.

  1. 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;
    
    Copy
  2. 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;
    
    Copy

    Wenn Sie eine Sitzungsrichtlinie mit einem einzelnen Benutzer verknüpfen:

    GRANT APPLY SESSION POLICY ON USER jsmith TO ROLE policy_admin;
    
    Copy

    Weitere Informationen dazu finden Sie unter Übersicht der Befehle, Operationen und Berechtigungen.

  3. 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';
    
    Copy

    Weitere Informationen dazu finden Sie unter CREATE SESSION POLICY.

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

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

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';
    
    Copy
  • Ändern Sie eine bestehende Sitzungsrichtlinie, um Sekundärrollen zu verbieten:

    ALTER SESSION POLICY prod_env_session_policy
      SET ALLOWED_SECONDARY_ROLES = ();
    
    Copy

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

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:

  1. Ändern Sie eine Sitzungsrichtlinie, um Sekundärrollen zu verbieten:

    ALTER SESSION POLICY prod_env_session_policy SET ALLOWED_SECONDARY_ROLES = ();
    
    Copy
  2. Weisen Sie dem Konto die Sitzungsrichtlinie zu:

    ALTER ACCOUNT SET SESSION POLICY prod_env_session_policy;
    
    Copy

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

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:

  1. 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';
    
    Copy
  2. Legen Sie die Sitzungsrichtlinie für den Benutzer fest:

    ALTER USER bsmith SET SESSION POLICY prod_env_session_policy;
    
    Copy

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;
    
    Copy
  • Aktivieren Sie DATA_SCIENTIST als Sekundärrolle:

    USE SECONDARY ROLES DATA_SCIENTIST;
    
    Copy

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.