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.toml
spécifiques, tels queSNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD
Connexions définies dans le fichier
config.toml
manuellement ou en utilisant la commandesnow connection add
Variables 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 de connexion sont stockées dans la section (connexions) du fichier config.toml, comme suit :
[connections.myconnection]
account = "myaccount"
user = "jondoe"
password = "hunter2"
warehouse = "my-wh"
database = "my_db"
schema = "my_schema"
La définition de connexion prend 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 :
default_connection_name = "myconnection"
[connections.myconnection]
account = "myaccount"
...
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 :
chown $USER connections.toml
chmod 0600 connections.toml
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¶
Pour créer une nouvelle connexion et l’ajouter au fichier de configuration, procédez comme suit :
Exécutez la commande
snow connection add
:
snow connection add
Lorsque vous y êtes invité, fournissez les paramètres de connexion, de compte et de nom d’utilisateur requis, ainsi que tous les autres paramètres facultatifs souhaités.
Name for this connection: <connection-name> Snowflake account name: <account-name> Snowflake username: <user-name> Snowflake password [optional]: <password-value> Role for the connection [optional]: <role-name> Warehouse for the connection [optional]: <warehouse-name> Database for the connection [optional]: <database-name> Schema for the connection [optional]: <schema-name> Connection host [optional]: <host-name> Connection port [optional]: <port-value> Snowflake region [optional]: <region-name> Authentication method [optional]: <authentication-method> Path to private key file [optional]: <path-to-private-key> Path to token file [optional]: <path-to-mfa-token> Wrote new connection myconnection2 to config.toml
Vous pouvez également ajouter des valeurs pour des paramètres spécifiques sur la ligne de commande, comme indiqué :
snow --config-file config.toml connection add -n myconnection2 --account myaccount2 --user jdoe2
Note
Si la commande se termine par 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
.
Lister les connexions définies¶
Pour lister les connexions disponibles, entrez la commande snow connection list
, comme indiqué :
snow connection list
+-------------------------------------------------------------------------------------------------+
| connection_name | parameters | is_default |
|-----------------+------------------------------------------------------------------+------------|
| myconnection | {'account': 'myaccount', 'user': 'jondoe', 'password': '****', | False |
| | 'database': 'my_db', 'schema': 'my_schema', 'warehouse': | |
| | 'my-wh'} | |
| myconnection2 | {'account': 'myaccount2', 'user': 'jdoe2'} | False |
+-------------------------------------------------------------------------------------------------+
Tester une connexion¶
Pour tester si une connexion peut se connecter avec succès à Snowflake, entrez la commande snow connection test
, semblable à la suivante :
snow connection test -c myconnection2
+--------------------------------------------------+
| key | value |
|-----------------+--------------------------------|
| Connection name | myconnection2 |
| Status | OK |
| Host | example.snowflakecomputing.com |
| Account | myaccount2 |
| User | jdoe2 |
| Role | ACCOUNTADMIN |
| Database | not set |
| Warehouse | not set |
+--------------------------------------------------+
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
:
snow connection set-default myconnection2
Default connection set to: 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_ACCOUNT
SNOWFLAKE_USER
SNOWFLAKE_PASSWORD
SNOWFLAKE_DATABASE
SNOWFLAKE_SCHEMA
SNOWFLAKE_ROLE
SNOWFLAKE_WAREHOUSE
SNOWFLAKE_AUTHENTICATOR
SNOWFLAKE_PRIVATE_KEY_PATH
SNOWFLAKE_SESSION_TOKEN
SNOWFLAKE_MASTER_TOKEN
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.
snow sql --help
╭─ Connection configuration ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --connection,--environment -c TEXT Name of the connection, as defined in your config.toml. Default: default. │
│ --host TEXT Host address for the connection. Overrides the value specified for the connection. │
│ --port INTEGER Port for the connection. Overrides the value specified for the connection. │
│ --account,--accountname TEXT Name assigned to your Snowflake account. Overrides the value specified for the │
│ connection. │
│ --user,--username TEXT Username to connect to Snowflake. Overrides the value specified for the connection. │
│ --password TEXT Snowflake password. Overrides the value specified for the connection. │
│ --authenticator TEXT Snowflake authenticator. Overrides the value specified for the connection. │
│ --private-key-file,--private-key-path TEXT Snowflake private key file path. Overrides the value specified for the connection. │
│ --token-file-path TEXT Path to file with an OAuth token that should be used when connecting to Snowflake │
│ --database,--dbname TEXT Database to use. Overrides the value specified for the connection. │
│ --schema,--schemaname TEXT Database schema to use. Overrides the value specified for the connection. │
│ --role,--rolename TEXT Role to use. Overrides the value specified for the connection. │
│ --warehouse TEXT Warehouse to use. Overrides the value specified for the connection. │
│ --temporary-connection -x Uses connection defined with command line parameters, instead of one defined in │
│ config │
│ --mfa-passcode TEXT Token to use for multi-factor authentication (MFA) │
│ --enable-diag Run python connector diagnostic test │
│ --diag-log-path TEXT Diagnostic report path │
│ --diag-allowlist-path TEXT Diagnostic report path to optional allowlist │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Prudence
Pour une sécurité améliorée, Snowflake recommande fortement d’utiliser SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD
ou la variable d’environnement SNOWFLAKE_PASSWORD
.
Utiliser une connexion temporaire¶
Vous pouvez également spécifier les paramètres de connexion à partir de la ligne de commande en utilisant l’option --temporary-connection [-x]
. Cela ignore toutes les définitions de config.toml
et utilise à la place celles spécifiées par les options de la ligne de commande. Cette approche peut être utile dans les cas d’utilisation de CI/CD lorsque vous ne souhaitez pas utiliser de fichier de configuration. Lorsque vous utilisez une connexion temporaire, Snowflake CLI ignore les variables de connexion définies dans le fichier config.toml
, mais utilise les variables d’environnement <label-snowcli_environment_creds>, telles que SNOWFLAKE_ACCOUNT
, que vous avez définies.
snow sql -q "select 42;" --temporary-connection \
--account myaccount \
--user jdoe
select 42;
+----+
| 42 |
|----|
| 42 |
+----+
Prudence
Pour une sécurité améliorée, Snowflake recommande fortement d’utiliser SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD
ou la variable d’environnement SNOWFLAKE_PASSWORD
.
Autres moyens d’authentifier votre connexion¶
Vous pouvez également utiliser les méthodes suivantes pour authentifier votre connexion à Snowflake :
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-file
dans la commandesnow connection add
, comme indiqué :snow connection add \ --connection jwt \ --authenticator SNOWFLAKE_JWT \ --private-key-file ~/.ssh/sf_private_key.p8
Utilisez le fichier de configuration :
[connections.jwt] account = "my_account" user = "jdoe" authenticator = "SNOWFLAKE_JWT" private_key_file = "~/sf_private_key.p8"
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.
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 OATH, vous pouvez effectuer l’une des opérations suivantes :
Précisez l’option
--token-file-path
dans la commandesnow connection add
, comme indiqué :snow connection add --token-file-path "my-token.txt"
Dans le fichier
config.toml
, définissezauthenticator = "oauth"
, et ajoutez le paramètretoken_file_path
à la définition de connexion, comme indiqué :[connections.oauth] account = "my_account" user = "jdoe" authenticator = "oauth" token_file_path = "my-token.txt"
Utiliser l’authentification multifactorielle (MFA)¶
Pour utiliser MFA :
Configurez l”authentification multifactorielle dans Snowflake et définissez le paramètre
authenticator
sursnowflake
(qui est une valeur par défaut).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 <code d'accès>
ou définissezpasscode_in_password = true
dansconfig.toml
et incluez le code d’accès dans votre mot de passe comme décrit dans Utilisation de MFA dans Python.
Pour activer la mise en cache de MFA :
Pour votre compte, définissez
ALLOW_CLIENT_MFA_CACHING = true
.Dans votre fichier
config.toml
, ajoutezauthenticator = username_password_mfa
à votre connexion.
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 configurer votre connexion en utilisant les instructions pour Python.