Snowflake接続の管理

Snowflake CLI を使用する前に、 Snowflake CLI がどのように Snowflake に接続するかを指定する接続を定義する必要があります。 Snowflake CLI は、接続パラメーターが複数の場所で定義されている場合にどの値を使用するかを決定するために、次の優先順位階層を使用します。

  • コマンドラインパラメーター

  • 特定の config.toml パラメーターを上書きする環境変数の例:SNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD

  • 手動または:codenowrap:snow connection add コマンドを使用して config.toml ファイルに定義された接続

  • SNOWFLAKE_USER などの汎用環境変数。

また、--temporary-connection オプションを使用することもできます。この場合、config.toml で定義する必要はありません。

注意

セキュリティ向上のため、Snowflakeでは:codenowrap:SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD または:codenowrap:SNOWFLAKE_PASSWORD 環境変数の使用を強く推奨しています。

コネクションの定義

接続定義は、config.tomlファイルの[connections]セクションに以下のように格納されます。

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

接続定義は、 Snowflake Connector for Python と同じ設定オプションをサポートしています。さらに、ファイルの一番上にある:codenowrap:default_connection_name 変数でデフォルトの接続を指定することができます。接続定義の中に含めることはできません。例:

default_connection_name = "myconnection"

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

注釈

MacOS およびLinuxシステムの場合、 Snowflake CLI は、 config.toml ファイルの権限を、ファイル所有者のみが読み取りおよび書き込みできるように制限する必要があります。ファイルに必要なファイル権限を設定するには、次のコマンドを実行します。

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

Snowflake CLI は、 connections.toml 構成ファイルもサポートしています。このファイルは、 config.toml ファイルと同じディレクトリに配置し、接続のみを含める必要があります。 connections.toml の構成には、 connections のない別のセクション名が必要です。例えば、[connections.myconnection] は、単に:codenowrap:[myconnection] となります。

注釈

config.tomlconnections.toml の両方の構成に接続が含まれている場合、 Snowflake CLI は connections.toml の構成のみを使用します。

snow connection コマンドを使用して、Snowflake への接続を管理または追加します。

snow connection コマンドを使用すると、Snowflake 接続を作成、管理、テストできます。

接続を追加します。

新しい接続を作成し、 構成ファイル に追加するには、以下のようにします。

  1. snow connection add コマンドを実行します。

snow connection add
Copy
  1. プロンプトが表示されたら、必要な接続、アカウント、ユーザー名のパラメーターと、その他必要なオプションのパラメーターを入力します。

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

また、図のようにコマンドラインで特定のパラメーターの値を追加することもできます。

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

注釈

--private_key_file オプションが存在しないファイルを参照している場合など、コマンドがエラーで終了すると、接続は config.toml 設定ファイルに保存されません。

定義された接続を一覧表示する

利用可能な接続を一覧表示するには、次のように:codenowrap:snow connection list コマンドを入力します。

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

接続をテストする

接続がSnowflakeに正常に接続できるかどうかをテストするには、次のような:codenowrap:snow connection test コマンドを入力します。

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

デフォルト接続の設定

default_connection_name 構成ファイルと:codenowrap:SNOWFLAKE_DEFAULT_CONNECTION_NAME 変数が設定されていれば、それを上書きして、デフォルトとして使用する構成 Snowflake CLI を指定するために、snow connection set-default コマンドを使用できます。

次の例では、デフォルトの接続を:codenowrap:myconnection2 に設定しています。

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

注釈

connections.tomlconfig.toml の両方のファイルが存在する場合、 Snowflake CLI は connections.toml で定義された接続のみを使用します。

Snowflake認証情報に環境変数を使用する

構成ファイルではなく、システム環境変数でSnowflake認証情報を指定することもできます。次の汎用環境変数は、接続パラメーターを置き換えるためにのみ使用できます。

  • 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

snow コマンドに接続パラメーターを渡します。

snow コマンド、接続を必要とするすべてのコマンドで、接続パラメーターを直接渡すことができます。接続構成パラメーターの完全なリストについては、snow sql --help コマンドを実行します。出力は、接続構成オプションのあるセクションのみを示していることに注意してください。

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

注意

セキュリティ向上のため、Snowflakeでは:codenowrap:SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD または:codenowrap:SNOWFLAKE_PASSWORD 環境変数の使用を強く推奨しています。

仮接続の使用

--temporary-connection [-x] オプションを使用して、コマンドラインから接続パラメーターを指定することもできます。 config.toml からのすべての定義を無視し、代わりにコマンドラインオプションで指定された定義を使用します。このアプローチは、構成ファイルを使用しない CI/CD ユースケースに役立ちます。仮接続を使用する場合、 Snowflake CLI は config.toml ファイルで定義された接続変数を無視しますが、設定した 環境変数SNOWFLAKE_ACCOUNT など)は引き続き使用されます。

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

注意

セキュリティ向上のため、Snowflakeでは:codenowrap:SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD または:codenowrap:SNOWFLAKE_PASSWORD 環境変数の使用を強く推奨しています。

接続を認証するその他の方法

また、以下の方法を使用して、Snowflakeへの接続を認証することもできます。

認証にプライベートキーファイルを使用する

認証にプライベートキーファイルを使用するには、接続構成で:codenowrap:認証コード パラメーターを SNOWFLAKE_JWT に設定し、次のようにプライベートキーを含むファイルへのパスを指定する必要があります。

  • snow connection add コマンドで、 --private_key-file オプションを図のように指定します。

    snow connection add \
       --connection jwt \
       --authenticator SNOWFLAKE_JWT \
       --private-key-file ~/.ssh/sf_private_key.p8
    
    Copy
  • 構成ファイルを使用する。

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

キーペア認証の設定の詳細については、 キーペア認証とキーペアローテーション をご参照ください。

注釈

プライベートキーがパスフレーズで保護されている場合は、そのパスフレーズを:codenowrap:PRIVATE_KEY_PASSPHRASE 環境変数に設定します。

認証に OAuth を使用する

OATH を使って接続するには、以下のどちらかを行います。

  • snow connection add コマンドで、 --token-file-path オプションを図のように指定します。

    snow connection add --token-file-path "my-token.txt"
    
    Copy
  • config.toml ファイルで、authenticator = "oauth" を設定し、図のように接続定義に token_file_path パラメーターを追加します。

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

多要素認証(MFA)を使用する

MFA を使用するには、

  1. Snowflakeで 多要素認証 を設定し、 authenticator パラメーターを snowflake (デフォルト値)に設定します。

  2. プッシュの代わりにDuo-generatedパスコードを使用したい場合は、 --mfa-passcode <パスコード> オプションを使用するか、 config.tomlpasscode_in_password = true を設定し、 Using MFA in Python で説明されているようにパスコードをパスワードに含めます。

MFA キャッシュを有効にします。

  1. あなたのアカウントで、ALLOW_CLIENT_MFA_CACHING = true を設定します。

  2. config.toml ファイルで、接続に:codenowrap:authenticator = username_password_mfa を追加します。

SSO (シングルサインオン)を使用する

シングルサインオン(SSO)を使用するようにSnowflakeを構成 している場合、認証に SSO を使用するようにクライアントアプリケーションを構成できます。詳細は Using SSO with client applications that connect to Snowflake を参照し、Python 用の手順を使用して接続を設定します。