Authentification multifactorielle (MFA)

Snowflake prend en charge l’authentification multifactorielle (c’est-à-dire MFA) pour offrir une sécurité de connexion accrue aux utilisateurs se connectant à Snowflake. L’assistance MFA est fournie sous la forme d’une fonction Snowflake intégrée, alimentée par le service Duo Security, qui est entièrement géré par Snowflake.

Les utilisateurs n’ont pas besoin de s’inscrire séparément à Duo ou d’effectuer des tâches autres que l’installation de l’application Duo Mobile qui est prise en charge sur plusieurs plateformes de smartphone (iOS, Android, Windows, etc.). Voir le Guide de l’utilisateur Duo pour plus d’informations sur les plateformes/dispositifs pris en charge et sur le fonctionnement de l’authentification multifactorielle Duo.

La MFA s’active par utilisateur. Toutefois, pour le moment, les utilisateurs ne sont pas automatiquement inscrits à la MFA. Pour utiliser la MFA, les utilisateurs doivent s’inscrire eux-mêmes.

Attention

Au minimum, Snowflake recommande fortement que tous les utilisateurs ayant le rôle ACCOUNTADMIN soient tenus d’utiliser la MFA.

Dans ce chapitre :

Conditions préalables

Le service d’application Duo communique par le port TCP 443.

Pour assurer un comportement cohérent, mettez à jour les paramètres de votre pare-feu pour inclure le service d’application Duo sur le port TCP 443.

*.duosecurity.com:443

Pour plus d’informations, consultez la documentation Duo.

Flux de connexion MFA

Le diagramme suivant illustre le flux de connexion global pour un utilisateur inscrit dans MFA, quelle que soit l’interface utilisée pour se connecter :

MFA login flow

Inscription d’un utilisateur Snowflake à la MFA

Tout utilisateur de Snowflake peut s’auto-inscrire à la MFA via l’interface Web. Pour plus d’informations, voir Gestion de vos préférences d’utilisateur.

Gestion de la MFA pour votre compte et vos utilisateurs

Au niveau du compte, la MFA n’exige aucune gestion. Elle est automatiquement activée pour votre compte, et est disponible pour tous vos utilisateurs pour qu’ils s’y auto-inscrivent. Cependant, vous pouvez trouver nécessaire de désactiver MFA pour un utilisateur, soit temporairement soit de manière permanente, par exemple si l’utilisateur perd son téléphone ou change de numéro de téléphone et ne peut pas se connecter avec MFA.

Vous pouvez utiliser les propriétés suivantes pour que la commande ALTER USER exécute ces tâches :

  • MINS_TO_BYPASS_MFA

    Spécifie le nombre de minutes de la désactivation temporaire de la MFA avant que l’utilisateur puisse se connecter. Une fois le temps écoulé, la MFA est appliquée et l’utilisateur ne peut plus se connecter sans le jeton temporaire généré par l’application Duo Mobile.

  • DISABLE_MFA

    Désactive la MFA pour l’utilisateur, annulant ainsi son inscription. Pour utiliser la MFA à nouveau, l’utilisateur doit se réinscrire.

    Note

    DISABLE_MFA n’est pas une colonne dans une table ou une vue Snowflake. Lorsqu’un administrateur de compte exécute la commande ALTER USER pour régler DISABLE_MFA sur TRUE, la valeur de la propriété EXT_AUTHN_DUO est automatiquement réglée sur FALSE.

    Pour vérifier que MFA est désactivé pour un utilisateur donné, exécutez une instruction DESCRIBE USER et vérifiez la valeur de la propriété EXT_AUTHN_DUO .

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 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 :

  1. Le paramètre ALLOW_CLIENT_MFA_CACHING est défini sur FALSE pour le compte ou l’utilisateur.

  2. La méthode d’authentification change.

  3. Les données identifiants de connexion d’authentification changent (c’est-à-dire le nom d’utilisateur et/ou le mot de passe).

  4. Les identifiants de connexion d’authentification ne sont pas valables.

  5. Le jeton mis en cache expire ou n’est pas valide sur le plan cryptographique.

  6. 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 versions clientes suivantes :

  • 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 :

  1. En tant qu’administrateur de compte (c’est-à-dire un utilisateur avec le rôle système ACCOUNTADMIN), mettez le paramètre ALLOW_CLIENT_MFA_CACHING sur true pour un compte en utilisant la commande ALTER ACCOUNT ou un utilisateur en utilisant la commande ALTER USER .

    -- account-level
    
    alter account set allow_client_mfa_caching = true;
    
  2. Dans la chaîne de connexion du client, mettez à jour la valeur de l’authentificateur sur authenticator = username_password_mfa.

  3. Ajoutez le paquet ou les bibliothèques requis par le pilote ou le connecteur :

    • Si vous utilisez le connecteur Snowflake pour Python, installez le package 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 package qui doit être installée.

      Utilisez des guillemets autour du nom du package (comme indiqué) pour éviter que les crochets ne soient interprétés comme des caractères génériques.

      If you need to install other extras (for example, pandas for using the Python Connector APIs for Pandas), use a comma between the extras:

      pip install "snowflake-connector-python[secure-local-storage,pandas]"
      
    • Pour le pilote JDBC Snowflake, voir Ajout de classes JNA à votre classpath.

