CREATE USER

Crée un nouvel utilisateur ou remplace un utilisateur existant dans le système. Pour plus de détails, voir Gestion des utilisateurs.

Note

Seuls les administrateurs des utilisateurs (c’est-à-dire les utilisateurs ayant le rôle USERADMIN ou un rôle supérieur), ou un autre rôle ayant le privilège CREATE USER sur le compte, peuvent créer des utilisateurs.

Voir aussi :

DROP USER , ALTER USER , DESCRIBE USER , SHOW PARAMETERS

Syntaxe

CREATE [ OR REPLACE ] USER [ IF NOT EXISTS ] <name>
  [ objectProperties ]
  [ objectParams ]
  [ sessionParams ]
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
Copy

Où :

objectProperties ::=
  PASSWORD = '<string>'
  LOGIN_NAME = <string>
  DISPLAY_NAME = <string>
  FIRST_NAME = <string>
  MIDDLE_NAME = <string>
  LAST_NAME = <string>
  EMAIL = <string>
  MUST_CHANGE_PASSWORD = TRUE | FALSE
  DISABLED = TRUE | FALSE
  DAYS_TO_EXPIRY = <integer>
  MINS_TO_UNLOCK = <integer>
  DEFAULT_WAREHOUSE = <string>
  DEFAULT_NAMESPACE = <string>
  DEFAULT_ROLE = <string>
  DEFAULT_SECONDARY_ROLES = ( 'ALL' )
  MINS_TO_BYPASS_MFA = <integer>
  RSA_PUBLIC_KEY = <string>
  RSA_PUBLIC_KEY_FP = <string>
  RSA_PUBLIC_KEY_2 = <string>
  RSA_PUBLIC_KEY_2_FP = <string>
  COMMENT = '<string_literal>'
Copy
objectParams ::=
  ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR = TRUE | FALSE
  NETWORK_POLICY = <string>
Copy
sessionParams ::=
  ABORT_DETACHED_QUERY = TRUE | FALSE
  AUTOCOMMIT = TRUE | FALSE
  BINARY_INPUT_FORMAT = <string>
  BINARY_OUTPUT_FORMAT = <string>
  DATE_INPUT_FORMAT = <string>
  DATE_OUTPUT_FORMAT = <string>
  ERROR_ON_NONDETERMINISTIC_MERGE = TRUE | FALSE
  ERROR_ON_NONDETERMINISTIC_UPDATE = TRUE | FALSE
  JSON_INDENT = <num>
  LOCK_TIMEOUT = <num>
  QUERY_TAG = <string>
  ROWS_PER_RESULTSET = <num>
  SIMULATED_DATA_SHARING_CONSUMER = <string>
  STATEMENT_TIMEOUT_IN_SECONDS = <num>
  STRICT_JSON_OUTPUT = TRUE | FALSE
  TIMESTAMP_DAY_IS_ALWAYS_24H = TRUE | FALSE
  TIMESTAMP_INPUT_FORMAT = <string>
  TIMESTAMP_LTZ_OUTPUT_FORMAT = <string>
  TIMESTAMP_NTZ_OUTPUT_FORMAT = <string>
  TIMESTAMP_OUTPUT_FORMAT = <string>
  TIMESTAMP_TYPE_MAPPING = <string>
  TIMESTAMP_TZ_OUTPUT_FORMAT = <string>
  TIMEZONE = <string>
  TIME_INPUT_FORMAT = <string>
  TIME_OUTPUT_FORMAT = <string>
  TRANSACTION_DEFAULT_ISOLATION_LEVEL = <string>
  TWO_DIGIT_CENTURY_START = <num>
  UNSUPPORTED_DDL_ACTION = <string>
  USE_CACHED_RESULT = TRUE | FALSE
  WEEK_OF_YEAR_POLICY = <num>
  WEEK_START = <num>
Copy

Note

Pour plus de lisibilité, la liste complète des paramètres de session pouvant être définis pour un utilisateur n’est pas incluse ici. Pour une liste complète de tous les paramètres de session, avec leurs descriptions, ainsi que les paramètres de compte et d’objet, voir Paramètres.

Paramètres requis

name

Identificateur de l’utilisateur ; doit être unique pour votre compte.

