Gestion des utilisateurs¶
Les administrateurs des utilisateurs peuvent créer et gérer les utilisateurs de Snowflake via SQL ou l’interface Web :
En utilisant SQL, les administrateurs peuvent exécuter toutes les tâches liées à l’utilisateur, comme la modification des identifiants de connexion et des valeurs par défaut des utilisateurs.
Snowsight prend en charge la plupart des tâches liées à l’utilisateur.
Classic Console ne prend pas en charge toutes les tâches liées à l’utilisateur, mais elle fournit un assistant pour créer des utilisateurs et exécuter la plupart des activités courantes, telles que la réinitialisation du mot de passe d’un utilisateur.
Types d’utilisateurs¶
Certains objets utilisateurs correspondent à des utilisateurs humains tandis que d’autres objets utilisateurs correspondent à un service ou une application qui interagit avec Snowflake de manière programmatique sans interaction humaine. Lorsque vous créez un objet utilisateur, vous spécifiez le type d’utilisateur afin de faire la distinction entre les humains et les services. Cette distinction est importante car les utilisateurs humains devraient s’inscrire à l’authentification multifactorielle (MFA), mais les services et les applications ne devraient pas le faire car il n’y a pas d’humain pour utiliser une méthode secondaire d’authentification.
La propriété TYPE
d’un objet utilisateur détermine le type d’utilisateur. Les valeurs possibles de cette propriété TYPE
sont les suivantes :
- PERSON:
L’utilisateur est un utilisateur humain qui peut interagir avec Snowflake.
- NULL:
Les fonctions sont les mêmes
PERSON
.- SERVICE:
L’utilisateur est un service ou une application qui interagit avec Snowflake sans interaction humaine.
Pour améliorer la posture de sécurité des cas d’utilisation non interactifs, les utilisateurs disposant de la propriété
TYPE
définie surSERVICE
présentent les caractéristiques suivantes :Ils ne peuvent pas se connecter à l’aide d’un mot de passe.
Ils ne peuvent pas se connecter en utilisant SAML SSO.
Ils ne peuvent pas s’inscrire à MFA.
Ils ne sont pas soumis à l’application MFA de la politique d’authentification.
Ils ne peuvent pas avoir les propriétés suivantes :
FIRST_NAME
MIDDLE_NAME
LAST_NAME
PASSWORD
MUST_CHANGE_PASSWORD
MINS_TO_BYPASS_MFA
Les commandes suivantes ne peuvent pas être utilisées :
ALTER USER RESET PASSWORD
ALTER USER SET
DISABLE_MFA = TRUE
- SNOWFLAKE_SERVICE:
Utilisateur créé par Snowflake pour Snowpark Container Services. Les administrateurs ne peuvent pas créer d’utilisateurs de type SNOWFLAKE_SERVICE, ni modifier le type d’un utilisateur existant pour qu’il devienne SNOWFLAKE_SERVICE. Pour plus d’informations sur les utilisateurs de SNOWFLAKE_SERVICE, voir Connexion à Snowflake depuis l’intérieur d’un conteneur.
- LEGACY_SERVICE:
Un utilisateur dont la propriété
TYPE
est réglée surLEGACY_SERVICE
représente une intégration non interactive. Il est similaire àSERVICE
, mais permet l’authentification par mot de passe et par SAML. Dans une prochaine version, le type LEGACY_SERVICE sera supprimé ; à ce moment-là, tous les cas d’utilisation non interactifs utiliseront le type SERVICE avec une méthode d’authentification sécurisée.Les utilisateurs
LEGACY_SERVICE
ont les caractéristiques suivantes :Ils peuvent se connecter avec un mot de passe ou l’authentification SAML, contrairement aux utilisateurs
SERVICE
.Ils ont les propriétés d’un utilisateur
SERVICE
, mais disposent des propriétésPASSWORD
etMUST_CHANGE_PASSWORD
.Ils sont affectés par les restrictions de commande d’un utilisateur
SERVICE
, mais peuvent utiliser la commande ALTER USER RESET PASSWORD.Ils ne sont pas concernés par l’application de la politique d’authentification multifactorielle (MFA). Cette propriété permet aux administrateurs de définir des stratégies d’authentification au niveau du compte qui nécessitent MFA pour l’authentification par mot de passe sans avoir besoin de définir une politique d’authentification au niveau de l’utilisateur pour empêcher les utilisateurs
LEGACY_SERVICE
d’exiger MFA pour l’authentification par mot de passe.
Rôles utilisateur¶
Snowflake utilise des rôles pour contrôler les objets (entrepôts virtuels, bases de données, tables, etc.) auxquels les utilisateurs peuvent accéder :
Snowflake fournit un ensemble de rôles prédéfinis, ainsi qu’un cadre pour définir une hiérarchie de rôles personnalisés.
Tous les utilisateurs de Snowflake se voient automatiquement attribuer le rôle prédéfini PUBLIC, qui permet de se connecter à Snowflake et d’accéder aux objets de base.
En plus du rôle PUBLIC, chaque utilisateur peut se voir attribuer des rôles supplémentaires, l’un de ces rôles étant désigné comme rôle par défaut. Le rôle par défaut d’un utilisateur détermine le rôle utilisé dans les sessions Snowflake initiées par l’utilisateur ; cependant, il ne s’agit que d’un rôle par défaut. Les utilisateurs peuvent modifier les rôles au sein d’une session à tout moment.
Les rôles peuvent être affectés lors de la création de l’utilisateur ou après.
Attention
Lorsque vous décidez des rôles supplémentaires à affecter à un utilisateur, ainsi que de leur rôle par défaut, tenez compte de ce qui suit pour le rôle prédéfini ACCOUNTADMIN (requis pour effectuer des tâches administratives au niveau du compte) :
Snowflake recommande de contrôler strictement l’assignation de ACCOUNTADMIN, mais recommande de l’assigner à au moins deux utilisateurs.
ACCOUNTADMIN ne devrait jamais être désigné comme rôle par défaut de l’utilisateur. Au lieu de cela, désignez un rôle administratif ou personnalisé de niveau inférieur comme rôle par défaut.
Pour plus de détails et pour connaître les meilleures pratiques relatives au rôle ACCOUNTADMIN, voir Meilleures pratiques liées au contrôle d’accès. Pour plus d’informations générales sur les rôles, voir Aperçu du contrôle d’accès.
Privilèges requis pour créer et modifier des utilisateurs¶
Les rôles ou privilèges suivants sont nécessaires pour gérer les utilisateurs de votre compte :
- Création d’utilisateurs:
Le rôle système USERADMIN peut créer des utilisateurs en utilisant SQL (CREATE USER).
Si vous préférez utiliser un rôle personnalisé à cette fin, accordez le privilège CREATE USER sur le compte à ce rôle.
- Modifier les utilisateurs:
Seul le rôle disposant du privilège OWNERSHIP sur un utilisateur peut modifier la plupart des propriétés de l’utilisateur à l’aide de SQL (ALTER USER).
Création d’utilisateurs¶
Cette section décrit comment créer un utilisateur dans un compte spécifique à l’aide de l’interface de votre choix.
Lorsque vous choisissez l’interface, tenez compte du fait que l’interface Web, que vous utilisiez Classic Console ou Snowsight, exige que vous spécifiiez un mot de passe lorsque vous créez un utilisateur. La commande CREATE USER et UserCollection.create de l’API Python ne l’exigent pas.
Note
Si vous souhaitez créer un utilisateur pouvant accéder à plusieurs comptes au sein d’une organisation, consultez Utilisateurs d’organisation.
Utilisation de Snowsight¶
Connectez-vous à Snowsight.
Sélectionnez Admin » Users & Roles.
Sélectionnez + User.
Dans le champ User Name, entrez un identifiant unique pour l’utilisateur. L’utilisateur utilise cet identificateur pour se connecter à Snowflake, sauf si vous spécifiez un nom de connexion.
Indiquez éventuellement une adresse e-mail pour l’utilisateur dans le champ Email.
Dans les champs Password et Confirm Password, entrez le mot de passe de l’utilisateur.
Ajoutez éventuellement un commentaire expliquant pourquoi vous avez créé l’utilisateur.
Laissez la case à cocher Force user to change password on first time login sélectionnée pour obliger l’utilisateur à modifier son mot de passe lorsqu’il se connecte.
Sélectionnez éventuellement Advanced User Options pour spécifier des détails supplémentaires sur l’utilisateur :
Login Name à utiliser à la place de User Name lorsque vous vous connectez à Snowflake.
Display Name qui s’affiche après la connexion.
First Name et Last Name pour compléter le profil de l’utilisateur.
Default Role, Default Warehouse et Default Namespace.
Sélectionnez Create User.
À l’aide de la console classique¶
Sélectionnez Create.
Dans le champ User Name, entrez un identifiant unique pour l’utilisateur.
Note
Le nom d’utilisateur est l’identifiant unique de l’utilisateur dans Snowflake. Ce n’est pas le nom de connexion de l’utilisateur (c.-à-d. le nom que l’utilisateur entre lorsqu’il se connecte à Snowflake). Snowflake permet aux utilisateurs d’avoir différents noms d’utilisateur et noms de connexion, si désiré. Vous spécifiez un nom de connexion pour l’utilisateur dans l’écran suivant.
Dans les champs Password et Confirm Password, entrez le mot de passe de l’utilisateur.
Laissez la case Force Password Change cochée pour contraindre l’utilisateur à changer son mot de passe lors de sa prochaine connexion ; sinon, décochez la case.
Sélectionnez Next. L’écran Advanced s’ouvre.
Si vous le souhaitez, saisissez Login Name, Display Name et les informations personnelles de l’utilisateur.
Note
Les utilisateurs ont besoin d’un nom d’utilisateur pour ouvrir une session dans Snowflake ; si vous ne fournissez pas explicitement un nom d’utilisateur, Snowflake utilise leur nom d’utilisateur comme nom de connexion.
Sélectionnez Next. L’écran Preferences s’ouvre.
Si nécessaire, saisissez les valeurs par défaut pour l’utilisateur :
Entrepôt virtuel
Espace de noms sous la forme de
db_name
oudb_name.schema_name
Rôle
Sélectionnez Finish. Snowflake affiche un message de réussite.
Utilisation de SQL¶
Utilisez la commande CREATE USER pour créer un utilisateur.
Important
Lorsque vous créez un utilisateur, si vous lui affectez un rôle par défaut, vous devez alors lui attribuer explicitement ce rôle. Par exemple :
CREATE USER janesmith PASSWORD = 'abc123' DEFAULT_ROLE = myrole MUST_CHANGE_PASSWORD = TRUE; GRANT ROLE myrole TO USER janesmith;
Notez que la commande GRANT ROLE vous permet d’assigner plusieurs rôles à un seul utilisateur. L’interface Web ne prend pas actuellement en charge la même fonctionnalité.
Utiliser Python¶
Utilisez la commande UserCollection.create de l’API Python pour créer un utilisateur.
Important
Lorsque vous créez un utilisateur, si vous lui affectez un rôle par défaut, vous devez alors lui attribuer explicitement ce rôle. Par exemple :
from snowflake.core.user import Securable, User my_user = User( name="janesmith", password="abc123", default_role="myrole", must_change_password=True) root.users.create(my_user) root.users['janesmith'].grant_role(role_type="ROLE", role=Securable(name='myrole'))
Désactivation ou activation d’un utilisateur¶
La désactivation d’un utilisateur l’empêche de se connecter à Snowflake. Vous pouvez désactiver un utilisateur via les interfaces suivantes.
Utilisation de Snowsight¶
Connectez-vous à Snowsight.
Sélectionnez Admin » Users & Roles.
Localisez l’utilisateur que vous souhaitez désactiver et sélectionnez
» Disable User.
Dans la boîte de dialogue de confirmation qui s’ouvre, sélectionnez Disable.
Pour activer un utilisateur, suivez les mêmes étapes, mais cliquez sur Enable User.
À l’aide de la console classique¶
Cliquez sur une ligne de l’utilisateur pour la sélectionner, puis cliquez sur le bouton Disable User. Une boîte de dialogue de confirmation s’ouvre.
Cliquez sur Yes pour désactiver l’utilisateur.
Pour activer un utilisateur, suivez les mêmes étapes, mais cliquez sur Enable User.
Utilisation de SQL¶
Utilisez la commande ALTER USER pour désactiver ou activer un utilisateur. Par exemple :
Désactiver un utilisateur :
ALTER USER janesmith SET DISABLED = TRUE;
Activer un utilisateur :
ALTER USER janesmith SET DISABLED = FALSE;
Utiliser Python¶
Utilisez la commande UserResource.create_or_alter de l’API Python pour désactiver ou activer un utilisateur. Par exemple :
Désactiver un utilisateur :
user_parameters = root.users["janesmith"].fetch() user_parameters.disabled = True root.users["janesmith"].create_or_alter(user_parameters)
Activer un utilisateur :
user_parameters = root.users["janesmith"].fetch() user_parameters.disabled = False root.users["janesmith"].create_or_alter(user_parameters)
Déverrouillage d’un utilisateur¶
Si la connexion d’un utilisateur échoue après cinq tentatives consécutives, l’utilisateur ne peut plus tenter d’accéder à son compte pendant un certain temps (actuellement 15 minutes). Après la période de temps écoulée, le système supprime automatiquement le verrouillage et l’utilisateur peut tenter de se connecter à nouveau.
Pour déverrouiller l’utilisateur avant la fin du temps imparti, vous pouvez réinitialiser le temporisateur à l’aide de la commande ALTER USER ou de la commande UserResource.create_or_alter de l’API Python.
L’exemple suivant réinitialise la minuterie à 0, ce qui déverrouille immédiatement l’utilisateur janesmith
:
ALTER USER janesmith SET MINS_TO_UNLOCK= 0;
user_parameters = root.users["janesmith"].fetch()
user_parameters.mins_to_unlock = 0
root.users["janesmith"].create_or_alter(user_parameters)
Astuce
Si un seul rôle a le privilège OWNERSHIP sur tous les utilisateurs de Snowflake, nous recommandons d’accorder le rôle à plusieurs utilisateurs. De cette façon, si un membre du rôle est verrouillé, un autre membre peut déverrouiller cet utilisateur.
Modification des paramètres de session pour un utilisateur¶
Pour afficher les paramètres de session d’un utilisateur, utilisez la syntaxe SQL suivante :
SHOW PARAMETERS [ LIKE '<pattern>' ] FOR USER <name>
Pour modifier les paramètres de session d’un utilisateur, utilisez la syntaxe suivante :
ALTER USER <name> SET <session_param> = <value>
Par exemple, permettez à un utilisateur de rester connecté à Snowflake indéfiniment et sans temps mort :
ALTER USER janesmith SET CLIENT_SESSION_KEEP_ALIVE = TRUE;
Pour rétablir la valeur par défaut d’un paramètre de session pour un utilisateur, utilisez la syntaxe suivante :
ALTER USER <name> UNSET <session_param>
Modification d’autres propriétés de l’utilisateur¶
Vous pouvez modifier toutes les autres propriétés de l’utilisateur à l’aide de la commande ALTER USER ou de la commande UserResource.create_or_alter de l’API Python. Vous pouvez modifier un grand nombre des mêmes propriétés d’utilisateur à l’aide de Snowsight.
Par exemple :
Remplacer le nom de famille de l’utilisateur
janesmith
parJones
:- SQL:
ALTER USER janesmith SET LAST_NAME = 'Jones';
- Python:
user_parameters = root.users["janesmith"].fetch() user_parameters.last_name = "Jones" root.users["janesmith"].create_or_alter(user_parameters)
- Snowsight:
Définir ou modifier l’entrepôt, l’espace de noms, le rôle primaire et les rôles secondaires par défaut pour l’utilisateur
janesmith
:- SQL:
ALTER USER janesmith SET DEFAULT_WAREHOUSE = mywarehouse DEFAULT_NAMESPACE = mydatabase.myschema DEFAULT_ROLE = myrole DEFAULT_SECONDARY_ROLES = ('ALL');
- Python:
user_parameters = root.users["janesmith"].fetch() user_parameters.default_warehouse = "mywarehouse" user_parameters.default_namespace = "mydatabase.myschema" user_parameters.default_role = "myrole" user_parameters.default_secondary_roles = "ALL" root.users["janesmith"].create_or_alter(user_parameters)
- Snowsight:
Note
Vous ne pouvez pas définir des rôles secondaires par défaut pour un utilisateur à l’aide de Snowsight.
Affichage des utilisateurs¶
Vous pouvez voir des informations sur les utilisateurs à l’aide des interfaces suivantes.
Utilisation de SQL¶
Utilisez les commandes DESCRIBE USER ou SHOW USERS pour afficher des informations sur un ou plusieurs utilisateurs.
Par exemple :
DESC USER janeksmith;
Utiliser Python¶
Utilisez la commande UserResource.fetch de l’API Python pour obtenir des informations sur un utilisateur.
Par exemple :
my_user = root.users["janesmith"].fetch()
print(my_user.to_dict())
Utilisez la commande UserCollection.iter de l’API Python pour dresser la liste des utilisateurs d’un compte.
Par exemple :
users = root.users.iter(like="jane%")
for user in users:
print(user.name)
Utilisation de Snowsight¶
Connectez-vous à Snowsight.
Sélectionnez Admin » Users & Roles.
Localisez l’utilisateur pour lequel vous souhaitez voir plus de détails.
Vous pouvez consulter le nom d’affichage, le statut, l’heure de la dernière connexion, le rôle de l’utilisateur et l’existence ou non d’une authentification multifactorielle (MFA). Si l’utilisateur a un commentaire, vous pouvez passer la souris sur l”
.
Sélectionnez éventuellement l’utilisateur pour obtenir plus de détails, tels que ses rôles par défaut, les rôles pour lesquels des privilèges ont été accordés à l’utilisateur et les rôles accordés à l’utilisateur.
Suppression d’un utilisateur¶
La destruction (ou suppression) d’un utilisateur supprime les informations d’identification de l’utilisateur de Snowflake.
Important
Lorsque vous supprimez un utilisateur, les dossiers, les feuilles de calcul et les tableaux de bord appartenant à cet utilisateur deviennent inaccessibles et ne sont pas transférés à un autre utilisateur, sauf si le partage est activé.
Les destinataires du partage disposant des autorisations Afficher, Afficher + Exécuter et Modifier conserveront les autorisations qui leur sont attribuées et pourront toujours accéder aux dossiers, feuilles de calcul et tableaux de bord partagés. Cependant, seuls les utilisateurs disposant d’autorisations de modification peuvent modifier ou supprimer les dossiers, feuilles de calcul et tableaux de bord partagés. Si vous n’accordez pas d’autorisations de modification à au moins un autre utilisateur avant de supprimer le propriétaire, les dossiers, feuilles de calcul et tableaux de bord de ce propriétaire ne peuvent pas être supprimés.
Si le partage n’est pas activé pour les feuilles de calcul d’un utilisateur supprimé, un administrateur peut récupérer jusqu’à 500 feuilles de calcul appartenant à l’utilisateur.
Prudence
Toutes les feuilles de calcul de la console classique seront définitivement supprimées et les tableaux de bord seront inaccessibles s’ils n’ont pas été précédemment partagés avec un autre utilisateur.
Les objets créés par l’utilisateur, tels que les tables ou les vues, ne sont pas supprimés car ils appartiennent au rôle actif de l’utilisateur au moment de leur création. Un autre utilisateur affecté au même rôle ou à un rôle supérieur dans la hiérarchie de rôles peut gérer les objets ou transférer la propriété à un autre rôle.
Utilisation de Snowsight¶
À l’aide de la console classique¶
Utilisation de SQL¶
Utilisez la commande DROP USER pour détruire un utilisateur.
DROP USER janesmith;
Utiliser Python¶
Utilisez la commande UserResource.drop de l’API Python pour supprimer un utilisateur.
root.users["janesmith"].drop()