❄️
Snowflake PAT を使用した認証
概要
Snowflake CLI や Snowflake Python API を使用するにあたって、 Snowflake PAT を使用した認証を設定する機会がありました。
調べた事を記事に残します。
Snowflake Programmatic Access Token (PAT) について
Snowflake の認証にて使用できるトークンです。
Snowflake 用 REST API 使用時の認証を初めとして、パスワードが求められる認証手段にて、パスワードの代わりに使用可能です。
- classmethod さんの記事 が詳しかったので、そちらも参照
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