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"
.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
別の構成ファイルを選択する¶
継続的インテグレーション、継続的デプロイメント(CI/CD)環境などの状況によっては、Snowflakeのデフォルト構成ファイルで可能なすべての構成を定義する代わりに、テストおよびデプロイメントパイプライン専用の構成ファイルを作成する方がよい場合があります。
デフォルト・ファイルとは異なる構成ファイルを使用するには、次のように:codenowrap:snow
コマンドの:codenowrap:--config-file
オプションを使用します。
snow --config-file="my_config.toml" connection test
システム環境変数のサポート¶
Snowflake CLI は、システム環境変数を使用して、 config.toml
ファイルで定義されたパラメータ値を以下の形式で上書きすることをサポートしています:
SNOWFLAKE_<config-section>_<variable>=<value>
条件:
<config_section>
は、構成ファイルのセクション名で、ピリオド (.
) をアンダースコア(_
) に置き換えたものです。例:CLI_LOGS
。変数は、このセクションで定義された変数の名前です。 例えば:codenowrap:
パス
です。
例は次のとおりです:
config.toml
ファイルの:codenowrap:[cli.logs]
セクションのpath
パラメーターをオーバーライドします。export SNOWFLAKE_CLI_LOGS_PATH="/Users/jondoe/snowcli_logs"
myconnection
接続のパスワードを設定します。export SNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD="*******"
デフォルトの接続名を設定する:
export SNOWFLAKE_DEFAULT_CONNECTION_NAME="myconnection"
Snowflake CLI のみにアクセスを制限する認証ポリシーを追加します。¶
ユーザーは、ドライバーへのアクセス許可を制限する 認証ポリシー を作成できるほか、 Snowflake CLI も作成できます。 Snowflake CLI (ドライバーを除く)のみにアクセスを許可したい場合は、以下のようにします。
Snowflake CLI へのアクセスを厳密に制限する新しい認証ポリシーを作成します。
config.toml
ファイルでポリシーを有効にします。
Snowflake CLI に限定した認証ポリシーを作成します。¶
Snowflake CLI のみの新しい認証ポリシーを作成するには、以下の手順に従います。
CLIENT_TYPES パラメーターに:codenowrap:
'SNOWFLAKE_CLI'
をセットして、 CREATE AUTHENTICATION POLICY SQL コマンドを実行します。
CREATE AUTHENTICATION POLICY snowflake_cli_only CLIENT_TYPES = ('SNOWFLAKE_CLI');
図のように、ポリシーをユーザーに追加します:
ALTER USER user1 SET AUTHENTICATION POLICY snowflake_cli_only;
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
注釈
このパラメーターを有効にすると、 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'
- Windows:
set HTTP_PROXY=http://username:password@proxyserver.company.com:80 set HTTPS_PROXY=http://username:password@proxyserver.company.com:80
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
ログの構成¶
デフォルトでは、 Snowflake CLI は自動的に INFO
、 WARNING
、 ERROR
レベルのメッセージをログファイルに保存します。ログを無効化またはカスタマイズするには、 config.toml
ファイルに [cli.logs]
セクションを作成します。
[cli.logs]
save_logs = true
level = "info"
path = "/home/<username>/.snowflake/logs"
条件:
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/
snowflake-cli.log snowflake-cli.log.2024-10-22