多要素認証(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 でログインできない場合など、一時的または永続的に、ユーザーの 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への接続および認証中に確認する必要のあるプロンプトの数を減らすのに役立ちます。特に、比較的短い時間間隔内に複数の接続が試行された場合に役立ちます。
キャッシュされた MFA トークンは最大4時間有効です。
次の条件のいずれかが満たされた場合、キャッシュされた MFA トークンは無効です。
アカウントまたはユーザーの ALLOW_CLIENT_MFA_CACHING パラメーターは FALSE に設定されます。
認証方法が変わります。
認証情報が変更されます(つまり、ユーザー名やパスワード)。
認証情報が無効です。
キャッシュされたトークンの有効期限が切れているか、暗号が無効です。
キャッシュされたトークンに関連付けられているアカウント名が変更されます。
Snowflakeが MFA トークンをキャッシュするために使用する全体的なプロセスは、ブラウザーベースのフェデレーション シングルサインオン の接続トークンをキャッシュするために使用されるプロセスと似ています。クライアントアプリケーションは、 MFA トークンをクライアント側オペレーティングシステムのキーストアに保存します。ユーザーは、キャッシュされた MFA トークンをキーストアからいつでも削除できます。
Snowflakeは、次のクライアントバージョンで MFA トークンキャッシュをサポートしています。
JDBC ドライバーバージョン3.12.16(またはそれ以降)。
Snowflakeバージョン2.3.7(またはそれ以降)用のPythonコネクタ。
MFA トークンのキャッシュを有効にする前に、内部のセキュリティおよびコンプライアンス担当者に相談することをお勧めします。
ちなみに
MFA トークンキャッシングは、フェデレーション シングルサインオン の接続キャッシングと組み合わせることができます。
これら2つの機能を組み合わせるには、 ALLOW_ID_TOKEN パラメーターが ALLOW_CLIENT_MFA_CACHING パラメーターと並行して true
に設定されていることを確認します。
MFA トークンのキャッシュを有効にするには、次のステップを実行します。
アカウント管理者(つまり、 ACCOUNTADMIN システムロールを持つユーザー)として、 ALTER ACCOUNT コマンドを使用してアカウントの ALLOW_CLIENT_MFA_CACHING パラメーターを
true
に設定するか、 ALTER USER コマンドを使用してユーザーを設定します。-- account-level alter account set allow_client_mfa_caching = true;
クライアント接続文字列で、認証コードの値を
authenticator = username_password_mfa
に更新します。Python用Snowflakeコネクタを使用している場合は、次のコマンドを実行してオプションのキーリングパッケージをインストールします。
pip install "snowflake-connector-python[secure-local-storage]"
コマンドに表示されているように、角括弧(
[
および]
)を入力する必要があります。角括弧は、インストールする必要がある パッケージの追加部分 を指定します。角括弧がワイルドカードとして解釈されないようにするには、示されているようにパッケージ名を引用符で囲みます。
他の追加機能をインストールする必要がある場合(たとえば、 Pandas用Pythonコネクタ APIs を使用 する場合は
pandas
)は、追加機能の間にコンマを使用します。pip install "snowflake-connector-python[secure-local-storage,pandas]"
MFA トークンのキャッシュを無効にするには、 ALLOW_CLIENT_MFA_CACHING パラメーターの設定を解除します。
ウェブインターフェイスと MFA の併用¶
MFA を使用してSnowflakeウェブインターフェイスにログインするには、次を実行します。
ブラウザーでアカウントの URL を指定します(例:
https://xy12345.snowflakecomputing.com
、https://xy12345.eu-central-1.snowflakecomputing.com
)。認証情報(ユーザーログイン名とパスワード)を入力します。
Duo Pushが有効化されている場合は、プッシュ通知がDuo Mobileアプリケーションに送信されます。通知を受け取ったら、 Approve をクリックしてSnowflakeにログインします。
上記のスクリーンショットに示すように、プッシュ通知を使用する代わりに、次も選択できます。
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=<パスコード文字列>
ORpasscodeInPassword=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=<パスコード文字列>
ORpasscodeInPassword=on
条件:
パスコード文字列
は、接続中のユーザーに対してDuoが生成したパスコードです。これは、Duo Mobileアプリケーションによって生成されたパスコードまたは SMS パスコードのいずれかになります。passcodeInPassword=on
の場合、パスワードとパスコードは<パスワード文字列><パスコード文字列>
の形式で連結されます。
詳細については、『ODBC ドライバー 』をご参照ください。
Pythonと MFA の併用¶
MFA を使用して、Snowflake Python Connectorを介してSnowflakeに接続できます。デフォルトでは、ユーザーが MFA に登録されると、Duo Push認証メカニズムが使用されます。 Python API 呼び出しを変更する必要はありません。
プッシュメカニズムの代わりにDuoで生成されたパスコードを使用するには、connect()メソッドでドライバーに次のパラメーターのいずれかを指定する必要があります。
passcode=<パスコード文字列>
ORpasscode_in_password=True
条件:
パスコード文字列
は、接続中のユーザーに対してDuoが生成したパスコードです。これは、Duo Mobileアプリケーションによって生成されたパスコードまたは SMS パスコードのいずれかになります。passcode_in_password=True
の場合、パスワードとパスコードは<パスワード文字列><パスコード文字列>
の形式で連結されます。
詳細については、Pythonコネクタ API ドキュメントの 関数 セクションにあるconnect()メソッドの説明をご参照ください。