Gestion des politiques de session¶
Cette rubrique décrit les sessions Snowflake et les politiques de session et fournit des instructions pour configurer les politiques de session au niveau du compte ou de l’utilisateur.
Privilèges de politique de session¶
Snowflake prend en charge les privilèges de politique de session suivants pour déterminer si les utilisateurs peuvent créer, définir et posséder des balises de session.
Notez que l’exploitation d’un objet dans un schéma requiert également le privilège USAGE sur la base de données et le schéma parents.
Privilège |
Utilisation |
---|---|
CREATE SESSION POLICY |
Permet de créer une nouvelle politique de session dans un schéma. |
APPLY SESSION POLICY |
Permet d’appliquer n’importe quelle politique de session au niveau du compte ou de l’utilisateur. |
OWNERSHIP |
Permet d’accorder un contrôle total sur la politique de session. Nécessaire pour modifier la plupart des propriétés d’une politique de session. |
Résumé des commandes, des opérations et des privilèges¶
Le tableau suivant résume la relation entre les opérations DDL de politique de session et leurs privilèges nécessaires.
Fonctionnement |
Privilège requis |
---|---|
Créer une politique de session |
Un rôle avec le privilège CREATE SESSION POLICY sur le schéma. |
Modifier une politique de session |
Un rôle avec le privilège OWNERSHIP sur la politique de session. |
Détruire la politique de session |
Un rôle avec le privilège OWNERSHIP sur la politique de session. |
Décrire la politique de session |
Un rôle avec le privilège OWNERSHIP sur la politique de session ou . le privilège APPLY SESSION POLICY sur le compte. |
Afficher les politiques de session |
Un rôle avec le privilège OWNERSHIP sur la politique de session ou . le privilège APPLY SESSION POLICY sur le compte. |
Définir et annuler une politique de session |
Pour les comptes, un rôle avec le privilège APPLY SESSION POLICY sur le compte et le privilège OWNERSHIP sur la politique de session, ou un rôle avec le privilège APPLY SESSION POLICY sur le compte et le privilège APPLY ON SESSION POLICY sur une politique de session spécifique. Pour les utilisateurs, un rôle avec le privilège APPLY SESSION POLICY sur USER <nom_utilisateur>. |
Référence DDL de politique de session¶
Snowflake fournit les commandes DDL suivantes pour gérer les objets de politique de session.
Pour définir ou désactiver une politique de session sur le compte, exécutez la commande ALTER ACCOUNT comme indiqué ci-dessous.
ALTER ACCOUNT SET SESSION POLICY mydb.policies.session_policy_prod_1;ALTER ACCOUNT UNSET SESSION POLICY;
Pour définir ou désactiver une politique de session au niveau de l’utilisateur, exécutez la commande ALTER USER comme indiqué ci-dessous.
ALTER USER jsmith SET SESSION POLICY mydb.policies.session_policy_prod_1_jsmith;ALTER USER jsmith UNSET SESSION POLICY;
Audit des politiques de session¶
Vous pouvez interroger la vue Vue SESSION_POLICIES pour renvoyer une ligne pour chaque politique de session et ses métadonnées dans votre compte Snowflake.
Vous pouvez appeler la fonction POLICY_REFERENCES pour renvoyer une ligne pour chaque utilisateur affecté à la politique de session spécifiée et une ligne pour la politique de session affectée au compte Snowflake.
Actuellement, seule la syntaxe suivante est prise en charge pour les politiques de session :
POLICY_REFERENCES( POLICY_NAME => '<session_policy_name>' )
Où
session_policy_name
est le nom entièrement qualifié de la politique de session.Par exemple, exécutez la requête suivante pour renvoyer une ligne pour chaque utilisateur auquel est attribuée la politique de session nommée
session_policy_prod_1
, qui est stockée dans la base de données nomméemy_db
et le schéma nommémy_schema
:SELECT * FROM TABLE( my_db.INFORMATION_SCHEMA.POLICY_REFERENCES( POLICY_NAME => 'my_db.my_schema.session_policy_prod_1' ));
Dépannage des politiques de session¶
Si une politique de session est affectée à un compte ou à un utilisateur et que la base de données ou le schéma qui contient la politique de session est détruit, puis qu’une nouvelle politique de session est affectée au compte ou à l’utilisateur, l’utilisateur ne sera pas tenu de respecter la ou les valeurs du délai d’expiration d’une session inactive de la nouvelle politique de session.
La solution de contournement consiste à annuler la politique de session d’origine du compte à l’aide d’une commande ALTER ACCOUNT ou de l’utilisateur à l’aide d’une commande ALTER USER comme indiqué dans ce chapitre.
Le tableau suivant résume certains messages d’erreur qui peuvent se produire avec les politiques de session.
Comportement
Message d’erreur
Action de dépannage
Impossible de créer une politique de session.
Impossible d’exécuter CREATE SESSION POLICY. Cette session ne dispose pas d’une base de données actuelle. Appelez « USE DATABASE » ou utilisez un nom qualifié.
Spécifiez une base de données avant d’exécuter CREATE SESSION POLICY ou utilisez le nom d’objet entièrement qualifié dans l’instruction CREATE SESSION POLICY.
Impossible de créer une politique de session.
Erreur de contrôle d’accès SQL : privilèges insuffisants pour effectuer des opérations sur le schéma « <nom_schéma> »
Vérifiez que le rôle qui exécute l’instruction CREATE SESSION POLICY possède le privilège CREATE SESSION POLICY sur SCHEMA.
Impossible de créer une politique de session.
Erreur de compilation SQL : la base de données « <nom_base_de_données> » n’existe pas ou n’est pas autorisée.
Vérifiez que la base de données existe et que le rôle qui exécute l’instruction CREATE SESSION POLICY possède le privilège USAGE sur le schéma dans lequel la politique de session doit exister.
Impossible d’exécuter une instruction de description.
Erreur de compilation SQL : le schéma “<nom_schéma>” n’existe pas ou n’est pas autorisé.
Vérifiez que le rôle qui exécute l’instruction DESC SESSION POLICY possède le privilège OWNERSHIP sur la politique de session ou le privilège APPLY sur la politique de session.
Impossible de détruire une politique de session.
Erreur de compilation SQL : la politique de session « <nom_politique> » n’existe pas ou n’est pas autorisée.
Vérifiez que le rôle qui exécute l’instruction DROP SESSION POLICY possède le privilège OWNERSHIP sur la politique de session.
Impossible de détruire une politique de session.
La politique de session <nom_politique> ne peut pas être détruite, car elle est associée à un compte.
Annulez la politique de session du compte avec une instruction ALTER ACCOUNT et relancez l’instruction de suppression.
Impossible de définir une politique de session sur un compte.
La politique de session « <nom_politique> » est déjà associée au compte « <nom_compte> ».
Un compte ne peut avoir qu’une seule politique de session active. Déterminez quelle politique de session doit être définie pour le compte. . Si nécessaire, annulez la politique de session actuelle du compte avec une commande ALTER ACCOUNT ; puis définissez l’autre politique de session sur le compte avec une autre commande ALTER ACCOUNT.
Impossible de définir une valeur de délai d’expiration.
Erreur de compilation SQL : valeur non valide « <entier> » pour la propriété « session_idle_timeout_mins ».
La valeur du délai d’attente de la session, en minutes, doit être un nombre entier compris entre
5
et240
, inclus. . Choisissez un nombre entier valide pour le délai d’expiration de session et exécutez à nouveau l’instruction CREATE ou ALTER SESSION POLICY.Impossible de mettre à jour une politique de session existante.
Erreur de compilation SQL : la politique de session « <nom_politique> » n’existe pas ou n’est pas autorisée.
Vérifiez le nom de la politique de session, la syntaxe de la commande ALTER SESSION POLICY et les privilèges permettant d’agir sur la politique de session, la base de données et le schéma.