SnowSQL をインストールして Snowflake アカウントに接続する (MFA 対応)

記事タイトルとURLをコピーする

はじめに

データドリブンな人間を目指している香取です。
今回はタイトルの通り、Snowflake のコマンドラインツールである SnowSQL をインストールして Snowflake アカウントに接続するまでの方法を紹介します。

個人的に MFA 設定の部分でつまずいたので記事にしてみました。

前提条件

今回の手順を実施した環境は以下の通りです。

  • OS: macOS 15.5 (Sequoia)
  • SnowSQL バージョン: 1.4.2
  • Snowflake アカウントは作成済み

1. SnowSQL のインストール

今回は macOS でのインストール手順を紹介しますが、他の OS におけるインストール方法も公式ドキュメントに記載されていますので、そちらを参照してください。

docs.snowflake.com

macOS では Homebrew を使って簡単にインストールできます。

brew install --cask snowflake-snowsql

macOS の場合、デフォルトのターミナルシェルが Z シェル (zsh) であるため、インストール後に以下のコマンドを実行して、パスを通す必要があります。

echo 'alias snowsql=/Applications/SnowSQL.app/Contents/MacOS/snowsql' >> ~/.zshrc
source ~/.zshrc

SnowSQL のバージョンを確認してみます。

$ snowsql -v
Version: 1.4.2

2. Snowflake アカウントへの接続

docs.snowflake.com

SnowSQL を使って Snowflake アカウントに接続するには、以下のコマンドを実行します。

snowsql -a <accountname> -u <username>

accountname には アカウント識別子 (<組織名>-<アカウント名> の形式) を指定します。
Snowsight では「Account Details」の画面から確認できます。

コマンドを実行すると、パスワードの入力を求められるので、該当の Snowflake アカウントのパスワードを入力します。
すると以下のようなエラーが出ました。

$ snowsql -a <accountname> -u <username>
Password: 
250001 (08001): Failed to connect to DB: <accountname>.snowflakecomputing.com:443. Failed to authenticate: MFA authentication is required, but none of your current MFA methods are supported for programmatic authentication.
If the error message is unclear, enable logging using -o log_level=DEBUG and see the log to find out the cause. Contact support for further help.
Goodbye!                                                                        

このエラーは、プログラムからの認証で使用可能な MFA (Multi-Factor Authentication) が見つからないため、接続できないことを示しています。
プログラムによる認証には、認証アプリ (TOTP) を使用する必要がありますが、私はこの時点では MFA には「生体認証」のみを設定していたため、SnowSQL からの接続ができなかったようです。

ということで、MFA を追加していきます。

2-1. MFA の追加

ここでは Google Authenticator を MFA として設定します。

Snowsight の「Settings」から「Authentication」を選択し、「Add new authentication method」をクリックします。

「オーセンティケーター」を選択すると QR コードが表示されます。 スマートフォンの Google Authenticator アプリでスキャンし、6桁のコードを入力します。

認証が完了すると、MFA が追加されていることが確認できます。
デフォルトの MFA には生体認証を使用したかったため、「PASSKEY」を指定しておきました。

2-2. MFA を使用した接続

再度 SnowSQL を実行します。-m オプションを使って、認証アプリで生成された 6桁のコードを指定します。

$ snowsql -a <accountname> -u <username> -m <mfa-passcode>
Password: 
* SnowSQL * v1.4.2
Type SQL statements or !help
<username>#COMPUTE_WH@(no database).(no schema)>

無事に Snowflake アカウントに接続できました!

3. SnowSQL の動作確認

CURRENT_VERSION で Snowflake のバージョンを確認してみます。

$ <username>#COMPUTE_WH@(no database).(no schema)>SELECT CURRENT_VERSION();
+-------------------+                                                           
| CURRENT_VERSION() |
|-------------------|
| 9.18.0            |
+-------------------+
1 Row(s) produced. Time Elapsed: 0.131s

さいごに

個人的に MFA 設定の部分でつまずいたので記事を書いてみました。
この記事がどなたかの参考になっていれば幸いです。

参考リンク

香取 拓哉 (記事一覧)

2023年度新卒入社
データドリブンな人間を目指しています
好きな食べ物は芽ねぎ