Konfigurieren von Snowflake CLI

Snowflake CLI verwendet eine globale Konfigurationsdatei namens config.toml, um Verbindungen und Protokolle für Snowflake CLI zu konfigurieren. Wenn die Datei nicht existiert, wird bei der ersten Ausführung eines beliebigen snow-Befehls automatisch eine leere config.toml-Datei erstellt, die Sie dann mit den gewünschten Verbindungen füllen können. Weitere Informationen zu toml-Dateiformaten finden Sie unter TOML (Tom’s Obvious Minimal Language). Die Snowflake-Python-Bibliotheken unterstützen derzeit TOML, Version 1.0.0.

Die config.toml unterstützt die folgenden Abschnitte:

  • [Verbindungen] zur Definition und zur Verwaltung von Verbindungen

  • [Protokolle] zum Konfigurieren, welche Arten von Meldungen in den Dateien gespeichert werden

Eine Snowflake CLI-Konfigurationsdatei hat die folgende Struktur:

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

Speicherort der .toml-Konfigurationsdatei

Standardmäßig sucht Snowflake CLI die Datei config.toml im Verzeichnis ~/.snowflake oder, falls dieses Verzeichnis nicht existiert, an einem systemspezifischen Speicherort, wie unten aufgelistet. Sie können auch mit dem Flag --config-file oder der Umgebungsvariablen SNOWFLAKE_HOME angeben, welche Datei für die Konfiguration verwendet werden soll.

  • Wenn Sie die Option --config-file angeben (z. B. snow --config-file ./my-config-file-path), verwendet Snowflake CLI die angegebene Konfigurationsdatei.

  • Wenn die Umgebungsvariable SNOWFLAKE_HOME eingestellt ist, verwendet Snowflake CLI den durch diese Variable angegebenen Speicherort.

  • Wenn auf Ihrem Computer ein Verzeichnis ~/.snowflake existiert, verwendet Snowflake CLI die Datei ~/.snowflake/config.toml.

  • Andernfalls verwendet die Snowflake CLI die Datei config.toml an einem der folgenden Speicherorte, abhängig von Ihrem Betriebssystem:

    • Linux: ~/.config/snowflake/config.toml, aber Sie können es mit XDG vars aktualisieren

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

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

Bemerkung

Bei Snowflake CLI unter MacOS oder Linux muss die Datei config.toml ihre Dateiberechtigungen darauf beschränken, dass das Lesen und Schreiben nur für den Eigentümer der Datei möglich ist. Um die erforderlichen Dateiberechtigungen festzulegen, führen Sie die folgenden Befehle aus:

chown $USER config.toml
chmod 0600 config.toml
Copy

Wählen Sie eine andere Konfigurationsdatei

In manchen Situationen, z. B. in Umgebungen mit kontinuierlicher Integration und kontinuierlicher Bereitstellung (CI/CD), ziehen Sie es vielleicht vor, eigene Konfigurationsdateien für Test- und Bereitstellungspipelines zu erstellen, anstatt alle möglichen Konfigurationen in einer einzelnen Snowflake-Standardkonfigurationsdatei zu definieren.

Um eine andere Konfigurationsdatei als Ihre Standarddatei zu verwenden, können Sie die Option --config-file für den Befehl snow verwenden, wie gezeigt:

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

Unterstützung von Systemumgebungsvariablen

Snowflake CLI unterstützt die Verwendung von Systemumgebungsvariablen, um Parameterwerte zu überschreiben, die in Ihrer config.toml-Datei definiert sind, und zwar im folgenden Format:

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

Wobei:

  • <config_section> ist der Name eines Abschnitts in der Konfigurationsdatei, wobei die Zeiträume (.) durch Unterstriche (_) ersetzt werden, z. B. CLI_LOGS.

  • variable ist der Name einer in diesem Abschnitt definierten Variable, z. B. path.

Einige Beispiele sind:

  • Überschreiben Sie den Parameter path im Abschnitt [cli.logs] in der config.toml-Datei:

    export SNOWFLAKE_CLI_LOGS_PATH="/Users/jondoe/snowcli_logs"
    
    Copy
  • Legen Sie das Kennwort für die Verbindung myconnection fest:

    export SNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD="*******"
    
    Copy
  • Legen Sie den Standardnamen für die Verbindung fest:

    export SNOWFLAKE_DEFAULT_CONNECTION_NAME="myconnection"
    
    Copy

Hinzufügen einer Authentifizierungsrichtlinie, die den Zugriff nur auf Snowflake CLI beschränkt

Benutzer können eine Authentifizierungsrichtlinie erstellen, die die Zugriffsberechtigung auf Treiber sowie Snowflake CLI beschränkt. Wenn Sie nur den Zugriff auf Snowflake CLI erlauben (und die Treiber ausschließen) möchten, können Sie wie folgt vorgehen:

  • Erstellen Sie eine neue Authentifizierungsrichtlinie, die den Zugriff streng auf Snowflake CLI beschränkt.

  • Aktivieren Sie die Richtlinie in der Datei config.toml.

Erstellen einer Authentifizierungsrichtlinie, die auf Snowflake CLI beschränkt ist

So erstellen Sie eine neue Authentifizierungsrichtlinie nur für Snowflake CLI:

  1. Führen Sie den Befehl CREATE AUTHENTICATION POLICY SQL aus und setzen Sie den Parameter CLIENT_TYPES auf include 'SNOWFLAKE_CLI'.

