Utilisation des politiques de session¶
Cette rubrique fournit des exemples sur la façon d’utiliser les politiques de session.
Politique de session standard¶
Les étapes suivantes constituent un guide représentatif pour la création d’une politique de session et la définition de la politique de session sur un compte ou un utilisateur.
Ces étapes supposent une approche de gestion centralisée dans laquelle un rôle personnalisé nommé policy_admin
possède la politique de session (c’est-à-dire qu’il dispose du privilège OWNERSHIP sur la politique de session) et est chargé de définir la politique de session sur un compte ou un utilisateur (c’est-à-dire qu’il dispose du privilège APPLY SESSION POLICY sur ACCOUNT ou du privilège APPLY SESSION POLICY ON USER).
Note
Pour définir une politique sur un compte, le rôle personnalisé policy_admin
doit avoir les permissions suivantes :
USAGE sur la base de données et le schéma qui contiennent la politique de session.
CREATE SESSION POLICY sur le schéma qui contient la politique de session.
Suivez ces étapes pour mettre en œuvre une politique de session.
Créez un rôle personnalisé qui permet à des utilisateurs de créer et de gérer des politiques de session. Dans cet exemple, le rôle personnalisé est
policy_admin
, bien que le rôle puisse avoir n’importe quel nom approprié.Si le rôle personnalisé existe déjà, passez à l’étape suivante.
Sinon, créez le rôle personnalisé
policy_admin
:USE ROLE USERADMIN; CREATE ROLE policy_admin;
Accordez des privilèges au rôle personnalisé.
Si le rôle personnalisé
policy_admin
ne dispose pas déjà des privilèges suivants, accordez ces privilèges comme indiqué ci-dessous :USAGE sur la base de données et le schéma qui contiendront la politique de session.
CREATE SESSION POLICY sur le schéma qui contiendra la politique de session.
APPLY SESSION POLICY sur le compte.
APPLY SESSION POLICY sur chaque utilisateur, si vous prévoyez de définir des politiques de session au niveau de l’utilisateur.
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;
Si vous associez une politique de session à un utilisateur individuel :
GRANT APPLY SESSION POLICY ON USER jsmith TO ROLE policy_admin;
Pour plus d’informations, voir Résumé des commandes, des opérations et des privilèges.
Créez une nouvelle politique de session.
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';
Pour plus d’informations, voir CREATE SESSION POLICY.
Définissez la politique de session sur le compte avec la commande ALTER ACCOUNT, ou sur un utilisateur avec la commande ALTER USER.
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;
Important
Pour remplacer une politique de session déjà définie pour un compte ou un utilisateur, il faut d’abord la désactiver, puis définir la nouvelle politique pour le compte ou l’utilisateur. Par exemple :
ALTER ACCOUNT UNSET session policy; ALTER ACCOUNT SET SESSION POLICY mydb.policies.session_policy_prod_2;
Spécification des rôles secondaires dans une politique de session¶
Les sections suivantes décrivent comment spécifier des rôles secondaires dans une politique de session :
Interdiction des rôles secondaires pour tous les utilisateurs du compte
Interdiction des rôles secondaires pour un utilisateur spécifique
Autorisation d’un utilisateur à utiliser des rôles secondaires spécifiques
Pour plus d’informations sur les rôles secondaires dans une politique de session, voir Rôles secondaires dans une politique de session.
Définition de la propriété dans une politique de session¶
L’administrateur de sécurité peut créer une nouvelle politique de session ou modifier une politique de session existante pour définir la propriété ALLOWED_SECONDARY_ROLES
. Par exemple :
Créez une nouvelle politique de session pour autoriser tous les rôles secondaires :
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';
Modifiez une politique de session existante pour interdire les rôles secondaires :
ALTER SESSION POLICY prod_env_session_policy SET ALLOWED_SECONDARY_ROLES = ();
La commande ALTER SESSION POLICY peut modifier la valeur de la propriété si la propriété est déjà définie.
Pour plus d’informations sur la syntaxe, voir Gestion des politiques de session.
Vous pouvez utiliser la commande DESCRIBE SESSION POLICY ou appeler la fonction GET_DDL pour afficher la valeur de la propriété ALLOWED_SECONDARY_ROLES
.
Désactivation de la propriété dans une politique de session¶
Vous pouvez utiliser une commande ALTER SESSION POLICY pour désactiver les rôles secondaires dans la politique de session :
ALTER SESSION POLICY prod_env_session_policy
UNSET ALLOWED_SECONDARY_ROLES;
Interdiction des rôles secondaires pour tous les utilisateurs du compte¶
Pour empêcher tous les utilisateurs d’un compte d’utiliser des rôles secondaires, définissez une politique de session sur le compte qui interdit les rôles secondaires pour la session. Par exemple :
Modifiez une politique de session pour interdire les rôles secondaires :
ALTER SESSION POLICY prod_env_session_policy SET ALLOWED_SECONDARY_ROLES = ();
Affectez la politique de session au compte :
ALTER ACCOUNT SET SESSION POLICY prod_env_session_policy;
Si un utilisateur tente d’activer des rôles secondaires à l’aide d’une commande USE SECONDARY ROLES, comme USE SECONDARY ROLES analyst;
, le message d’erreur suivant s’affiche :
SQL execution error: USE SECONDARY ROLES '[ANALYST]' not allowed as per session policy.
Interdiction des rôles secondaires pour un utilisateur spécifique¶
Pour interdire à un utilisateur spécifique d’utiliser des rôles secondaires, définissez une politique de session sur l’utilisateur qui interdit les rôles secondaires pour la session. Par exemple, si cette politique de session existe déjà :
ALTER USER jsmith SET SESSION POLICY prod_env_session_policy;
Si une politique de session est définie sur le compte, la politique de session attribuée à l’utilisateur remplace la politique de session sur le compte.
Si l’utilisateur exécute une commande USE SECONDARY ROLES pour activer les rôles secondaires, comme USE SECONDARY ROLES (ANALYST, DATA_SCIENTIST);
, le message d’erreur suivant s’affiche :
SQL execution error: USE SECONDARY ROLES '[ANALYST, DATA_SCIENTIST]' not allowed as per session policy.
Autorisation d’un utilisateur à utiliser des rôles secondaires spécifiques¶
Pour permettre à un utilisateur d’utiliser des rôles secondaires spécifiques, procédez comme suit :
Créez une politique de session qui spécifie les rôles secondaires qu’un utilisateur peut utiliser :
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';
Définissez la politique de session sur l’utilisateur :
ALTER USER bsmith SET SESSION POLICY prod_env_session_policy;
L’utilisateur peut activer les rôles secondaires selon ses besoins à l’aide d’une commande USE SECONDARY ROLES. Par exemple :
Activez tous les rôles secondaires :
USE SECONDARY ROLES ALL;
Activez
DATA_SCIENTIST
comme rôle secondaire :USE SECONDARY ROLES DATA_SCIENTIST;
Pour plus d’informations sur la syntaxe, voir USE SECONDARY ROLES.
Réplication de la politique de session vers un compte cible¶
Vous pouvez répliquer une politique de session et ses références, qui sont les affectations à un utilisateur ou au compte, du compte source au compte cible en utilisant la réplication de base de données et la réplication de compte. Pour plus de détails, voir :
Pour plus d’informations sur la réplication d’une politique de session qui spécifie des rôles secondaires, voir Réplication des politiques de session avec des rôles secondaires.