Configuration de Snowflake CLI

Snowflake CLI utilise un fichier de configuration global appelé config.toml pour configurer les connexions et les journaux pour Snowflake CLI. Si le fichier n’existe pas, la première exécution d’une commande snow crée automatiquement un fichier config.toml vide que vous pouvez ensuite remplir avec les connexions souhaitées. Pour plus d’informations sur les formats de fichiers toml, consultez TOML (Tom’s Obvious Minimal Language). Les bibliothèques Python de Snowflake prennent en charge actuellement la version TOML de 1.0.0.

Le config.toml prend en charge les sections suivantes :

  • (connexions) pour définir et gérer les connexions

  • (journaux) pour configurer les types de messages enregistrés dans les fichiers journaux

Un fichier de configuration Snowflake CLI a la structure suivante :

default_connection_name = "myconnection"

[connections]
[connections.myconnection]
account = "myorganization-myaccount"
user = "jdoe"
...

[connections.testingconnection]
account = "myorganization-myaccount"
user = "jdoe"
...

[cli.logs]
save_logs = true
level = "info"
path = "/home/<username>/.snowflake/logs"
Copy

Emplacement du fichier de configuration .toml

Par défaut, Snowflake CLI cherche le fichier config.toml dans le répertoire ~/.snowflake ou, si ce répertoire n’existe pas, dans un emplacement spécifique au système, comme indiqué ci-dessous. Vous pouvez également spécifier quel fichier de configuration doit être utilisé en utilisant l’indicateur --config-file ou la variable d’environnement SNOWFLAKE_HOME.

  • Si vous spécifiez l’option --config-file option (par exemple, snow --config-file ./my-config-file-path), Snowflake CLI utilise le fichier de configuration spécifié.

  • Si la variable d’environnement SNOWFLAKE_HOME est définie, Snowflake CLI utilise l’emplacement spécifié par cette variable.

  • Si un répertoire ~/.snowflake existe sur votre machine, Snowflake Snowflake CLI utilise le fichier ~/.snowflake/config.toml.

  • Sinon, Snowflake CLI utilise le fichier config.toml dans l’un des emplacements suivants, en fonction de votre système d’exploitation :

    • Linux : ~/.config/snowflake/config.toml, mais vous pouvez le mettre à jour avec des variables XDG

    • Windows : %USERPROFILE%\AppData\Local\snowflake\config.toml

    • Mac : ~/Library/Application Support/snowflake/config.toml

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 config.toml
chmod 0600 config.toml
Copy

Choisir un fichier de configuration différent

Dans certaines situations, comme un environnement d’intégration continue et de déploiement continu (CI/CD), vous préférerez peut-être créer des fichiers de configuration dédiés aux pipelines de test et de déploiement plutôt que de définir toutes les configurations possibles dans un simple fichier de configuration par défaut de Snowflake.

Pour utiliser un fichier de configuration différent de votre fichier par défaut, vous pouvez utiliser l’option --config-file pour la commande snow, comme indiqué :

snow --config-file="my_config.toml" connection test
Copy

Prise en charge des variables d’environnement système

Snowflake CLI prend en charge l’utilisation de variables d’environnement système pour remplacer les valeurs de paramètres définies dans votre fichier config.toml, en utilisant le format suivant :

SNOWFLAKE_<config-section>_<variable>=<value>
Copy

où :

  • <config_section> est le nom d’une section dans le fichier de configuration avec des points (.) remplacé par des traits de soulignement (_), comme CLI_LOGS.

  • variable est le nom d’une variable définie dans cette section, telle que path.

Quelques exemples :

  • Remplacez le paramètre path dans la section [cli.logs] dans le fichier config.toml :

    export SNOWFLAKE_CLI_LOGS_PATH="/Users/jondoe/snowcli_logs"
    
    Copy
  • Définissez le mot de passe pour la connexion myconnection :

    export SNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD="*******"
    
    Copy
  • Définissez le nom de connexion par défaut :

    export SNOWFLAKE_DEFAULT_CONNECTION_NAME="myconnection"
    
    Copy

Ajouter une politique d’authentification qui limite l’accès à Snowflake CLI uniquement

Les utilisateurs peuvent créer une politique d’authentification qui limite l’autorisation d’accès aux pilotes, ainsi qu’à Snowflake CLI. Si vous souhaitez autoriser l’accès à Snowflake CLI uniquement (et exclure les pilotes), vous pouvez procéder comme suit :

  • Créez une nouvelle politique d’authentification qui limite strictement l’accès à Snowflake CLI.

  • Activez la politique dans le fichier config.toml.

Créer une politique d’authentification limitée à Snowflake CLI

Pour créer une nouvelle politique d’authentification pour Snowflake CLI uniquement, procédez comme suit :

  1. Exécutez la commande CREATE AUTHENTICATION POLICY SQL, en fixant le paramètre CLIENT_TYPES de manière à inclure 'SNOWFLAKE_CLI'.

CREATE AUTHENTICATION POLICY snowflake_cli_only
  CLIENT_TYPES = ('SNOWFLAKE_CLI');
Copy
  1. Ajoutez la politique à l’utilisateur, comme indiqué :

