多要素認証(MFA)

Snowflakeは多要素認証(MFA)をサポートしており、Snowflakeに接続するユーザーのログインセキュリティを強化しています。MFA サポートは、Snowflakeによって完全に管理される Duo Security サービスを搭載した統合Snowflake機能として提供されます。

複数のスマートフォンプラットフォーム(iOS、Android、Windowsなど)でサポートされているDuo Mobileアプリケーションをインストールする以外に、Duoに個別にサインアップしたり、タスクを実行したりする必要はありません。サポートされているプラットフォーム/デバイスとDuo多要素認証の仕組みの詳細については、 Duoユーザーガイド をご参照ください。

MFA はユーザーごとに有効化されます。ただし、現時点では、ユーザーは自動的に MFA に登録されません。MFA を使用するには、ご自身でご登録ください。

注意

少なくとも、ACCOUNTADMIN のロールがあるすべてのユーザーが MFA を使用することをSnowflakeでは 強く お勧めします。

このトピックの内容:

MFA のログインフロー

次の図は、接続に使用されるインターフェイスに関係なく、MFA に登録されているユーザーのログインフロー全体を示しています。

MFA login flow

MFA での Snowflake ユーザーの登録

以前は、ユーザーは Snowflake サポートにリクエストを送信することによってのみMFA に登録できましたが、この必要はなくなりました。

Snowflake ユーザーはすべて、ウェブインターフェイスから MFA に自己登録できます。詳細については、 ユーザー設定の管理 をご参照ください。

アカウントとユーザーの MFA の管理

アカウントレベルでは、MFA は管理を必要としません。アカウントで自動的に有効になり、すべてのユーザーが自己登録できます。ただし、ユーザーが電話を紛失したり、電話番号を変更して MFA でログインできない場合など、一時的または永続的に、ユーザーの MFA を無効にする必要がある場合があります。

ALTER USER コマンドに次のプロパティを使用して、これらのタスクを実行できます。

  • MINS_TO_BYPASS_MFA

    ユーザーがログインできるように、ユーザーの MFA を一時的に何分間無効にするかを指定します。この時間が経過すると、MFA が適用され、ユーザーはDuo Mobileアプリケーションによって生成された一時トークンなしではログインできなくなります。

  • DISABLE_MFA

    ユーザーの MFA を無効化して、登録を事実上キャンセルします。MFA を再度使用するには、再登録する必要があります。

    注釈

    DISABLE_MFA はSnowflakeテーブルまたはビューの列ではありません。アカウント管理者が ALTER USERコマンドを実行して DISABLE_MFA を TRUE に設定すると、 EXT_AUTHN_DUO プロパティの値は自動的に FALSE に設定されます。

    特定のユーザーに対して MFA が無効になっていることを確認するには、 DESCRIBE USER ステートメントを実行し、 EXT_AUTHN_DUO プロパティの値を確認します。

MFA によるSnowflakeへの接続

MFA のログインは主にウェブインターフェイスを介してSnowflakeに接続するために設計されていますが、SnowSQL、Snowflake JDBC および ODBC ドライバーでも完全にサポートされています。

ウェブインターフェイスと MFA の併用

