[小ネタ] MFA設定をしてSnowflakeにPythonで接続しようとするとどうなる?

以前にSnowflakeでのMFA設定と、Pythonでの接続について記事を書いたのですが「組み合わせたパターンを検証していなかったな」ということを思い出したので検証してみました。
2020.02.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!DA(データアナリティクス)事業本部 インテグレーション部の大高です。

以前にSnowflakeでのMFA設定と、Pythonでの接続について記事を書いたのですが「組み合わせたパターンを検証していなかったな」ということを思い出したので検証してみました。

以前の記事はこちらです。

やってみた

MFA設定を済ませて、以前の記事のPythonコードを使って接続をしてみます。

$ pipenv run python3 hello-snowflake-sqlalchemy-ex.py 
Loading .env environment variables…

ここまで表示された時点で、スマートフォンのDuo Mobileが反応して以下のように承認通知を出してきました。体感的に5秒ぐらい後です。

承認すると、接続がされてコンソール側は以下のように続きが表示されました。

$ pipenv run python3 hello-snowflake-sqlalchemy-ex.py 
Loading .env environment variables…
(1, 'Customer#000000001')
(2, 'Customer#000000002')
(3, 'Customer#000000003')
(4, 'Customer#000000004')
(5, 'Customer#000000005')

MFA設定をしてコンソールから作業をする場合には、別途MFAデバイスで表示された認証コードをコピーして、コンソールに貼り付けなければいけないイメージがありましたが、タップだけで済むのは良い感じですね。また、数回繰り返してみましたがMFA認証は毎回要求されました。

※余談ですが「Duo Mobile」はスクリーンショット取得がアプリ側の制御で禁止されているようで取得できなかったので、別途写真を撮りました。このあたりのセキュリティ制御もしっかりしていますね。

まとめ

以上、MFA設定をしてSnowflakeにPythonで接続をしてみた結果でした。通常のPython接続を伴うコードの開発ではMFA設定はオフにするかなと思いますが、MFAが設定されていても接続は問題なくできますね。

どなたかのお役に立てば幸いです。それでは!