Verwalten von Snowflake-Verbindungen

Bevor Sie Snowflake CLI verwenden können, müssen Sie Verbindungen definieren, die angeben, wie Snowflake CLI sich mit Snowflake verbindet. Snowflake CLI verwendet die folgende Hierarchie, um zu bestimmen, welcher Wert zu verwenden ist, wenn ein Verbindungsparameter an mehreren Speicherorten definiert ist:

  • Befehlszeilenparameter

  • Umgebungsvariablen, die bestimmte config.toml-Parameter überschreiben, wie z. B. SNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD

  • Verbindungen, die in der Datei config.toml manuell oder mit dem Befehl snow connection add definiert wurden

  • Allgemeine Umgebungsvariablen, wie SNOWFLAKE_USER.

Sie können auch die Option --temporary-connection verwenden, die keine Definition in config.toml erfordert.

Vorsicht

Um die Sicherheit zu erhöhen, empfiehlt Snowflake dringend, entweder die Umgebungsvariable SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD oder SNOWFLAKE_PASSWORD zu verwenden.

Definieren Sie Verbindungen

Definitionen für Verbindungen werden im Abschnitt [connections] der config.toml-Datei gespeichert, ähnlich wie im Folgenden beschrieben:

[connections.myconnection]
account = "myaccount"
user = "jondoe"
password = "hunter2"
warehouse = "my-wh"
database = "my_db"
schema = "my_schema"
Copy

Die Definition der Verbindung unterstützt die gleichen Konfigurationsoptionen wie der Snowflake Connector für Python. Zusätzlich können Sie eine Standardverbindung in der Variable default_connection_name am Anfang der Datei angeben. Sie können sie nicht in eine Verbindungsdefinition einbeziehen. Beispiel:

default_connection_name = "myconnection"

[connections.myconnection]
account = "myaccount"
...
Copy

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

Snowflake CLI unterstützt auch die Konfigurationsdatei connections.toml. Die Datei sollte sich im gleichen Verzeichnis wie die Datei config.toml befinden und nur Verbindungen enthalten. Konfigurationen in connections.toml erfordern einen anderen Abschnittsnamen ohne connections. Ein Beispiel wäre [connections.myconnection] nur [myconnection].

Bemerkung

Wenn beide Konfigurationen in config.toml und connections.toml Verbindungen enthalten, verwendet Snowflake CLI nur die Konfigurationen in connections.toml.

Verwalten oder fügen Sie Ihre Verbindungen zu Snowflake mit den Befehlen snow connection hinzu

Mit den Befehlen snow connection können Sie Snowflake-Verbindungen erstellen, verwalten und testen.

Hinzufügen einer Verbindung

Gehen Sie wie folgt vor, um eine neue Verbindung zu erstellen und sie der Konfigurationsdatei hinzuzufügen:

  1. Führen Sie den Befehl snow connection add aus:

snow connection add
Copy
  1. Wenn Sie dazu aufgefordert werden, geben Sie die erforderlichen Parameter für die Verbindung, das Konto und den Benutzernamen sowie alle anderen gewünschten optionalen Parameter ein.

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

Sie können auch Werte für bestimmte Parameter in der Befehlszeile eingeben, wie hier gezeigt:

snow --config-file config.toml connection add -n myconnection2 --account myaccount2 --user jdoe2
Copy

Bemerkung

Wenn der Befehl mit einem Fehler endet, z. B. wenn die Option --private_key_file auf eine nicht existierende Datei verweist, wird die Verbindung nicht in der config.toml-Konfigurationsdatei gespeichert.

Listen Sie definierte Verbindungen auf

Um die verfügbaren Verbindungen aufzulisten, geben Sie den Befehl snow connection list ein, wie gezeigt:

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      |
+-------------------------------------------------------------------------------------------------+

Testen Sie eine Verbindung

Um zu testen, ob sich eine Verbindung erfolgreich mit Snowflake verbinden kann, geben Sie den Befehl snow connection test ein, ähnlich dem Folgenden:

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                        |
+--------------------------------------------------+

Legen Sie die Standardverbindung fest

Mit dem Befehl snow connection set-default können Sie angeben, welche Konfiguration Snowflake CLI als Standard verwendet werden soll. Damit überschreiben Sie die Konfigurationsdatei default_connection_name und die Variablen SNOWFLAKE_DEFAULT_CONNECTION_NAME, sofern diese festgelegt sind.

Das folgende Beispiel setzt die Standardverbindung auf myconnection2:

snow connection set-default myconnection2
Copy
Default connection set to: myconnection2

Bemerkung

Wenn die Dateien connections.toml und config.toml vorhanden sind, verwendet Snowflake CLI nur Verbindungen, die in connections.toml definiert sind.

Umgebungsvariablen für Snowflake-Anmeldeinformationen verwenden

Sie können die Anmeldeinformationen für Snowflake in Variablen der Systemumgebung statt in Dateien der Konfiguration angeben. Sie können die folgenden generischen Umgebungsvariablen nur zur Angabe von Parametern für die Verbindung verwenden:

  • 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

Übergeben Sie Verbindungsparameter an den Befehl snow

