SnowflakeユーザでMFA認証を設定しよう

SnowflakeユーザでMFA認証を設定する手順について書きました。
2022.01.26

データアナリティクス事業本部のnkhrです。

Snowflakeでは、ユーザごとにMFA認証を有効化できます。

Snowflakeアクセス制御についての考慮事項によると、管理者ユーザ(ACCOUNTADMIN ROLE利用)には、MFA認証の設定を強く推奨しています。設定すると幸せに過ごせるかもしれません。

公式サイトの手順はここを参照。

SnowflakeでのMFA認証方法

以下のいずれかの方法でMFA認証を行えます。個人的には、DUO Mobileアプリを利用してPush Notificationを受け取る方法が使いやすかったです。

  • Approve Duo Push Notification
    • Snowflake(Duo)からのPush通信を受け取ってApproveする。
  • Call Me
    • 電話がかかってきて、何かキーを押すとApproveできる。電話を切るとDenyとなる。
  • Enter a passcode
    • DUOアプリでPasscodeが取得できるのでコードを入力する

MFA設定手順

ユーザごとに設定が必要です。

2022/01時点では、システム的にMFA認証をユーザに強制できないため、MFA実施状況はGUIかSQL実行により確認する必要があります。GUIから確認する場合は、「アカウント>ユーザー>MFA」の列で「有効化済み」になっているか確認します。

Mobileアプリをインストール

携帯のアプリ検索で「DUO Mobile」を探し、インストールします。以下はiPhoneにインストールしたイメージです。

MFAの有効化

1. ログイン後に右上の[ユーザ名>設定]を選択

2. 多要素認証で「MFAに登録」リンクをクリック

3. DUO(MFA認証)初期設定

Start setupをクリック

今回は携帯にインストールしたDuo Mobileアプリを利用するため「Mobile phone」を選択

電話番号を入力(携帯番号の場合、+81以降の数字は先頭0を除いた番号です)

Duo Mobileをインストールした携帯の種別を選択(今回は「iPhone」選択)

アプリインストール済みかの確認メッセージが表示されるので「I have Duo Mobile installed」を選択(まだインストールしていない場合は先にインストールを実施)

QRコードの画面が表示されるので携帯の「DUO Mobile」アプリを立ち上げて、QRコードを読み込む

<以下は携帯側の画面>

「Got it」をクリック

「Use a QR code」をクリックして、Snowflakeコンソール上に表示されているQRコードを読み込む

任意の「Account name」を設定して「Save」をクリック

登録が完了するとAccount Linkedと表示される。Practice nowをクリックすると、MFA認証(Push notification)のApprove/Denyボタンクリック練習ができる。Skipも可能。

完了すると以下の画面がDUO Mobileアプリで表示される。ShowをクリックするとPasscodeでのMFA認証コードが表示可能。

<以下はSnowflakeコンソール側の画面>

携帯の設定が完了すると、Snowflakeコンソール上で設定完了したことが表示されるので「Continue」で次の画面を表示

「When I log in」のドロップダウンリストでは、ログイン時のMFA認証方法を選択

  • Ask me to choose an authentication method
    • ID/Pass入力後にMFA認証方法を選択する画面を表示(Push Notification/Call Me/Enter passcodeを選択可能)
  • Automatically send this device a Duo Push
    • 選択画面なしにPush通知(DUOアプリ側でApproveまたはDenyをクリック)
  • Automatically call this device
    • 選択画面なしに電話

最後にMFA認証の確認が行われる。Ask me to choose an authentication methodを選択している場合は、下図のような選択画面が表示されるので、好きな認証方法を選択

以上で設定完了です。

ユーザの設定画面では以下のように有効化が確認できます。

MFAの無効化

MFAはGUIから有効化できますが、無効化にはSQL実行が必要です。

ユーザのMFAを一時的に無効化

一定時間のみMFAを無効化できます。ユーザの作成をACCOUNTADMINで行っている場合はACCOUNTADMIN権限で実行する必要があります。(ユーザ作成はUSERADMINやSECURITYADMINで行えるのでそちらを使うと良いです)

ALTER USER IF EXISTS <username> SET MINS_TO_BYPASS_MFA = <integer of min>

MFA登録を解除

MFAの登録を無効化できます。無効化した場合は、再度MFA登録が必要になります。

ALTER USER IF EXISTS <username> SET DISABLE_MFA = TRUE;

まとめ

備えあれば憂いなしです。

以上、nkhrでした。