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 que SNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD

  • Connexions définies dans le fichier config.toml manuellement ou en utilisant la commande snow 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"
Copy

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"
...
Copy

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
Copy

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 :

  1. Exécutez la commande snow connection add :

snow connection add
Copy
  1. 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
Copy

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
Copy
+-------------------------------------------------------------------------------------------------+
| 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
Copy
+--------------------------------------------------+
| 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
Copy
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
Copy
╭─ 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
Copy
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 commande snow connection add, comme indiqué :

    snow connection add \
       --connection jwt \
       --authenticator SNOWFLAKE_JWT \
       --private-key-file ~/.ssh/sf_private_key.p8
    
    Copy
  • Utilisez le fichier de configuration :

    [connections.jwt]
    account = "my_account"
    user = "jdoe"
    authenticator = "SNOWFLAKE_JWT"
    private_key_file = "~/sf_private_key.p8"
    
    Copy

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 commande snow connection add, comme indiqué :

    snow connection add --token-file-path "my-token.txt"
    
    Copy
  • Dans le fichier config.toml, définissez authenticator = "oauth", et ajoutez le paramètre token_file_path à la définition de connexion, comme indiqué :

    [connections.oauth]
    account = "my_account"
    user = "jdoe"
    authenticator = "oauth"
    token_file_path = "my-token.txt"
    
    Copy

Utiliser l’authentification multifactorielle (MFA)

Pour utiliser MFA :

  1. Configurez l”authentification multifactorielle dans Snowflake et définissez le paramètre authenticator sur snowflake (qui est une valeur par défaut).

  2. 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éfinissez passcode_in_password = true dans config.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 :

  1. Pour votre compte, définissez ALLOW_CLIENT_MFA_CACHING = true.

  2. Dans votre fichier config.toml, ajoutez authenticator = 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.