❄️

Snowflake PAT を使用した認証

に公開

概要

Snowflake CLI や Snowflake Python API を使用するにあたって、 Snowflake PAT を使用した認証を設定する機会がありました。

調べた事を記事に残します。

Snowflake Programmatic Access Token (PAT) について

Snowflake の認証にて使用できるトークンです。

Snowflake 用 REST API 使用時の認証を初めとして、パスワードが求められる認証手段にて、パスワードの代わりに使用可能です。

Github の Parsonal Access Token のイメージが近いかと思われます。

Snowflake PAT をパスワードとして使用

Snowflake PAT は、パスワード認証におけるパスワードの代用値として使用できます。

使用方法も単純で、 パスワード入力が求められる箇所で、代わりに Snowflake PAT を入力するだけです。

◆PAT の発行

以下公式ドキュメントをご参照ください。

◆PAT で認証 (Snowflake Python API の場合)

conn = snowflake.connector.connect(
    account=ACCOUNT,
    user=USER,
    password=<ここにPATを挿入>,
    ...
)

◆PAT で認証(Snowflake CLI の場合)

~/.snowflake/connections.toml
[myconnection]
account = "myorganization-myaccount"
user = "jdoe"
password = "ここにPATを挿入"
...

ユースケース

組織でMFAが強制されているような環境で、"Snowflake との通信を含むバッチ処理" といった、 "人間の介入が必要な認証が不適切" な処理を開発する際に有効です。

本来であれば Snowflake とセッションを確立する度にMFAによるワンタイムパスコード入力が必要ですが、パスワードの代わりに Snowflake PAT を使用することで MFA 認証をスキップできます。

PATの乱用は危険

Snowflake PAT は、MFA が不適切な状況に対する代替認証手段であって、MFA を形骸化させるためのものではありません。

ベストプラクティスにもあるように、Snowflake PAT を使用するケースを絞る、有効期限を設定する等、Snowflake PAT の運用ルールは別途必要になるかと思います。

参考文献

Discussion