MFA を使用してSnowflakeウェブインターフェイスにログインするには、次を実行します。

  1. ブラウザーでアカウントの URL を指定します(例: https://xy12345.snowflakecomputing.comhttps://xy12345.eu-central-1.snowflakecomputing.com)。

  2. 認証情報(ユーザーログイン名とパスワード)を入力します。

    MFA login
  3. Duo Pushが有効化されている場合は、プッシュ通知がDuo Mobileアプリケーションに送信されます。通知を受け取ったら、 Approve をクリックしてSnowflakeにログインします。

    MFA approval

    上記のスクリーンショットに示すように、プッシュ通知を使用する代わりに、次も選択できます。

    • Duo Mobileアプリケーションによって提供されるパスコードを手動で入力して、 Enter Duo Passcode をクリックしてログインします。

    • SMS メッセージを介してデバイスに一時パスコードのセットを送信するには、Request SMS Passcodes をクリックします。その後、パスコードの1つを手動で入力してログインできます。

SnowSQL と MFA の併用

MFA を使用して、SnowSQL を介してSnowflakeに接続できます。デフォルトでは、ユーザーが MFA に登録されると、Duo Push認証メカニズムが使用されます。

プッシュメカニズムの代わりにDuoが生成したパスコードを使用するには、ログインパラメーターに次の接続オプションのいずれかを含める必要があります。

--mfa-passcode <文字列> OR --mfa-passcode-in-password

詳細については、 SnowSQL (CLI クライアント) をご参照ください。

JDBC と MFA の併用

MFA を使用して、Snowflake JDBC ドライバーを介してSnowflakeに接続できます。デフォルトでは、ユーザーが MFA に登録されると、Duo Push認証メカニズムが使用されます。 JDBC 接続文字列を変更する必要はありません。

プッシュメカニズムの代わりにDuoが生成したパスコードを使用するには、次のパラメーターのいずれかを JDBC 接続文字列に含める必要があります。

passcode=<パスコード文字列> OR passcodeInPassword=on

条件:

  • パスコード文字列 は、接続中のユーザーに対してDuoが生成したパスコードです。これは、Duo Mobileアプリケーションによって生成されたパスコードまたは SMS パスコードのいずれかになります。

  • passcodeInPassword=on の場合、パスワードとパスコードは <パスワード文字列><パスコード文字列> の形式で連結されます。

詳細については、 JDBC ドライバー をご参照ください。

Duoを使用した JDBC 接続文字列の例

Duoパスコードを使用して(US 西部地域における) xy12345 アカウントに接続するユーザー demo のJDBC 接続文字列:

jdbc:snowflake://xy12345.snowflakecomputing.com/?user=demo&passcode=123456

パスワードに埋め込まれたDuoパスコードを使用して xy12345 アカウント(US 西部地域における)に接続するユーザー demo の JDBC 接続文字列:

jdbc:snowflake://xy12345.snowflakecomputing.com/?user=demo&passcodeInPassword=on

ODBC で MFA を使用

MFA を使用して、Snowflake ODBC ドライバーを介してSnowflakeに接続できます。デフォルトでは、ユーザーが MFA に登録されると、Duo Push認証メカニズムが使用されます。 ODBC 設定を変更する必要はありません。

プッシュメカニズムの代わりにDuoが生成したパスコードを使用するには、ドライバーに次のパラメーターのいずれかを指定する必要があります。

passcode=<パスコード文字列> OR passcodeInPassword=on

条件:

  • パスコード文字列 は、接続中のユーザーに対してDuoが生成したパスコードです。これは、Duo Mobileアプリケーションによって生成されたパスコードまたは SMS パスコードのいずれかになります。

  • passcodeInPassword=on の場合、パスワードとパスコードは <パスワード文字列><パスコード文字列> の形式で連結されます。

詳細については、『ODBC ドライバー 』をご参照ください。

Pythonと MFA の併用

MFA を使用して、Snowflake Python Connectorを介してSnowflakeに接続できます。デフォルトでは、ユーザーが MFA に登録されると、Duo Push認証メカニズムが使用されます。 Python API 呼び出しを変更する必要はありません。

プッシュメカニズムの代わりにDuoで生成されたパスコードを使用するには、connect()メソッドでドライバーに次のパラメーターのいずれかを指定する必要があります。

passcode=<パスコード文字列> OR passcode_in_password=True

条件:

  • パスコード文字列 は、接続中のユーザーに対してDuoが生成したパスコードです。これは、Duo Mobileアプリケーションによって生成されたパスコードまたは SMS パスコードのいずれかになります。

  • passcode_in_password=True の場合、パスワードとパスコードは <パスワード文字列><パスコード文字列> の形式で連結されます。

詳細については、Pythonコネクタ API ドキュメントの 関数 セクションにあるconnect()メソッドの説明をご参照ください。