Snowflake CLI の構成

Snowflake CLI は、 config.toml というグローバル・構成ファイルを使って、 Snowflake CLI の接続とログを構成します。このファイルが存在しない場合、何らかの:codenowrap:snow コマンドを初めて実行すると、自動的に空の config.toml ファイルが作成され、そのファイルに目的の接続を入力できるようになります。 toml ファイルフォーマットの詳細については、 TOML (Tom's Obvious Minimal Language) をご参照ください。Snowflake Pythonライブラリは現在、 TOML バージョン1.0.0をサポートしています。

config.toml は次の設定をサポートしています。

  • [コネクション] コネクションの定義と管理

  • [ログ]どのタイプのメッセージをログファイルに保存するかを構成する

Snowflake CLI 構成ファイルの構造は以下の通りです。

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

.toml 構成ファイルの場所

デフォルトでは、 Snowflake CLI は、 ~/.snowflake ディレクトリにある config.toml ファイルを探すか、このディレクトリが存在しない場合は、以下に示すシステム固有の場所にある ファイルを探します。また、--config-file フラグまたは:codenowrap:SNOWFLAKE_HOME 環境変数を使用して、どの構成ファイルを使用するかを指定することもできます。

  • --config-file オプションを指定すると(snow --config-file ./my-config-file-path のように)、 Snowflake CLI は指定された構成ファイルを使用します。

  • SNOWFLAKE_HOME 環境変数が設定されている場合、 Snowflake CLI はこの変数で指定された場所を使用します。

  • マシンに ~/.snowflake ディレクトリが存在する場合、 Snowflake CLI は ~/.snowflake/config.toml ファイルを使用します。

  • そうでない場合、 Snowflake CLI はオペレーティングシステムに応じて、次のいずれかの場所にある config.toml ファイルを使用します。

    • Linux: ~/.config/snowflake/config.toml、ただし、 XDG 変数で更新可

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

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

注釈

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

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

別の構成ファイルを選択する

継続的インテグレーション、継続的デプロイメント(CI/CD)環境などの状況によっては、Snowflakeのデフォルト構成ファイルで可能なすべての構成を定義する代わりに、テストおよびデプロイメントパイプライン専用の構成ファイルを作成する方がよい場合があります。

デフォルト・ファイルとは異なる構成ファイルを使用するには、次のように:codenowrap:snow コマンドの:codenowrap:--config-file オプションを使用します。

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

システム環境変数のサポート

Snowflake CLI は、システム環境変数を使用して、 config.toml ファイルで定義されたパラメータ値を以下の形式で上書きすることをサポートしています:

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

条件:

  • <config_section> は、構成ファイルのセクション名で、ピリオド (.) をアンダースコア(_) に置き換えたものです。例:CLI_LOGS

  • 変数は、このセクションで定義された変数の名前です。 例えば:codenowrap:パス です。

例は次のとおりです:

  • config.toml ファイルの:codenowrap:[cli.logs] セクションの path パラメーターをオーバーライドします。

    export SNOWFLAKE_CLI_LOGS_PATH="/Users/jondoe/snowcli_logs"
    
    Copy
  • myconnection 接続のパスワードを設定します。

    export SNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD="*******"
    
    Copy
  • デフォルトの接続名を設定する:

    export SNOWFLAKE_DEFAULT_CONNECTION_NAME="myconnection"
    
    Copy

Snowflake CLI のみにアクセスを制限する認証ポリシーを追加します。

ユーザーは、ドライバーへのアクセス許可を制限する 認証ポリシー を作成できるほか、 Snowflake CLI も作成できます。 Snowflake CLI (ドライバーを除く)のみにアクセスを許可したい場合は、以下のようにします。

  • Snowflake CLI へのアクセスを厳密に制限する新しい認証ポリシーを作成します。

  • config.toml ファイルでポリシーを有効にします。

Snowflake CLI に限定した認証ポリシーを作成します。

Snowflake CLI のみの新しい認証ポリシーを作成するには、以下の手順に従います。

  1. CLIENT_TYPES パラメーターに:codenowrap:'SNOWFLAKE_CLI' をセットして、 CREATE AUTHENTICATION POLICY SQL コマンドを実行します。

CREATE AUTHENTICATION POLICY snowflake_cli_only
  CLIENT_TYPES = ('SNOWFLAKE_CLI');
Copy
  1. 図のように、ポリシーをユーザーに追加します:

ALTER USER user1
  SET AUTHENTICATION POLICY snowflake_cli_only;
Copy

Snowflake CLI 構成でポリシーを有効にします。

codenowrap:enable_separate_authentication_policy_id 構成パラメーターにより、ドライバーとは別に Snowflake CLI へのアクセスを有効にすることができます。このアクセスを有効にすると、指定したユーザーは Snowflake CLI にアクセスできますが、他の Snowflake ドライバーにはアクセスできません。

警告

ドライバーのみにアクセスを許可する認証ポリシーがすでにあり、 Snowflake CLI のみにアクセスを許可する認証ポリシーがない場合、enable_separate_authentication_policy_id パラメーターを有効にすると、新しいポリシーを最初に作成しない場合、ユーザーは Snowflake CLI へのアクセスを失うことになります。構成パラメーターを有効にする前に、認証ポリシーに SNOWFLAKE_CLI を追加してください。

SNOWFLAKE_CLI ポリシーを有効にするには、 config.toml ファイルの [cli.features] セクションに、図のように:codenowrap:enable_separate_authentication_policy_id パラメーターを追加します。

[cli.features]
enable_separate_authentication_policy_id = true
Copy

注釈

このパラメーターを有効にすると、 Snowflake CLI によるすべての接続に影響します。

プロキシサーバーの使用

プロキシサーバーを使用するには、次の環境変数を構成します。

  • HTTP_PROXY

  • HTTPS_PROXY

  • NO_PROXY

例:

Linuxまたは 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

Tip

Snowflakeのセキュリティモデルは、Secure Sockets Layer(SSL)プロキシを許可しません( HTTPS 証明書を使用)。プロキシサーバーは、公的に利用可能な認証機関(CA)を使用する必要があり、侵害されたプロキシを介した MITM (Man In The Middle)攻撃などの潜在的なセキュリティリスクを低減します。

SSL プロキシを使用する 必要 がある場合は、通信中に証明書が変更されないように、サーバーポリシーを更新してSnowflake証明書を渡すことを強くお勧めします。

オプションで NO_PROXY を使用して、特定の通信のプロキシをバイパスできます。たとえば、Amazon S3へのアクセスは、 NO_PROXY=".amazonaws.com" を指定してプロキシサーバーをバイパスできます。

NO_PROXY はワイルドカードをサポートしていません。指定する各値は、次のいずれかである必要があります。

  • ホスト名の末尾(または完全なホスト名)。例:

    • .amazonaws.com

    • myorganization-myaccount.snowflakecomputing.com

  • IP アドレス。例:

    • 192.196.1.15

複数の値を指定する場合、値はコンマで区切る必要があります。次に例を示します。

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

ログの構成

デフォルトでは、 Snowflake CLI は自動的に INFOWARNINGERROR レベルのメッセージをログファイルに保存します。ログを無効化またはカスタマイズするには、 config.toml ファイルに [cli.logs] セクションを作成します。

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

条件:

  • save_logs は、ログをファイルに保存するかどうかを示します。デフォルト: true

  • level はログファイルに保存するメッセージのレベルを指定します。次のレベルから選択します。選択したレベル以下のすべてのレベルが含まれます。

    • debug

      警告

      ログレベルを debug に切り替えると、実行された SQL クエリなどの機密情報が公開される可能性があります。このレベルを有効にする場合は注意してください。

    • info

    • warning

    • error

    デフォルト: info

  • path はログファイルを保存する絶対パスを指定します。パスの形式は、次に示されるようにオペレーティングシステムに応じて異なります。

    • 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"

    指定しない場合は、デフォルトの config.toml ファイルの場所に logs ディレクトリを作成します。

config.toml が自動的に作成された場合、 config.toml ファイルにはデフォルト値が入力された `` |cli.logs| `` セクションが含まれます。

1日のログがファイル snowflake-cli.log に追加され、後で snowflake-cli.log.YYYY-MM-DD に名前が変更されます。

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