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 Befehlsnow connection add
definiert wurdenAllgemeine 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"
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"
...
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
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:
Führen Sie den Befehl
snow connection add
aus:
snow connection add
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
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
+-------------------------------------------------------------------------------------------------+
| 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
+--------------------------------------------------+
| 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
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
╭─ 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
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 Befehlsnow connection add
an, wie gezeigt:snow connection add \ --connection jwt \ --authenticator SNOWFLAKE_JWT \ --private-key-file ~/.ssh/sf_private_key.p8
Verwenden Sie die Konfigurationsdatei:
[connections.jwt] account = "my_account" user = "jdoe" authenticator = "SNOWFLAKE_JWT" private_key_file = "~/sf_private_key.p8"
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 Befehlsnow connection add
an, wie gezeigt:snow connection add --token-file-path "my-token.txt"
Stellen Sie für die Datei
config.toml
authenticator = "oauth"
ein und fügen dentoken_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"
Verwenden Sie eine mehrstufige Authentifizierung (MFA)¶
So verwenden Sie MFA:
Richten Sie mehrstufige Authentifizierung in Snowflake ein, und setzen Sie den Parameter
authenticator
aufsnowflake
(dies ist ein Standardwert).Wenn Sie anstelle des Push-Mechanismus eine vom Duo generierte Kennung verwenden möchten, verwenden Sie entweder die Option
--mfa-passcode <Kennung>
, oder stellen Siepasscode_in_password = true
inconfig.toml
ein und fügen die Kennung in Ihr Kennwort ein, wie in beschrieben. Verwendung von MFA in Python.
So aktivieren Sie MFA-Caching:
Stellen Sie für Ihr Konto
ALLOW_CLIENT_MFA_CACHING = true
ein.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.