Authentification multifactorielle (MFA)¶
L’authentification multifactorielle (MFA) réduit les risques de sécurité associés à l’authentification par mot de passe. Lorsqu’un utilisateur de mot de passe est inscrit à la MFA, il doit utiliser un deuxième facteur d’authentification lorsqu’il se connecte à Snowflake. Ces utilisateurs saisissent leur mot de passe, puis utilisent le deuxième facteur. Pour obtenir des informations sur la manière dont un utilisateur ajoute une méthode MFA qu’il peut utiliser comme deuxième facteur d’authentification, voir Configuration d’un deuxième facteur d’authentification.
MFA est destiné aux utilisateurs humains qui s’authentifient avec un mot de passe. Les utilisateurs de service doivent utiliser une autre forme d’authentification. Pour plus d’informations sur ces types d’utilisateurs, voir Types d’utilisateurs.
Important
Afin d’améliorer la sécurité de tous ses clients, Snowflake a décidé d’exiger la MFA pour toutes les connexions par mot de passe. Pour plus d’informations sur ce déploiement, voir Planifier l’abandon de la connexion par mot de passe à facteur unique.
Obligation des utilisateurs à s’inscrire à la MFA¶
Actuellement, les stratégies de mise en œuvre de la MFA pour votre organisation varient en fonction de l’existence ou non d’un compte au moment de l’activation du 2024_08 bundle de changements de comportement :
Si un compte existait avant l’activation du bundle 2024_08, vous devez alors configurer votre compte si vous voulez obliger les utilisateurs humains à utiliser la MFA. Pour des informations sur la mise en œuvre de la MFA afin d’exiger que tous les utilisateurs humains s’inscrivent à la MFA, voir Renforcement de l’authentification des utilisateurs ou des comptes à l’aide de la MFA.
Si le compte a été créé après l’activation du bundle 2024_08, tous les utilisateurs humains qui s’authentifient avec un mot de passe doivent s’inscrire à la MFA par défaut. Cette exigence de la MFA ne s’applique pas aux utilisateurs de service.
Si vous souhaitez désactiver l’exigence selon laquelle tous les utilisateurs humains doivent s’inscrire à la MFA, créez une politique d’authentification personnalisée avec
MFA_ENROLLMENT=OPTIONAL
, puis définissez la politique d’authentification sur le compte. Pour plus d’informations sur la création et la définition des politiques d’authentification, voir Politiques d’authentification.Sachez que la possibilité de se soustraire à l’obligation de la MFA est temporaire, voir Planifier l’abandon de la connexion par mot de passe à facteur unique.
Limite de la disponibilité des méthodes de MFA¶
Lorsqu’un utilisateur est inscrit à la MFA, il doit obligatoirement utiliser une méthode de MFA comme deuxième facteur d’authentification. Snowflake autorise les méthodes de MFA suivantes :
Authentification via une clé d’accès qui peut être stockée et accessible de différentes manières.
Authentification avec une application d’authentificateur qui génère un code d’accès à usage unique basé sur le temps (TOTP).
Authentification avec Duo.
Astuce
Lorsque vous décidez des méthodes MFA à autoriser, gardez à l’esprit les points suivants :
Les clés d’accès sont recommandées en raison de leur sécurité et de leur facilité d’utilisation.
Duo n’est pas répliqué comme les autres méthodes MFA.
En tant qu’administrateur, vous pouvez utiliser une politique d’authentification pour contrôler les méthodes MFA qui peuvent être utilisées comme deuxième facteur d’authentification. Par exemple, la politique d’authentification suivante permet aux utilisateurs d’utiliser une clé d’accès ou une application d’authentificateur comme deuxième facteur d’authentification, mais pas Duo :
CREATE AUTHENTICATION POLICY require_mfa_policy
MFA_AUTHENTICATION_METHODS = ('PASSWORD')
MFA_ENROLLMENT = REQUIRED
MFA_POLICY = (ALLOWED_METHODS = ('PASSKEY', 'TOTP'));
Si un utilisateur a précédemment configuré une méthode MFA qui est désormais interdite, la prochaine fois qu’il se connectera, il sera invité à s’authentifier à l’aide de la méthode préexistante, puis à configurer une nouvelle méthode autorisée.
Pour plus d’informations sur le paramètre MFA_POLICY, voir CREATE AUTHENTICATION POLICY.
Suppression des méthodes MFA d’un utilisateur¶
Vous pouvez supprimer une méthode MFA qu’un utilisateur a précédemment ajoutée afin qu’il ne puisse plus l’utiliser comme deuxième facteur d’authentification.
Exécutez la commande SHOW MFA METHODS et recherchez la valeur dans la colonne
name
. Par exemple, si vous supprimez une méthode MFA pour un utilisateurjoe
, exécutez ce qui suit et copiez lename
de la méthode MFA dans la sortie :SHOW MFA METHODS FOR USER joe;
+---------------+-----------------+------------------------+-------------------------------+---------------------------------+---------------------+ | name | type | comment | last_used | created_on | additional_info | +---------------+-----------------+------------------------+-------------------------------+---------------------------------+---------------------+ | TOTP-48A7 | TOTP | Authenticator App 48A7 | 2025-02-26 11:14:38.000 -0800 | 2025-02-26 11:13:19.000 -0800 | null | +---------------+-----------------+------------------------+-------------------------------+---------------------------------+---------------------+
Exécutez une instruction ALTER USER … REMOVE MFA METHOD pour supprimer la méthode MFA :
ALTER USER joe REMOVE MFA METHOD TOTP-48A7;
Récupération d’un utilisateur bloqué¶
Si un utilisateur de mot de passe est bloqué dans Snowflake parce qu’il n’a pas accès à un deuxième facteur d’authentification, un administrateur peut l’aider à retrouver la possibilité de se connecter en désactivant temporairement la MFA ou en aidant l’utilisateur à configurer une nouvelle méthode MFA.
Invitation de l’utilisateur à ajouter une nouvelle méthode MFA¶
Si un utilisateur perd l’accès à la méthode MFA qu’il utilise comme deuxième facteur d’authentification (par exemple, en perdant le YubiKey qui stocke sa clé d’accès), un administrateur peut aider l’utilisateur à configurer une nouvelle méthode MFA afin qu’il puisse se connecter à Snowflake.
Lorsqu’un utilisateur n’a pas accès à sa méthode MFA et doit en configurer une nouvelle, l’administrateur exécute une instruction ALTER USER … ENROLL MFA. Par exemple, si l’utilisateur joe
doit établir une nouvelle méthode MFA, l’administrateur peut exécuter ce qui suit :
ALTER USER joe ENROLL MFA;
Si l’utilisateur dispose d’une adresse électronique vérifiée, Snowflake lui envoie un courriel l’invitant à ajouter une méthode d’authentification MFA.
Si l’utilisateur n’a pas d’adresse électronique vérifiée, Snowflake renvoie l’URL d’une page qui invite l’utilisateur à ajouter une méthode d’authentification MFA. Les administrateurs peuvent envoyer cette URL à l’utilisateur bloqué.
Désactivation temporaire de la MFA¶
Si un administrateur doit désactiver temporairement la MFA pour un utilisateur, il peut exécuter une instruction ALTER USER … SET MINS_TO_BYPASS_MFA. Par exemple, pour désactiver temporairement la MFA afin que l’utilisateur joe
puisse s’authentifier avec un mot de passe à facteur unique pendant 30 minutes, exécutez ce qui suit :
ALTER USER joe SET MINS_TO_BYPASS_MFA = 30;
Configuration des administrateurs pour l’accès d’urgence¶
L’accès d’urgence fait référence à la possibilité de contourner les méthodes d’authentification normales. Les administrateurs ont besoin d’un accès d’urgence à Snowflake en cas d’indisponibilité de l’authentification normale, par exemple en cas de panne du fournisseur d’identité de l’organisation.
Dans de nombreux cas, les organisations fournissent un accès d’urgence en créant un utilisateur Snowflake dédié et en stockant ses identifiants de mot de passe dans un coffre-fort à clé cryptographique. Lorsque la MFA est appliquée, chaque administrateur qui utilise ce mot de passe doit disposer de sa propre méthode MFA qu’il peut utiliser comme second facteur d’authentification. Dans ces cas, Snowflake recommande à chaque administrateur de configurer une méthode MFA TOTP afin qu’il puisse utiliser une application d’authentificateur comme second facteur. L’utilisation de commentaires descriptifs lors de la configuration de la méthode MFA peut aider à distinguer les administrateurs.
Connexion à Snowflake via la MFA¶
La MFA est conçue principalement pour se connecter à Snowflake via l’interface Web, mais est également entièrement prise en charge par SnowSQL et les pilotes Snowflake JDBC, Node.js et ODBC.
Utilisation de la mise en cache des jetons MFA pour réduire le nombre d’invites lors de l’authentification — Facultatif¶
La mise en cache des jetons MFA peut contribuer à réduire le nombre d’invites qui doivent être réceptionnées lors de la connexion et de l’authentification à Snowflake, en particulier lorsque plusieurs tentatives de connexion sont effectuées dans un intervalle de temps relativement court.
Un jeton MFA mis en cache est valable pendant quatre heures au maximum.
Le jeton MFA mis en cache n’est pas valable si l’une des conditions suivantes est remplie :
Le paramètre ALLOW_CLIENT_MFA_CACHING est défini sur FALSE pour le compte ou l’utilisateur.
La méthode d’authentification change.
Les données identifiants de connexion d’authentification changent (c’est-à-dire le nom d’utilisateur et/ou le mot de passe).
Les identifiants de connexion d’authentification ne sont pas valables.
Le jeton mis en cache expire ou n’est pas valide sur le plan cryptographique.
Le nom de compte associé au jeton mis en cache change.
Le processus global que Snowflake utilise pour mettre en cache les jetons MFA est similaire à celui utilisé pour mettre en cache les jetons de connexion pour la connexion unique fédérée par navigateur. L’application cliente stocke le jeton MFA dans le keystore du système d’exploitation côté client. Les utilisateurs peuvent à tout moment supprimer le jeton MFA mis en cache dans le keystore.
Snowflake prend en charge la mise en cache des jetons MFA avec les pilotes, le connecteurs et les outils suivants sur macOS et Windows. Cette fonctionnalité n’est pas prise en charge sur Linux.
Snowflake CLI version 3.0 (ou ultérieure)
Version du pilote ODBC 2.23.0 (ou ultérieure).
Version du pilote JDBC 3.12.16 (ou ultérieure).
Connecteur Python pour la version Snowflake 2.3.7 (ou ultérieure).
Snowflake recommande de consulter des responsables de la sécurité interne et de la conformité avant d’activer la mise en cache des jetons MFA.
Astuce
La mise en cache des jetons MFA peut être combinée avec la mise en cache des connexions dans la connexion unique fédérée.
Pour combiner ces deux fonctionnalités, assurez-vous que le paramètre ALLOW_ID_TOKEN est réglé sur true
en tandem avec le paramètre ALLOW_CLIENT_MFA_CACHING .
Pour activer la mise en cache du jeton MFA, suivez ces étapes :
En tant qu’administrateur de compte (c’est-à-dire un utilisateur avec le rôle système ACCOUNTADMIN), définissez le paramètre ALLOW_CLIENT_MFA_CACHING sur
true
pour un compte en utilisant la commande ALTER ACCOUNT.ALTER ACCOUNT SET ALLOW_CLIENT_MFA_CACHING = TRUE;
Dans la chaîne de connexion du client, mettez à jour la valeur de l’authentificateur sur
authenticator = username_password_mfa
.Ajoutez le paquet ou les bibliothèques requis par le pilote ou le connecteur :
Si vous utilisez le connecteur Snowflake pour Python, installez le paquet du « trousseau » facultatif en exécutant :
pip install "snowflake-connector-python[secure-local-storage]"
Vous devez saisir les crochets (
[
et]
) comme indiqué dans la commande. Les crochets spécifient la partie supplémentaire du paquet qui doit être installée.Utilisez des guillemets autour du nom du paquet (comme indiqué) pour éviter que les crochets ne soient interprétés comme des caractères génériques.
Si vous devez installer d’autres « extras » (par exemple,
pandas
pour à l’aide des APIs du connecteur Python pour Pandas), utilisez une virgule entre les extras :pip install "snowflake-connector-python[secure-local-storage,pandas]"
Pour le pilote JDBC Snowflake, voir Ajouter les classes JNA à votre classpath.
Pour désactiver la mise en cache des jetons MFA, il convient de désactiver le paramètre ALLOW_CLIENT_MFA_CACHING :
ALTER ACCOUNT UNSET ALLOW_CLIENT_MFA_CACHING;
Pour trouver tous les utilisateurs qui utilisent la mise en cache des jetons MFA comme authentification de deuxième facteur pour se connecter, vous pouvez exécuter l’instruction SQL suivante en tant qu’administrateur de compte (un utilisateur ayant le rôle ACCOUNTADMIN) :
SELECT EVENT_TIMESTAMP,
USER_NAME,
IS_SUCCESS
FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
WHERE SECOND_AUTHENTICATION_FACTOR = 'MFA_TOKEN';
Utilisation de MFA avec SnowSQL¶
La MFA peut être utilisée pour se connecter à Snowflake par SnowSQL. Par défaut, le mécanisme d’authentification Duo Push est utilisé lorsqu’un utilisateur est inscrit dans la MFA.
Pour utiliser un code d’accès généré par Duo à la place du mécanisme Push, les paramètres de connexion doivent inclure l’une des options de connexion suivantes :
--mfa-passcode <chaîne>
OR--mfa-passcode-in-password
Pour plus de détails, voir SnowSQL (CLI client).
Utilisation de MFA avec JDBC¶
La MFA peut être utilisée pour se connecter à Snowflake via le pilote Snowflake JDBC. Par défaut, le mécanisme d’authentification Duo Push est utilisé lorsqu’un utilisateur est inscrit dans la MFA. Aucune modification de la chaîne de connexion JDBC n’est nécessaire.
Pour utiliser un code d’accès généré par Duo à la place du mécanisme Push, l’un des paramètres suivants doit être inclus dans la chaîne de connexion JDBC :
passcode=<passcode_string>
ORpasscodeInPassword=on
Où :
passcode_string
est un mot de passe généré par Duo pour l’utilisateur qui se connecte. Il peut s’agir d’un mot de passe généré par l’application Duo Mobile ou d’un mot de passe SMS.Si
passcodeInPassword=on
, le mot de passe et le code d’accès sont concaténés, sous la forme de<password_string><passcode_string>
.
Pour plus de détails, voir Pilote JDBC.
Exemples de chaînes de connexion JDBC utilisant Duo¶
Chaîne de connexion JDBC pour l’utilisateur demo
se connectant au compte xy12345
(dans la région US Ouest) en utilisant un code d’accès Duo :
jdbc:snowflake://xy12345.snowflakecomputing.com/?user=demo&passcode=123456
Chaîne de connexion JDBC pour l’utilisateur demo
se connectant au compte xy12345
(dans la région US Ouest) en utilisant un code d’accès Duo intégré dans le mot de passe :
jdbc:snowflake://xy12345.snowflakecomputing.com/?user=demo&passcodeInPassword=on
Utilisation de la MFA avec Node.js¶
La MFA peut être utilisée pour se connecter à Snowflake par l’intermédiaire du pilote Node.js de Snowflake. Par défaut, le mécanisme d’authentification Duo Push est utilisé lorsqu’un utilisateur est inscrit dans la MFA.
Pour utiliser un code d’accès généré par Duo à la place du mécanisme Push, les paramètres de connexion doivent inclure l’une des options de connexion suivantes. Les deux exemples utilisent le mot de passe abc123
et le code d’accès MFA 987654
pour illustrer la configuration.
Définissez l’option
passcodeInPassword
surtrue
et incluez le code d’accès dans la chaîne de mot de passe, comme suit :authenticator: 'USERNAME_PASSWORD_MFA', password: "abc123987654", // passcode 987654 is part of the password passcodeInPassword: true // because passcodeInPassword is true
Définissez l’option
passcode
sur la valeur du code d’accès pour spécifier le mot de passe et le code d’accès séparément, de façon similaire à ce qui suit :authenticator: 'USERNAME_PASSWORD_MFA', password: "abc123", // password and MFA passcode are input separately passcode: "987654"
Pour utiliser cette approche, assurez-vous que l’option codenowrap:
passcodeInPassword
estfalse
(la valeur par défaut). Si lepasscodeInPassword
est défini surtrue
et que lecode d'accès
:codenowrap: est également configuré, le paramètrepasscodeInPassword
:codenowrap: a la priorité et le pilote suppose que lemot de passe
:codenowrap: contient à la fois le mot de passe et le code d’accès MFA lors de l’authentification.
Pour plus de détails, voir Utiliser un code d’accès de MFA.
Utilisation de MFA avec ODBC¶
La MFA peut être utilisée pour se connecter à Snowflake via le pilote Snowflake ODBC. Par défaut, le mécanisme d’authentification Duo Push est utilisé lorsqu’un utilisateur est inscrit dans la MFA. Aucune modification des paramètres ODBC n’est nécessaire.
Pour utiliser un code d’accès généré par Duo à la place du mécanisme Push, l’un des paramètres suivants doit être spécifié pour le pilote :
passcode=<passcode_string>
ORpasscodeInPassword=on
Où :
passcode_string
est un mot de passe généré par Duo pour l’utilisateur qui se connecte. Il peut s’agir d’un mot de passe généré par l’application Duo Mobile ou d’un mot de passe SMS.Si
passcodeInPassword=on
, le mot de passe et le code d’accès sont concaténés, sous la forme de<password_string><passcode_string>
.
Pour plus de détails, voir Pilote ODBC.
Utilisation de la MFA avec Python¶
La MFA peut être utilisée pour se connecter à Snowflake via le connecteur Python de Snowflake. Par défaut, le mécanisme d’authentification Duo Push est utilisé lorsqu’un utilisateur est inscrit dans la MFA. Aucune modification des appels API Python n’est nécessaire.
Pour utiliser un code d’accès généré par Duo à la place du mécanisme Push, l’un des paramètres suivants doit être spécifié pour le pilote dans la méthode de connexion () :
passcode=<passcode_string>
ORpasscode_in_password=True
Où :
passcode_string
est un mot de passe généré par Duo pour l’utilisateur qui se connecte. Il peut s’agir d’un mot de passe généré par l’application Duo Mobile ou d’un mot de passe SMS.Si
passcode_in_password=True
, le mot de passe et le code d’accès sont concaténés, sous la forme de<password_string><passcode_string>
.
Pour plus de détails, voir la description de la méthode connect() dans la section Fonctions de la documentation sur le connecteur API Python.