Sie können Verbindungsparameter direkt in jedem snow-Befehl übergeben, der eine Verbindung erfordert. Um eine vollständige Liste der Parameter für die Verbindungskonfiguration zu erhalten, führen Sie den Befehl snow sql --help aus, wie gezeigt. Beachten Sie, dass in der Ausgabe nur der Abschnitt mit den Optionen für die Konfiguration der Verbindung angezeigt wird.

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                                         │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Vorsicht

Um die Sicherheit zu erhöhen, empfiehlt Snowflake dringend, entweder die Umgebungsvariable SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD oder SNOWFLAKE_PASSWORD zu verwenden.

Verwenden Sie eine temporäre Verbindung

Sie können die Verbindungsparameter auch über die Befehlszeile angeben, indem Sie die Option --temporary-connection [-x] verwenden. Dabei werden alle Definitionen aus config.toml ignoriert und stattdessen die über die Befehlszeilenoptionen angegebenen Definitionen verwendet. Dieser Ansatz kann für CI/CD-Anwendungsfälle hilfreich sein, wenn Sie keine Konfigurationsdatei verwenden möchten. Wenn Sie eine temporäre Verbindung verwenden, ignoriert Snowflake CLI alle Verbindungsvariablen, die in der Datei config.toml definiert sind, verwendet aber dennoch alle von Ihnen festgelegten Umgebungsvariablen, wie SNOWFLAKE_ACCOUNT.

snow sql -q "select 42;" --temporary-connection \
                           --account myaccount \
                           --user jdoe
Copy
select 42;
+----+
| 42 |
|----|
| 42 |
+----+

Vorsicht

Um die Sicherheit zu erhöhen, empfiehlt Snowflake dringend, entweder die Umgebungsvariable SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD oder SNOWFLAKE_PASSWORD zu verwenden.

Zusätzliche Möglichkeiten zur Authentifizierung Ihrer Verbindung

Sie können auch die folgenden Methoden verwenden, um Ihre Verbindung zu Snowflake zu authentifizieren:

Verwenden Sie eine Datei mit einem privaten Schlüssel zur Authentifizierung

Um eine private Schlüsseldatei für die Authentifizierung zu verwenden, müssen Sie in der Verbindungskonfiguration den Parameter authenticator auf SNOWFLAKE_JWT setzen und den Pfad zur Datei mit Ihrem privaten Schlüssel angeben, ähnlich wie im Folgenden beschrieben:

  • Geben Sie die --private_key-file-Option im Befehl snow connection add an, wie gezeigt:

    snow connection add \
       --connection jwt \
       --authenticator SNOWFLAKE_JWT \
       --private-key-file ~/.ssh/sf_private_key.p8
    
    Copy
  • Verwenden Sie die Konfigurationsdatei:

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

Weitere Informationen zum Konfigurieren der Schlüsselpaar-Authentifizierung finden Sie unter Schlüsselpaar-Authentifizierung und Schlüsselpaar-Rotation.

Bemerkung

Wenn Ihr privater Schlüssel mit einer Passphrase geschützt ist, setzen Sie die PRIVATE_KEY_PASSPHRASE-Umgebungsvariable auf diese Passphrase.

Verwenden Sie die OAuth-Authentifizierung

Um die Verbindung über OATH zu nutzen, können Sie einen der folgenden Schritte ausführen:

  • Geben Sie die --token-file-path-Option im Befehl snow connection add an, wie gezeigt:

    snow connection add --token-file-path "my-token.txt"
    
    Copy
  • Stellen Sie für die Datei config.toml authenticator = "oauth" ein und fügen den token_file_path-Parameter zur Definition der Verbindung hinzu, wie gezeigt:

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

Verwenden Sie eine mehrstufige Authentifizierung (MFA)

So verwenden Sie MFA:

  1. Richten Sie mehrstufige Authentifizierung in Snowflake ein, und setzen Sie den Parameter authenticator auf snowflake (dies ist ein Standardwert).

  2. Wenn Sie anstelle des Push-Mechanismus eine vom Duo generierte Kennung verwenden möchten, verwenden Sie entweder die Option --mfa-passcode <Kennung>, oder stellen Sie passcode_in_password = true in config.toml ein und fügen die Kennung in Ihr Kennwort ein, wie in beschrieben. Verwendung von MFA in Python.

So aktivieren Sie MFA-Caching:

  1. Stellen Sie für Ihr Konto ALLOW_CLIENT_MFA_CACHING = true ein.

  2. Fügen Sie in Ihrer Datei config.toml: codenowrap:authenticator = username_password_mfa zu Ihrer Verbindung hinzu.

Verwenden Sie SSO (Single Sign-On)

Wenn Sie Snowflake für die Verwendung von Single Sign-On (SSO) konfiguriert haben, können Sie Ihre Clientanwendung so konfigurieren, dass SSO für die Authentifizierung verwendet wird. Weitere Informationen finden Sie unter Verwendung von SSO mit Client-Anwendungen, die eine Verbindung zu Snowflake herstellen, und konfigurieren Sie Ihre Verbindung anhand der Anweisungen für Python.