CREATE AUTHENTICATION POLICY snowflake_cli_only
  CLIENT_TYPES = ('SNOWFLAKE_CLI');
Copy
  1. Fügen Sie die Richtlinie, dem Benutzer hinzu, wie gezeigt:

ALTER USER user1
  SET AUTHENTICATION POLICY snowflake_cli_only;
Copy

Aktivieren Sie die Richtlinie in der Snowflake CLI-Konfiguration

Mit dem Konfigurationsparameter enable_separate_authentication_policy_id können Sie den Zugriff auf Snowflake CLI getrennt von den Treibern aktivieren. Wenn dieser Zugriff aktiviert ist, können bestimmte Benutzer auf Snowflake CLI zugreifen, nicht aber auf die anderen Snowflake-Treiber.

Warnung

Wenn Sie bereits eine Authentifizierungsrichtlinie haben, die nur den Zugriff auf Treiber erlaubt und keine, die nur den Zugriff auf Snowflake CLI erlaubt, führt die Aktivierung des Parameters enable_separate_authentication_policy_id dazu, dass die Benutzer den Zugriff auf Snowflake CLI verlieren, wenn Sie nicht zuerst die neue Richtlinie erstellen. Stellen Sie sicher, dass Sie SNOWFLAKE_CLI zu Ihrer Authentifizierungsrichtlinie hinzufügen, bevor Sie den Konfigurationsparameter aktivieren.

Um die SNOWFLAKE_CLI-Richtlinie zu aktivieren, fügen Sie den Parameter enable_separate_authentication_policy_id zum Abschnitt [cli.features] in der Datei config.toml hinzu, wie gezeigt:

[cli.features]
enable_separate_authentication_policy_id = true
Copy

Bemerkung

Die Aktivierung dieses Parameters wirkt sich auf alle von Snowflake CLI hergestellten Verbindungen aus.

Verwenden eines Proxyservers

Um einen Proxyserver zu verwenden, konfigurieren Sie die folgenden Umgebungsvariablen:

  • HTTP_PROXY

  • HTTPS_PROXY

  • NO_PROXY

Beispiel:

Linux oder 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

Tipp

Das Sicherheitsmodell von Snowflake erlaubt keine Secure Sockets Layer (SSL)-Proxys (unter Verwendung eines HTTPS-Zertifikats). Ihr Proxyserver muss eine öffentlich zugängliche Zertifizierungsstelle (CA) verwenden, um potenzielle Sicherheitsrisiken wie einen MITM (Man In The Middle)-Angriff durch einen kompromittierten Proxy zu reduzieren.

Wenn Sie Ihren SSL-Proxy verwenden müssen, empfehlen wir Ihnen dringend, die Serverrichtlinie zu aktualisieren, um die Snowflake-Zertifikatsprüfung zu bestehen, sodass mitten in der Kommunikation kein Zertifikat geändert wird.

Optional kann NO_PROXY verwendet werden, um den Proxy für bestimmte Arten der Kommunikation zu umgehen. Beispielsweise kann für den Zugriff auf Amazon S3 der Proxyserver durch Angabe von NO_PROXY=".amazonaws.com" umgangen werden.

NO_PROXY unterstützt keine Platzhalter. Jeder angegebene Wert sollte einer der folgenden Werte sein:

  • Das Ende eines Hostnamens (oder eines vollständigen Hostnamens), zum Beispiel:

    • .amazonaws.com

    • meineOrganisation-meinKonto.snowflakecomputing.com

  • Eine IP-Adresse, zum Beispiel:

    • 192.196.1.15

Wenn mehr als ein Wert angegeben wird, sollten die Werte durch Kommas getrennt werden. Beispiel:

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

Protokollierung konfigurieren

Standardmäßig speichert Snowflake CLI Meldungen der Ebenen INFO, WARNING und ERROR automatisch in Protokolldateien. Um die Protokollierung zu deaktivieren oder anzupassen, erstellen Sie in Ihrer config.toml-Datei einen Abschnitt [cli.logs]:

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

Wobei:

  • save_logs gibt an, ob die Protokolle in Dateien gespeichert werden sollen. Standard: true.

  • level gibt an, welche Meldungen in den Protokolldateien gespeichert werden sollen. Wählen Sie eine der folgenden Ebenen aus, die alle Ebenen unterhalb der ausgewählten Ebene einschließt:

    • debug

      Warnung

      Das Umschalten auf den Protokolliergrad debug kann sensible Informationen preisgeben, wie z. B. ausgeführte SQL-Abfragen. Seien Sie vorsichtig, wenn Sie diesen Protokolliergrad aktivieren.

    • info

    • warning

    • error

    Standard: info

  • path gibt den absoluten Pfad zum Speichern der Protokolldateien an. Das Format des Pfads variiert je nach Betriebssystem:

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

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

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

    Wenn nichts angegeben wird, erstellt der Befehl ein Verzeichnis logs am Standardspeicherort config.toml.

Wenn config.toml automatisch erstellt wurde, enthält Ihre config.toml-Datei den Abschnitt `` |cli.logs| ``, der mit Standardwerten gefüllt ist.

Die Protokolle eines einzelnen Tages werden an die Datei snowflake-cli.log angehängt, die später in snowflake-cli.log.YYYY-MM-DD umbenannt wird, wie gezeigt.

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