ALTER USER user1
  SET AUTHENTICATION POLICY snowflake_cli_only;
Copy

Activer la politique dans la configuration de Snowflake CLI

Le paramètre de configuration enable_separate_authentication_policy_id vous permet d’activer l’accès à Snowflake CLI séparément des pilotes. Lorsque cet accès est activé, les utilisateurs spécifiés peuvent accéder à Snowflake CLI mais pas aux autres pilotes Snowflake.

Avertissement

Si vous avez déjà une politique d’authentification qui autorise l’accès uniquement aux pilotes et que vous n’en avez pas concernant l’accès à Snowflake CLI, l’activation du paramètre enable_separate_authentication_policy_id fera perdre aux utilisateurs l’accès à Snowflake CLI si vous ne créez pas d’abord la nouvelle politique. Veillez à ajouter SNOWFLAKE_CLI à votre politique d’authentification avant d’activer le paramètre de configuration.

Pour activer la politique SNOWFLAKE_CLI, ajoutez le paramètre enable_separate_authentication_policy_id à la section [cli.features] du fichier config.toml, comme indiqué :

[cli.features]
enable_separate_authentication_policy_id = true
Copy

Note

L’activation de ce paramètre affecte toutes les connexions effectuées par Snowflake CLI.

Utiliser un serveur proxy

Pour utiliser un serveur de proxy, configurez les variables d’environnement suivantes :

  • HTTP_PROXY

  • HTTPS_PROXY

  • NO_PROXY

Par exemple :

Linux ou macOS:
export HTTP_PROXY='http://username:password@proxyserver.company.com:80'
export HTTPS_PROXY='http://username:password@proxyserver.company.com:80'
Copy
Windows:
set HTTP_PROXY=http://username:password@proxyserver.company.com:80
set HTTPS_PROXY=http://username:password@proxyserver.company.com:80
Copy

Astuce

Le modèle de sécurité de Snowflake ne permet pas les proxys Secure Sockets Layer (SSL) (utilisant un certificat HTTPS). Votre serveur de proxy doit utiliser une autorité de certification accessible au public (CA), réduisant ainsi les risques potentiels de sécurité tels qu’une attaque MITM (Man In The Middle) via un proxy compromis.

Si vous devez utiliser votre proxy SSL, nous vous recommandons fortement de mettre à jour la politique du serveur pour passer par le certificat Snowflake, afin qu’aucun certificat ne soit modifié au milieu des communications.

En option, NO_PROXY peut être utilisé pour contourner le proxy pour des communications spécifiques. Par exemple, l’accès à Amazon S3 peut contourner le serveur proxy en spécifiant NO_PROXY=".amazonaws.com".

NO_PROXY ne prend pas en charge les caractères génériques. Chaque valeur spécifiée doit être l’une des suivantes :

  • La fin d’un nom d’hôte (ou d’un nom d’hôte complet), par exemple :

    • .amazonaws.com

    • myorganization-myaccount.snowflakecomputing.com

  • Une adresse IP, par exemple :

    • 192.196.1.15

Si plusieurs valeurs sont spécifiées, elles doivent être séparées par des virgules, par exemple :

localhost,.my_company.com,.snowflakecomputing.com,192.168.1.15,192.168.1.16
Copy

Configurer la journalisation

Par défaut, Snowflake CLI enregistre automatiquement les messages de niveau INFO, WARNING et ERROR dans des fichiers journaux. Pour désactiver ou personnaliser la journalisation, créez une section [cli.logs] dans votre fichier config.toml :

[cli.logs]
save_logs = true
level = "info"
path = "/home/<username>/.snowflake/logs"
Copy

où :

  • save_logs indique s’il faut enregistrer les journaux dans des fichiers. Par défaut : true.

  • level spécifie les niveaux de message à enregistrer dans les fichiers journaux. Choisissez parmi les niveaux suivants, qui incluent tous les niveaux inférieurs à celui sélectionné :

    • debug

      Avertissement

      Le passage au niveau de journalisation debug peut exposer des informations sensibles, telles que les requêtes SQL exécutées. Soyez prudent lorsque vous activez ce niveau.

    • info

    • warning

    • error

    Par défaut : info

  • path spécifie le chemin absolu où enregistrer les fichiers journaux. Le format du chemin varie en fonction de votre système d’exploitation, comme indiqué ci-dessous :

    • Linux : path = "/home/<votre_nom_d_utilisateur>/.config/snowflake/logs"

    • MacOS : path = "/Users/<votre_nom_d_utilisateur>/Library/Application Support/snowflake/logs"

    • Windows : path = "C:\\Users\\<votre_nom_d_utilisateur>\\AppData\\Local\\snowflake\\logs"

    Si elle n’est pas spécifiée, la commande crée un répertoire logs dans l’emplacement par défaut du fichier config.toml.

Si votre config.toml a été créé automatiquement, le fichier config.toml contient la section `` |cli.logs| `` remplie de valeurs par défaut.

Les journaux d’une seule journée sont ajoutés au fichier snowflake-cli.log, qui est ensuite renommé snowflake-cli.log.YYYY-MM-DD, comme indiqué.

ls logs/
Copy
snowflake-cli.log            snowflake-cli.log.2024-10-22