Pour désactiver la mise en cache du jeton MFA , il faut supprimer le paramètre ALLOW_CLIENT_MFA_CACHING .

Utilisation de la MFA avec l’interface Web

Pour vous connecter à l’interface Web de Snowflake avec la MFA :

  1. Dirigez votre navigateur sur URL de votre compte (ex. https://xy12345.snowflakecomputing.com, https://xy12345.eu-central-1.snowflakecomputing.com).

  2. Saisissez vos identifiants (nom d’utilisateur et mot de passe).

    MFA login
  3. Si la fonction Duo Push est activée, une notification Push est envoyée à votre application Duo Mobile. Lorsque vous recevez la notification, cliquez simplement sur Approve et vous serez connecté à Snowflake.

    MFA approval

    Comme le montre la capture d’écran ci-dessus, au lieu d’utiliser la notification Push, vous pouvez également choisir de :

    • Cliquez sur Call Me pour recevoir les instructions de connexion lors d’un appel téléphonique vers l’appareil mobile enregistré

    • Cliquer sur Enter a Passcode pour vous connecter en entrant manuellement un code d’accès fourni par l’application Duo Mobile.

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 (client CLI).

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=<chaîne_code_accès> OR passcodeInPassword=on

Où :

  • chaine_code_accès 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 <chaîne_mdp><chaîne_code_accès>.

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 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=<chaîne_code_accès> OR passcodeInPassword=on

Où :

  • chaine_code_accès 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 <chaîne_mdp><chaîne_code_accès>.

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=<chaîne_code_accès> OR passcode_in_password=True

Où :

  • chaine_code_accès 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 <chaîne_mdp><chaîne_code_accès>.

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.

Codes d’erreur MFA

Les codes d’erreur suivants sont associés à MFA et peuvent être renvoyés pendant le flux d’authentification.

Les erreurs s’affichent à chaque tentative de connexion échouée. Les données historiques sont également disponibles dans Schéma d’information et Account Usage :

Code d’erreur

Erreur

Description

390120

EXT_AUTHN_DENIED

L’authentification Duo Security a été refusée.

390121

EXT_AUTHN_PENDING

L’authentification Duo Security est en suspens.

390122

EXT_AUTHN_NOT_ENROLLED

L’utilisateur n’a pas souscrit à Duo Security. Contactez votre administrateur système local.

390123

EXT_AUTHN_LOCKED

Un verrou empêche l’accès de l’utilisateur à Duo Security. Contactez votre administrateur système local.

390124

EXT_AUTHN_REQUESTED

L’authentification Duo Security est nécessaire.

390125

EXT_AUTHN_SMS_SENT

Le code d’accès temporaire Duo Security est envoyé par SMS. Veuillez vous authentifier à l’aide du code d’accès.

390126

EXT_AUTHN_TIMEOUT

Le délai d’attente de l’approbation de votre demande de connexion via Duo Mobile a expiré. Si votre appareil mobile n’a pas de service de données, générez un code d’accès Duo et saisissez-le dans la chaîne de connexion.

390127

EXT_AUTHN_INVALID

Un code d’accès non valide a été spécifié.

390128

EXT_AUTHN_SUCCEEDED

L’authentification Duo Security a réussi.

390129

EXT_AUTHN_EXCEPTION

La demande n’a pas pu être achevée en raison d’un problème de communication avec le fournisseur de services externe. Veuillez réessayer plus tard.

390132

EXT_AUTHN_DUO_PUSH_DISABLED

Duo Push n’est pas activé pour votre MFA MFA. Saisissez un code d’accès intégré à une chaîne de connexion.