Gestion des connexions Snowflake¶
Avant de pouvoir utiliser Snowflake CLI, vous devez définir des connexions, qui spécifient comment Snowflake CLI se connecte à Snowflake. Snowflake CLI utilise la hiérarchie de priorité suivante pour déterminer la valeur à utiliser lorsqu’un paramètre de connexion est défini à plusieurs emplacements :
Paramètres de la ligne de commande
Variables d’environnement remplaçant des paramètres
config.tomlspécifiques, tels queSNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORDConnexions définies dans le fichier
config.tomlmanuellement ou en utilisant la commandesnow connection addVariables d’environnement génériques, telles que
SNOWFLAKE_USER.
Vous pouvez également utiliser l’option --temporary-connection, qui ne nécessite pas de la définir dans config.toml.
Prudence
Pour une sécurité améliorée, Snowflake recommande fortement d’utiliser SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD ou la variable d’environnement SNOWFLAKE_PASSWORD.
Définir les connexions¶
Les définitions des connexions sont stockées dans la section [connexions] du fichier config.toml, comme le bloc de code suivant :
Les définitions de connexion prennet en charge les mêmes options de configuration que Snowflake Connector pour Python. De plus, vous pouvez spécifier une connexion par défaut dans la variable default_connection_name en haut du fichier. Vous ne pouvez pas l’inclure dans une définition de connexion. Par exemple :
Note
Pour les systèmes MacOS et Linux, Snowflake CLI exige que le fichier config.toml limite ses autorisations à la lecture et à l’écriture pour le propriétaire du fichier uniquement. Pour définir les autorisations requises pour le fichier, exécutez les commandes suivantes :
Fichier de configuration alternatif¶
Note
Pour Snowflake CLI, Snowflake vous recommande d’utiliser le fichier config.toml pour les définitions de configuration. Toutefois, vous pouvez utiliser le fichier connections.toml, si vous le souhaitez.
Snowflake CLI prend également en charge le fichier de configuration connections.toml. Le fichier doit être placé dans le même répertoire que le fichier config.toml et ne doit contenir que des connexions. Les configurations dans connections.toml nécessitent un nom de section différent, sans connections. Par exemple, (connections.myconnection) serait juste (myconnection).
Note
Si les configurations config.toml et connections.toml contiennent toutes deux des connexions, Snowflake CLI n’utilise que les configurations de connections.toml.
Gérer ou ajouter vos connexions à Snowflake avec les commandes snow connection¶
Les commandes snow connection vous permettent de créer, de gérer et de tester les connexions Snowflake.
Ajouter une connexion¶
Note
Si vous devez ajouter une connexion pour Snowflake Open Catalog, voir Créer une connexion Snowflake CLI pour Open Catalog dans la documentation Open Catalog. Vous pourriez avoir besoin d’ajouter cette connexion pour des tâches telles que la configuration d’Open Catalog pour utiliser SSO.
Pour créer une nouvelle connexion et l’ajouter au fichier de configuration, procédez comme suit :
Exécutez la commande
snow connection add:When prompted, supply the required connection, account, and username parameters, as well as any other desired optional parameters. Note that additional parameters might be required depending on the authentication method you choose.
Vous pouvez également ajouter des valeurs pour des paramètres spécifiques sur la ligne de commande, comme indiqué :
Note
Si la commande aboutit à une erreur, par exemple si l’option --private_key_file fait référence à un fichier inexistant, la connexion n’est pas enregistrée dans le fichier de configuration config.toml.
Par défaut, la commande snow connection add demande des paramètres optionnels s’ils ne sont pas spécifiés sur la ligne de commande. Si vous souhaitez ajouter des connexions sans spécifier de paramètre facultatif comme account et ignorer les invites interactives, vous pouvez utiliser l’option --no-interactive, comme indiqué ci-dessous :
Après avoir ajouté une connexion, vous pouvez tester la connexion pour vous assurer qu’elle fonctionne correctement.
Lister les connexions définies¶
Pour lister les connexions disponibles, entrez la commande snow connection list, comme indiqué :
Tester et diagnostiquer une connexion¶
Pour tester si une connexion peut se connecter avec succès à Snowflake, entrez la commande snow connection test, semblable à la suivante :
Si vous rencontrez des problèmes de connectivité, vous pouvez effectuer des diagnostics directement dans Snowflake CLI. L’assistance Snowflake peut également demander ces informations pour vous aider à résoudre les problèmes de connectivité.
La collection de diagnostics utilise les options de commande suivantes snow connection test :
--enable-diagpour générer un rapport de diagnostic.--diag-log-pathpour spécifier le chemin absolu du rapport généré.--diag-allowlist-pathpour spécifier le chemin absolu vers un fichier JSON contenant la sortie des commandes SYSTEM$ALLOWLIST() or SYSTEM$ALLOWLIST_PRIVATELINK() SQL. Cette option n’est requise que si l’utilisateur défini dans la connexion n’a pas l’autorisation d’exécuter les fonctions de la liste d’autorisation du système ou si la connexion à l’URL du compte échoue.
L’exemple suivant génère un rapport de diagnostic pour la connexion myconnection2 et le stocke dans le fichier ~/report/SnowflakeConnectionTestReport.txt :
Vous pouvez consulter le rapport pour tout problème de connectivité et en discuter avec votre équipe réseau. Vous pouvez également fournir le rapport à l’assistance de Snowflake pour obtenir une assistance supplémentaire.
Supprimer une connexion¶
Vous pouvez utiliser la commande snow connection remove pour supprimer une connexion spécifique, comme suit :
Définir la connexion par défaut¶
Vous pouvez utiliser la commande snow connection set-default pour spécifier quelle configuration de Snowflake CLI devrait être utilisée par défaut, en remplaçant le fichier de configuration default_connection_name et les variables SNOWFLAKE_DEFAULT_CONNECTION_NAME, si définies.
L’exemple suivant définit la connexion par défaut sur myconnection2 :
Note
Si les fichiers connections.toml et config.toml sont tous les deux présents, Snowflake CLI utilise uniquement les connexions définies dans connections.toml.
Utiliser des variables d’environnement pour les identifiants de connexion Snowflake¶
Vous pouvez spécifier les identifiants de connexion de Snowflake dans les variables d’environnement du système plutôt que dans les fichiers de configuration. Vous pouvez utiliser les variables d’environnement génériques suivantes uniquement pour spécifier les paramètres de connexion :
SNOWFLAKE_ACCOUNTSNOWFLAKE_USERSNOWFLAKE_PASSWORDSNOWFLAKE_DATABASESNOWFLAKE_SCHEMASNOWFLAKE_ROLESNOWFLAKE_WAREHOUSESNOWFLAKE_AUTHENTICATORSNOWFLAKE_PRIVATE_KEY_PATHSNOWFLAKE_PRIVATE_KEY_RAWSNOWFLAKE_SESSION_TOKENSNOWFLAKE_MASTER_TOKENSNOWFLAKE_TOKENSNOWFLAKE_TOKEN_FILE_PATHSNOWFLAKE_OAUTH_CLIENT_IDSNOWFLAKE_OAUTH_CLIENT_SECRETSNOWFLAKE_OAUTH_AUTHORIZATION_URLSNOWFLAKE_OAUTH_TOKEN_REQUEST_URLSNOWFLAKE_OAUTH_REDIRECT_URISNOWFLAKE_OAUTH_SCOPESNOWFLAKE_OAUTH_DISABLE_PKCESNOWFLAKE_OAUTH_ENABLE_REFRESH_TOKENSSNOWFLAKE_OAUTH_ENABLE_SINGLE_USE_REFRESH_TOKENSSNOWFLAKE_CLIENT_STORE_TEMPORARY_CREDENTIALSNOWFLAKE_WORKLOAD_IDENTITY_PROVIDER
Transmettez les paramètres de connexion à la commande snow¶
Vous pouvez transmettre des paramètres de connexion directement dans chaque commande snow qui nécessite une connexion. Pour une liste complète des paramètres de configuration de connexion, exécutez la commande snow sql --help, comme indiqué. Notez que la sortie affiche uniquement la section avec les options de configuration de connexion.
Prudence
Pour une sécurité améliorée, Snowflake recommande fortement d’utiliser SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD ou la variable d’environnement SNOWFLAKE_PASSWORD.
Importer des connexions à partir de SnowSQL¶
Snowflake CLI est un outil de ligne de commande open-source explicitement conçu pour les charges de travail centrées sur les développeurs, en plus des opérations SQL. Snowflake CLI est un client CLI plus moderne, plus robuste et plus efficace que SnowSQL hérité. En plus de l’exécution de commandes SQL avec Snowflake CLI, vous pouvez également exécuter des commandes pour d’autres produits Snowflake tels que Streamlit dans Snowflake, Snowpark Container Services et Snowflake Native App Framework. Sachant que les nouvelles fonctionnalités et améliorations ne seront ajoutées qu’à Snowflake CLI, Snowflake vous recommande de commencer la transition de SnowSQLà Snowflake CLI.
Pour importer des connexions existantes définies dans SnowSQL dans votre fichier de configuration Snowflake CLI config.toml, utilisez la commande snow helpers import-snowsql-connections.
Pour importer des connexions SnowSQL, saisissez la commande snow helpers import-snowsql-connections semblable au bloc de code suivant qui importe les connexions SnowSQL à partir des emplacements des fichiers de configuration standard :
Au fur et à mesure que la commande traite les fichiers de configuration SnowSQL, elle affiche la progression et demande une confirmation lorsqu’une connexion portant le même nom est déjà définie dans le fichier Snowflake CLI config.toml :
Pour plus d’informations sur cette commande, voir la référence de commande snow helpers import-snowsql-connections.
Pour obtenir de l’aide sur la migration de SnowSQL à Snowflake CLI, voir Migrer de SnowSQL à Snowflake CLI.
Utiliser une connexion temporaire¶
You can also specify connection parameters from the command line using the --temporary-connection [-x] option. It ignores all definitions from the config.toml, using ones specified by command-line options instead. This approach can be helpful for CI/CD use cases when you don’t want to use a configuration file. When you use a temporary connection, Snowflake CLI ignores any connection variables defined in the config.toml file, but does still use any of the following environment variables you set:
SNOWFLAKE_ACCOUNTSNOWFLAKE_USERSNOWFLAKE_PASSWORDSNOWFLAKE_DATABASESNOWFLAKE_SCHEMASNOWFLAKE_ROLESNOWFLAKE_WAREHOUSESNOWFLAKE_AUTHENTICATORSNOWFLAKE_PRIVATE_KEY_FILESNOWFLAKE_PRIVATE_KEY_RAWSNOWFLAKE_PRIVATE_KEY_PATHSNOWFLAKE_SESSION_TOKENSNOWFLAKE_MASTER_TOKENSNOWFLAKE_TOKEN_FILE_PATHWORKLOAD_IDENTITY_PROVIDER
L’exemple suivant montre comment créer une connexion temporaire à l’aide d’un nom d’utilisateur et d’un mot de passe. Cet exemple suppose que vous avez stocké le mot de passe dans la variable d’environnement SNOWFLAKE_PASSWORD.
Prudence
Pour une sécurité améliorée, Snowflake recommande fortement d’utiliser SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD ou la variable d’environnement SNOWFLAKE_PASSWORD.
Pour plus de sécurité, vous pouvez utiliser un fichier de clé privée et enregistrer le chemin d’accès à votre fichier de clé privée dans la variable d’environnement SNOWFLAKE_PRIVATE_KEY_FILE, comme indiqué :
Vous pouvez alors créer une connexion temporaire sans spécifier les options, comme indiqué :
Lorsque vous utilisez les pipelines CI/CD avec l’authentification par paire de clés, il se peut que vous ne puissiez pas accéder aux fichiers de clés privées locales (SNOWFLAKE_PRIVATE_KEY_FILE). Dans ce cas, vous pouvez stocker la clé privée dans la variable d’environnement SNOWFLAKE_PRIVATE_KEY_RAW, comme indiqué :
Vous pouvez alors créer une connexion temporaire sans spécifier les options, comme indiqué :
Note
Si vous utilisez la variable d’environnement SNOWFLAKE_PRIVATE_KEY_RAW, vous ne devez pas non plus définir SNOWFLAKE_PRIVATE_KEY_FILE.
Autres moyens d’authentifier votre connexion¶
Vous pouvez également utiliser les méthodes suivantes pour authentifier votre connexion à Snowflake :
Utiliser le flux d’identifiants de connexion client OAuth 2.0
Utiliser la fédération d’identité de charge de travail (WIF)
Utiliser un fichier de clé privée pour l’authentification¶
Pour utiliser un fichier de clé privée pour l’authentification, la configuration de votre connexion exige que vous définissiez la valeur du paramètre authenticator sur SNOWFLAKE_JWT et que vous indiquiez le chemin d’accès au fichier contenant votre clé privée, comme indiqué ci-dessous :
Précisez l’option
--private_key-filedans la commandesnow connection add, comme indiqué :Utilisez le fichier de configuration :
Pour plus de détails sur la configuration de l’authentification par paire de clés, voir Authentification par paire de clés et rotation de paires de clés.
Snowflake CLI recherche la clé privée dans les paramètres de connexion dans l’ordre suivant :
Si
private_key_fileest spécifié, Snowflake CLI lit la clé dans le chemin du fichier spécifié.Si
private_key_pathest spécifié, Snowflake CLI lit la clé dans le chemin du fichier spécifié.Si
private_key_fileouprivate_key_pathne sont pas spécifiés, Snowflake CLI lit la clé directement à partir du paramètreprivate_key_raw.
Prudence
Si vous spécifiez votre clé privée dans le paramètre private_key_raw, Snowflake recommande d’utiliser les variables d’environnement SNOWFLAKE_CONNECTIONS_<NAME>_PRIVATE_KEY_RAW ou SNOWFLAKE_PRIVATE_KEY_RAW pour plus de sécurité.
Note
Si votre clé privée est protégée par un mot de passe, définissez la variable d’environnement PRIVATE_KEY_PASSPHRASE sur cette phrase secrète.
Utiliser l’authentification OAuth¶
Pour l’utiliser en vous connectant avec OAuth, vous pouvez effectuer l’une des opérations suivantes :
Précisez l’option
--token-file-pathdans la commandesnow connection add, comme indiqué :In the
config.tomlfile, setauthenticator = "OAUTH", and add thetoken_file_pathparameter to the connection definition, as shown:
Utiliser le flux d’identifiants de connexion client OAuth 2.0¶
Le flux d’identifiants de connexion client OAuth 2.0 fournit un moyen sûr pour l’authentification de machine à machine (M2M), comme Snowflake Connector pour Python qui se connecte à un service backend. Contrairement au flux du code d’autorisation OAuth 2.0, cette méthode ne s’appuie sur aucune donnée propre à l’utilisateur. Pour plus d’informations sur ce flux et ses paramètres, voir Activer le flux d’identifiants de connexion client OAuth 2.0 dans la documentation Snowflake Connector pour Python.
Pour utiliser le flux d’identifiants de connexion client OAuth 2.0, ajoutez à votre fichier config.toml une définition de connexion similaire à la suivante :
Utiliser l’authentification multifactorielle (MFA)¶
Pour utiliser MFA :
Set up multi-factor authentication in Snowflake and set the
authenticatorparameter toSNOWFLAKE(which is a default value).Si vous souhaitez utiliser un code d’accès généré par Duo au lieu du mécanisme Push, utilisez l’option
--mfa-passcode <passcode>ou définissezpasscode_in_password = truedans le fichierconfig.tomlet incluez le code d’accès dans votre mot de passe comme décrit dans Utilisation de la MFA avec Python.Note
Si vous souhaitez utiliser le code d’accès dans le mot de passe pour l’authentification, après l’exécution de la première commande
snow, vous ne pouvez plus fournir le code d’accès tant que le jeton est valide. Vous devez procéder comme suit :Supprimez le code d’accès du mot de passe.
Supprimez ou commentez le
passcode_in_password = truedans le fichierconfig.toml.
Utiliser la mise en cache MFA¶
La mise en cache MFA est une fonction de sécurité qui réduit la fréquence des invites de l’authentification multifactorielle (MFA) lors des connexions. Les invites MFA fréquentes peuvent perturber le flux de travail et diminuer la productivité. La mise en cache MFA résout ce problème en stockant en toute sécurité les informations de session MFA pendant une période donnée. L’utilisation de la mise en cache MFA vous permet de vous authentifier sans avoir à saisir plusieurs fois les codes MFA, pour autant qu’ils se situent dans la période de validité de la session mise en cache.
Pour activer la mise en cache de MFA :
Pour votre compte, définissez
ALLOW_CLIENT_MFA_CACHING = true.In your
config.tomlfile, addauthenticator = "USERNAME_PASSWORD_MFA"to your connection.
Pour plus d’informations, voir Utilisation de la mise en cache des jetons MFA pour réduire le nombre d’invites lors de l’authentification — Facultatif.
Utiliser SSO (authentification unique)¶
Si vous avez configuré Snowflake pour utiliser la connexion unique (SSO), vous pouvez configurer votre application cliente pour utiliser SSO pour l’authentification. Voir Utilisation de SSO avec des applications clientes qui se connectent à Snowflake pour plus de détails et configurez votre connexion à l’aide des instructions pour Python.
Utiliser un navigateur externe¶
Vous pouvez utiliser votre navigateur pour authentifier votre connexion Snowflake CLI avec n’importe quel fournisseur d’identité conforme à SAML 2.0 (IdP), comme Okta ou Active Directory Federation Services.
Note
L’authentificateur externalbrowser n’est pris en charge que dans les fenêtres de terminal ayant un accès au navigateur web. Par exemple, une fenêtre de terminal sur une machine distante accessible via une session SSH (Secure Shell) pourrait nécessiter une configuration supplémentaire pour ouvrir un navigateur Web.
Si vous n’avez pas accès à un navigateur web, mais que votre IdP est Okta, vous pouvez utiliser Okta natif en définissant l’authentificateur sur https://<okta_account_name>.okta.com.
Pour utiliser l’authentification externe du navigateur, utilisez l’une des méthodes suivantes :
Utilisez l’option de commande
snow connection add --authenticator:Set
authenticatortoEXTERNALBROWSERin yourconfig.tomlfile:
Utiliser PAT (jeton d’accès programmatique)¶
Le jeton d’accès programmatique (PAT) est une méthode d’authentification spécifique à Snowflake. La fonction doit être activée pour le compte avant son utilisation (voir Conditions préalables pour plus d’informations). L’authentification avec PAT n’implique aucune interaction humaine.
Pour utiliser PAT avec la connexion, définissez authenticator sur PROGRAMMATIC_ACCESS_TOKEN et token_file_path pour pointer le fichier avec le jeton, comme indiqué :
Pour plus d’informations sur les PATs, voir Utilisation de jetons d’accès programmatique pour l’authentification.
Utiliser la fédération d’identité de charge de travail (WIF)¶
La fédération d’identité de charge de travail (WIF) est une fonctionnalité qui vous permet d’utiliser l’identité votre environnement CI/CD pour vous authentifier auprès de Snowflake, sans avoir besoin d’identifiants de connexion statiques. Ceci est particulièrement utile dans les workflows automatisés, où il vous faut réduire le risque d’exposition des identifiants de connexion.
Pour plus d’informations, voir Fédération d’identité de charge de travail.
Configurer des connexions WIF¶
Pour configurer une connexion WIF, vous devez créer un compte de service dans Snowflake en suivant les étapes ci-dessous :
Créez un utilisateur de service dans Snowflake avec l’identité WORKLOAD_IDENTITY adéquate :
Configurer une connexion dans Snowflake CLI à l’aide de l’une des méthodes suivantes
Ajouter la connexion au fichier
config.tomlExécutez la commande
snow connection add:
où :
<provider type>est l’un des éléments suivants :
AWS
AZURE
GCP
OIDC
Note
Lorsque vous utilisez OIDC en tant que fournisseur, vous devez récupérer le jeton de votre environnement et le fournir à cli. Vous pouvez fournir un jeton récupéré via
le paramètre
--tokenla variable d’environnement
SNOWFLAKE_TOKENla variable d’environnement
SNOWFLAKE_CONNECTIONS_<connection_name>_TOKENtoken_file_pathdans votre fichierconfig.toml
Pour plus d’informations, voir Utilisation des actions Snowflake CLI.
Se connecter à Snowflake à l’aide d’une connexion WIF temporaire¶
Pour vous connecter à Snowflake à l’aide d’une connexion temporaire, vous pouvez utiliser la commande suivante :