0
0

【SSO】SnowflakeにローカルPCのAnaconda環境のjupyter notebookから接続

Posted at

前回書いた下記の投稿で、ID/パスワードをjsonファイルに保存しておいて、それを読み込んでSnowflakeに接続するのを試しました。

実際は会社で使う環境などではSSO(シングルサインオン)で使っていて、パスワードを設定していないケースもあると思います。
SSOでSnowflakeに接続するということを試してみます。

前回の投稿の

  • 仮想環境作成

  • jupyter notebookでの操作
    までは全く同じなので省略します。
    jupyter notebook内でのpythonのファイルは別ファイルで新たに用意してもいいかもですね。
    スクリーンショット 2024-09-22 105516.png
    sso_testというpythonのファイルを「▼New」から作りました。

  • Snowflakeへの接続設定
    からが異なります。

Snowflakeに接続

Snowflake Communityのこのページを参考にさせてもらいました。

jupyter notebookでやっていきます。

import snowflake.connector
import sys
con = snowflake.connector.connect(
    user="xxxxx",
    account="xxxxx",
    authenticator="externalbrowser",
)

ユーザーとアカウントの部分はマスクとさせてもらいました。
スクリーンショット 2024-09-22 105909.png

authenticator="externalbrowser"・・・外部ブラウザで認証する
という指定なんだと思います。
SSO接続のキモがここですね。
前回の投稿の後、Sakatokuさんからも教えてもらってました。

これを実行するとブラウザ別タブで以下のメッセージが出ました。
スクリーンショット 2024-09-22 110008.png
「confirmed」だからOKっぽいです。
「このwindowをcloseしていいよ」とも書いていますので、タブは閉じちゃいましょう。

jupyter notebookのタブに戻ると、何やらメッセージが出てました。
スクリーンショット 2024-09-22 110040.png

ではSnowflakeを操作してみます。

cur = con.cursor()
try:
    cur.execute("USE ROLE SYSADMIN")
    cur.execute("USE WAREHOUSE COMPUTE_WH")
    cur.execute("USE DATABASE TEST_DB")
    cur.execute("USE SCHEMA TEST_SCHEMA")
    cur.execute("select * from test_json")
    row=cur.fetchall()
    for r in row:
        print(r)
    
finally:
    cur.close()

test_jsonテーブルからselectして結果を出力します。

スクリーンショット 2024-09-22 110521.png
3行出力できました。
バッチリSnowflakeにつながってます。

なお、Snowsightで見るとこんな感じです。
スクリーンショット 2024-09-22 110604.png

同じ結果ですね。

まとめ

会社のSSOユーザーでもこんな感じで接続ができることが実証できました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0