[新機能]Snowflake CLI などのローカルクライアントから Snowflake OAuth で認証できるようになりました

[新機能]Snowflake CLI などのローカルクライアントから Snowflake OAuth で認証できるようになりました

2026.01.28

はじめに

2026年1月のアップデートで、ローカルアプリケーション向け Snowflake OAuth が提供されました。こちらを試してみた内容を本記事でまとめてみます。

https://docs.snowflake.com/en/release-notes/2026/other/2026-01-21-snowflake-oauth-local-applications

アップデートの概要

本機能については以下に記載があります。

https://docs.snowflake.com/en/user-guide/oauth-local-applications

この機能は、Snowflake CLI などのローカル環境で動作するアプリケーションが、Snowflake にセキュアに接続するための認証機能です。

Snowflake の組み込みの OAuth サービスを使用することで、OAuth 2.0 ベースの認証が提供されるため、サポートされるクライアントであれば、パスワードやキーペアなどのシークレットをクライアント側に保持することなく Snowflake に認証できるようになります。

サポートされるクライアントやそのバージョンについては、以下をご参照ください。

https://docs.snowflake.com/en/user-guide/oauth-local-applications#supported-clients

本機能の使用にあたり、Snowflake 側では追加の設定は不要です。アカウントに組み込みのセキュリティ統合オブジェクトであるSNOWFLAKE$LOCAL_APPLICATIONが自動的に追加されており、こちらを使用できます。

>SHOW SECURITY INTEGRATIONS LIKE 'SNOWFLAKE$LOCAL_APPLICATION';
+-----------------------------+---------------------------+----------+---------+---------------------------------------------------------------+-------------------------------+
| name                        | type                      | category | enabled | comment                                                       | created_on                    |
|-----------------------------+---------------------------+----------+---------+---------------------------------------------------------------+-------------------------------|
| SNOWFLAKE$LOCAL_APPLICATION | OAUTH - LOCAL_APPLICATION | SECURITY | true    | https://docs.snowflake.com/user-guide/oauth-local-application | 2026-01-03 06:04:19.991 -0800 |
+-----------------------------+---------------------------+----------+---------+---------------------------------------------------------------+-------------------------------+

リフレッシュトークンの有効期間など、各種設定の変更も可能です。詳細は以下をご参照ください。

https://docs.snowflake.com/en/user-guide/oauth-local-applications#configuring-the-snowflake-oauth-integration

クライアント側では、接続文字列や構成ファイルの設定により、Snowflake OAuth で認証できるように構成できます。詳細は上記のサポートされるクライアントやそのバージョンに関する箇所をご参照ください。

OAuth での認証のため、サービスアカウントによる定期実行や自動化処理には向きませんが、開発者が日常的に使用する CLI ツールやローカル開発環境においては、パスワードやキーペアなどのシークレット管理を不要にできる機能です。

試してみる

ここでは Snowflake CLI を使用し、Snowflake OAuth による認証を試してみます。

※当初は WSL2 上の環境で検証していたのですが、私の環境では初回ログイン以降、続けてクエリを発行しようとした際に、都度認証が求められました。トークンの永続化の問題と考えられますが、意図する動作とならなかったため、以降は Windows 環境での検証結果を記載しています。

前提条件

以下の環境で検証しています。

  • OS:Windows 11
  • Snowflake CLI バージョン:3.14.0

接続情報の設定

構成ファイル(config.toml)の場所については、以下に記載があります。ここでは%USERPROFILE%\AppData\Local\snowflake\config.toml の設定を使用しています。

https://docs.snowflake.com/ja/developer-guide/snowflake-cli/connecting/configure-cli#location-of-the-toml-configuration-file

使用するコネクションについて、関連部分のみの抜粋ですが、以下のように設定すれば Snowflake OAuth による認証を行えます。具体的にはauthenticator = "OAUTH_AUTHORIZATION_CODE" と指定します。

config.toml
default_connection_name = "oauth_connection"

[connections.oauth_connection]
authenticator = "OAUTH_AUTHORIZATION_CODE"

account = "xxxxx-xxxxx"
user = "<user>"
role = "PUBLIC"

Snowflake OAuth による認証

デフォルトコネクションの設定などで、上記のコネクションが使用されるように構成し、ローカルから snow sql で SQL を実行してみます。

snow sql --query "select current_timestamp()"

すると、ブラウザが起動し Snowflake へのログインが求められるので、対象ユーザーでログインします。

image

ログイン後、ブラウザは下図の表示となります。

image 1

ターミナルに戻るとクエリが実行されています。

> snow sql --query "select current_timestamp()"
select current_timestamp()
+----------------------------------+                                                                            
| CURRENT_TIMESTAMP()              |                                                                            
|----------------------------------|                                                                            
| 2026-01-27 17:56:35.131000-08:00 |
+----------------------------------+

上述の設定では、トークンが再利用されず、都度認証が必要なのでconfig.toml を変更します。具体的にはclient_store_temporary_credential = true を追加し、トークン キャッシュを有効にします。

config.toml
[connections.oauth_connection]
authenticator = "OAUTH_AUTHORIZATION_CODE"

account = "xxxxx-xxxxx"
user = "<user>"
role = "PUBLIC"

# Enable local token caching
client_store_temporary_credential = true

https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections

上記の設定後、再度クエリを発行してみます。この場合、初回のログイン操作後、続けてクエリを発行した場合でも、トークンの有効期限内であれば再度認証を求められることなく、処理を実行できました。

-- ブラウザが起動し初回ログインを行う
> snow sql --query "select current_timestamp()"
select current_timestamp()
+----------------------------------+                                                                            
| CURRENT_TIMESTAMP()              |                                                                            
|----------------------------------|                                                                            
| 2026-01-27 18:06:06.588000-08:00 |
+----------------------------------+

-- トークンが利用され再認証は不要でそのまま実行される
> snow sql --query "select current_timestamp()"
select current_timestamp()
+----------------------------------+                                                                            
| CURRENT_TIMESTAMP()              |                                                                            
|----------------------------------|                                                                            
| 2026-01-27 18:06:17.219000-08:00 |
+----------------------------------+

さいごに

簡単ではありますが、ローカルアプリケーション向けの Snowflake OAuth を Snowflake CLI から試してみました。ローカルでのシークレット管理を不要とでき、追加の構成もほぼ不要なのでぜひとも使っていきたい機能と思います。
こちらの内容がどなたかの参考になれば幸いです。

この記事をシェアする

FacebookHatena blogX

関連記事