L’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (p. ex. "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus de détails, voir Exigences relatives à l’identificateur.

Note

L’utilisateur n’utilise pas cette valeur pour se connecter à Snowflake ; à la place, l’utilisateur utilise la valeur spécifiée pour la propriété LOGIN_NAME pour se connecter. Cependant, si aucun nom de connexion n’est explicitement spécifié pour l’utilisateur, le nom d’utilisateur/identificateur sert de nom de connexion par défaut.

Propriétés d’objet facultatives (objectProperties)

PASSWORD = 'string'

Le mot de passe de l’utilisateur doit être entouré de guillemets simples ou doubles. Si aucun mot de passe n’est spécifié, l’utilisateur ne peut se connecter à Snowflake tant qu’un mot de passe n’a pas été explicitement spécifié pour lui.

Si le mot de passe utilise la barre oblique inverse (\), échappez le caractère avec une barre oblique inverse ou utilisez des délimiteurs à double signe de dollar ($$) lorsque vous spécifiez le mot de passe dans une commande SQL. Pour plus de détails, reportez-vous à Types de données Chaîne & Binaire.

Pour plus d’informations sur les mots de passe dans Snowflake, reportez-vous à Politiques de mots de passe.

Par défaut : NULL

LOGIN_NAME = string

Nom que l’utilisateur saisit pour se connecter au système. Les noms de connexion des utilisateurs doivent être uniques pour l’ensemble de votre compte.

Un nom de connexion peut être n’importe quelle chaîne de caractères, y compris des espaces et des caractères non alphanumériques, tels que des points d’exclamation (!), des signes pourcentage (%) et des astérisques (*) ; cependant, si la chaîne contient des espaces ou des caractères non alphanumériques, elle doit être incluse entre guillemets simples ou doubles. Les noms de connexion sont toujours insensibles à la casse.

Snowflake permet de spécifier différents noms d’utilisateur et noms de connexion pour permettre l’utilisation d’identificateurs communs (par exemple, les adresses e-mail) pour la connexion.

Valeur par défaut : nom/identificateur de l’utilisateur (c’est-à-dire si aucune valeur n’est spécifiée, la valeur spécifiée pour name est utilisée comme nom de connexion)

DISPLAY_NAME = string

Nom affiché pour l’utilisateur dans l’interface Web de Snowflake.

Valeur par défaut : nom/identificateur de l’utilisateur (c’est-à-dire si aucune valeur n’est spécifiée, la valeur spécifiée pour name est utilisée comme nom d’affichage)

FIRST_NAME = string , . MIDDLE_NAME = string , . LAST_NAME = string

Prénom, deuxième prénom et nom de l’utilisateur.

Par défaut : NULL

EMAIL = string

Adresse e-mail de l’utilisateur.

Il n’est pas nécessaire d’avoir une adresse e-mail pour utiliser Snowflake ; cependant, pour accéder à la communauté Snowflake afin d’ouvrir des tickets d’assistance ou contribuer aux forums communautaires, une adresse e-mail valide doit être spécifiée pour l’utilisateur.

Nous vous recommandons de spécifier une adresse e-mail professionnelle plutôt qu’une adresse e-mail personnelle. Les adresses e-mail des utilisateurs sont visibles par tous les autres utilisateurs de votre compte Snowflake.

Par défaut : NULL

MUST_CHANGE_PASSWORD = TRUE | FALSE

Indique si l’utilisateur doit obligatoirement modifier son mot de passe lors de la prochaine connexion (y compris sa première connexion) dans le système.

Par défaut : FALSE

DISABLED = TRUE | FALSE

Indique si l’utilisateur est désactivé, ce qui empêche les actions suivantes :

  • Pour un nouvel utilisateur, l’utilisateur ne peut plus accéder à Snowflake et ne peut plus se connecter.

  • Pour un utilisateur existant, le paramétrage de la propriété interrompt toutes les requêtes en cours d’exécution et ne permet pas à l’utilisateur d’émettre de nouvelles requêtes ; l’utilisateur est également immédiatement verrouillé hors de Snowflake et ne peut pas se reconnecter.

Par défaut : FALSE

DAYS_TO_EXPIRY = integer

Indique le nombre de jours après lequel le statut utilisateur est défini sur « Expiré » et l’utilisateur n’est plus autorisé à se connecter. Ceci est utile pour définir des utilisateurs temporaires (c.-à-d. les utilisateurs qui ne devraient avoir accès à Snowflake que pour une période de temps limitée). En général, vous ne devez pas définir cette propriété pour les administrateurs de comptes (c’est-à-dire les utilisateurs avec le rôle ACCOUNTADMIN), car Snowflake les bloque lorsqu’ils deviennent « Expirés ».

Une fois définie, un décompte est effectué pour la valeur, jusqu’à 0, mais ne s’arrête pas. Une valeur négative indique que le statut de l’utilisateur est « Expiré ». Pour réinitialiser la valeur, utilisez ALTER USER afin de définir les valeurs suivantes :

  • Pour réactiver l’utilisateur en tant qu’utilisateur temporaire, réglez la valeur sur une valeur supérieure à 0.

  • Pour spécifier l’utilisateur en tant qu’utilisateur permanent, définissez la valeur sur NULL ou 0.

Par défaut : NULL

MINS_TO_UNLOCK = integer

Indique le nombre de minutes jusqu’à ce que le verrouillage temporaire de la connexion de l’utilisateur soit désactivé. Pour se protéger contre la connexion non autorisée d’un utilisateur, Snowflake place un verrou temporaire sur un utilisateur au bout de cinq tentatives de connexion consécutives infructueuses :

  • Une valeur positive indique que le statut de l’utilisateur est « Verrouillé ».

  • Une fois que la valeur compte jusqu’à 0 (ou une valeur négative), le verrouillage est effacé et l’utilisateur est autorisé à se reconnecter.

  • Lorsque l’utilisateur se connecte avec succès à Snowflake, la valeur est réinitialisée à NULL.

Lors de la création d’un utilisateur, cette propriété peut être définie pour l’empêcher de se connecter jusqu’à ce que le délai spécifié s’écoule.

Pour supprimer immédiatement un verrou pour un utilisateur, utilisez ALTER USER et spécifiez une valeur de 0 pour ce paramètre.

Par défaut : NULL

DEFAULT_WAREHOUSE = string

Spécifie l’entrepôt virtuel qui est actif par défaut pour la session de l’utilisateur lors de la connexion.

Un utilisateur peut spécifier ou modifier son entrepôt virtuel par défaut actuel en utilisant ALTER USER. En outre, après avoir démarré une session (c’est-à-dire après s’être connecté), un utilisateur peut modifier l’entrepôt virtuel de la session à l’aide de la commande USE WAREHOUSE.

Notez que l’opération CREATE USER ne vérifie pas l’existence de l’entrepôt.

Par défaut : NULL

DEFAULT_NAMESPACE = string

Spécifie l’espace de noms (base de données uniquement ou base de données et schéma) qui est actif par défaut pour la session de l’utilisateur lors de la connexion :

  • Pour spécifier une base de données uniquement, saisissez le nom de la base de données.

  • Pour spécifier un schéma, saisissez le nom du schéma complet sous la forme db_name.schema_name

Un utilisateur peut spécifier ou modifier son espace de noms par défaut actuel en utilisant ALTER USER. De plus, après avoir démarré une session (c’est-à-dire après s’être connecté), un utilisateur peut modifier l’espace de noms de sa session en utilisant USE DATABASE ou USE SCHEMA.

Notez que l’opération CREATE USER ne vérifie pas l’existence de l’espace de noms.

Par défaut : NULL

DEFAULT_ROLE = string

Spécifie le rôle primaire qui est actif par défaut pour la session de l’utilisateur lors de la connexion. Le rôle primaire est un rôle unique qui autorise l’exécution d’instructions CREATE <objet> ou de toute autre action SQL. Les autorisations d’effectuer ces actions peuvent être accordées au rôle primaire ou à tout rôle inférieur dans la hiérarchie des rôles.

Notez que spécifier un rôle par défaut pour un utilisateur n’accorde pas ce rôle à l’utilisateur. Le rôle doit être explicitement attribué à l’utilisateur utilisant la commande GRANT ROLE. En outre, l’opération CREATE USER ne vérifie pas l’existence du rôle.

Un utilisateur peut spécifier ou modifier son rôle par défaut actuel en utilisant ALTER USER. En outre, après avoir démarré une session (c’est-à-dire après s’être connecté), un utilisateur peut modifier le rôle de la session à l’aide de la commande USE ROLE. Dans les deux cas, seuls les rôles qui leur ont été explicitement attribués sont disponibles.

Par défaut : NULL

DEFAULT_SECONDARY_ROLES = ( 'ALL' )

Spécifie l’ensemble des rôles secondaires qui sont actifs pour la session de l’utilisateur lors de la connexion. Les rôles secondaires sont un ensemble de rôles qui autorisent toute action SQL autre que l’exécution d’instructions CREATE <objet>. Les autorisations d’effectuer ces actions peuvent être accordées au rôle primaire, aux rôles secondaires ou à tout rôle inférieur dans les hiérarchies de rôles.

Notez que spécifier un rôle secondaire par défaut pour un utilisateur n’accorde pas ce rôle à l’utilisateur. Le rôle doit également être explicitement attribué à l’utilisateur utilisant la commande GRANT ROLE.

Les valeurs suivantes sont prises en charge :

ALL :

Tous les rôles qui ont été accordés à l’utilisateur.

Notez que l’ensemble des rôles est réévalué lors de l’exécution de chaque instruction SQL. Si des rôles supplémentaires sont accordés à l’utilisateur, et que celui-ci exécute une nouvelle instruction SQL, les rôles nouvellement accordés sont des rôles secondaires actifs pour la nouvelle instruction SQL. La même logique s’applique aux rôles qui sont révoqués à un utilisateur.

Par défaut : NULL

MINS_TO_BYPASS_MFA = integer

Spécifie le nombre de minutes de la désactivation temporaire de la MFA pour l’utilisateur.

Cette propriété peut être utilisée pour permettre à un utilisateur MFA inscrit de contourner temporairement la MFA pendant la connexion au cas où son appareil MFA n’est pas disponible.

RSA_PUBLIC_KEY = string

Spécifie la clé publique RSA de l’utilisateur, utilisée pour l’authentification par paire de clés.

RSA_PUBLIC_KEY_FP = string

Spécifie l’empreinte digitale de la clé publique RSA de l’utilisateur ; utilisée pour l”authentification par paire de clés.

RSA_PUBLIC_KEY_2 = string

Spécifie la deuxième clé publique RSA de l’utilisateur ; utilisée pour faire pivoter les clés publiques et privées pour l’authentification par paire de clés en fonction d’un calendrier d’expiration défini par votre organisation.

RSA_PUBLIC_KEY_2_FP = string

Spécifie l’empreinte digitale de la deuxième clé publique RSA de l’utilisateur ; utilisée pour assurer la rotation des clés publiques et privées pour l”authentification par paire de clés en fonction d’une planification d’expiration défini par votre organisation.

COMMENT = 'string_literal'

Spécifie un commentaire pour l’utilisateur.

Par défaut : NULL

Paramètres d’objet facultatifs (objectParams)

ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR = { TRUE | FALSE }

Contrôlez la manière dont les requêtes qui échouent en raison d’erreurs de syntaxe ou d’analyse apparaissent dans l’historique des requêtes. Si FALSE, le contenu d’une requête qui a échoué est rédigé dans les vues, les pages et les fonctions qui fournissent un historique des requêtes.

Ce paramètre détermine le comportement de l’utilisateur qui voit l’historique de la requête, et non de l’utilisateur qui a exécuté la requête.

Seuls les utilisateurs dont le rôle est doté du privilège AUDIT ou qui en héritent peuvent définir le paramètre ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR.

NETWORK_POLICY = string

Spécifie qu’une stratégie réseau existante est active pour l’utilisateur. La stratégie réseau restreint la liste des adresses IP des utilisateurs lors de l’échange d’un code d’autorisation contre un jeton d’accès ou d’actualisation et lors de l’utilisation d’un jeton d’actualisation pour obtenir un nouveau jeton d’accès.

Si ce paramètre n’est pas défini, la politique réseau du compte (le cas échéant) est utilisée à la place.

Paramètres de session facultatifs (sessionParams)

Spécifie un (ou plusieurs) paramètre(s) de session par défaut à définir pour l’utilisateur (séparés par des espaces, des virgules ou de nouvelles lignes). Ces valeurs par défaut sont définies chaque fois que l’utilisateur se connecte à Snowflake et lance une session. L’utilisateur peut toujours modifier lui-même ces valeurs par défaut au cours de la session en utilisant ALTER SESSION.

Pour obtenir la liste complète des paramètres de session, y compris leurs valeurs par défaut, qui peuvent être spécifiées pour un utilisateur, voir Paramètres.

Paramètres facultatifs

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )

Spécifie le nom de la balise et la valeur de la chaîne de la balise.

La valeur de la balise est toujours une chaîne de caractères et le nombre maximum de caractères pour la valeur de la balise est 256.

Pour plus de détails sur la spécification des balises dans une instruction, voir Quotas de balises pour les objets et les colonnes.

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette commande SQL doit avoir les privilèges suivants définis au minimum ainsi :

Privilège

Objet

Remarques

CREATE USER

Compte

Only the USERADMIN role, or a higher role, has this privilege by default. The privilege can be granted to additional roles as needed.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

  • Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.

Exemples

Créer un utilisateur avec toutes les propriétés par défaut, un rôle par défaut et un mot de passe de base qui doit être modifié par l’utilisateur après sa première connexion :

CREATE USER user1 PASSWORD='abc123' DEFAULT_ROLE = myrole DEFAULT_SECONDARY_ROLES = ('ALL') MUST_CHANGE_PASSWORD = TRUE;
Copy