フェデレーション認証の管理/使用

このトピックでは、 構成された のフェデレーション認証を管理および使用する方法について説明します。

このトピックの内容:

フェデレーション認証が有効なユーザーの管理

Snowflakeユーザーパスワードの管理

アカウントでフェデレーション認証が有効になっている場合でも、SnowflakeはSnowflakeのユーザー認証情報(ログイン名とパスワード)の維持と使用を引き続き許可します。言い換えると:

  • アカウント管理者とセキュリティ管理者は、Snowflakeで管理されているパスワードでユーザーを作成できます。

  • ユーザーは、引き続きSnowflakeの認証情報を使用してSnowflakeにログインできます。

ただし、アカウントでフェデレーション認証が有効になっている場合、SnowflakeはSnowflakeでユーザーパスワードを保持することを推奨 しません 。代わりに、ユーザーのパスワードは IdPのみで管理する必要があります。

パスワードなしでユーザーを作成する(または既存のユーザーを変更してパスワードを削除する)場合、これによりユーザーのSnowflake認証が事実上無効になります。Snowflakeにパスワードがないと、ユーザーはSnowflake認証を使用してログインできないため、代わりにフェデレーション認証を使用する必要があります。Snowflakeのウェブインターフェイスを使用して、パスワードのないユーザーを作成したり、既存のユーザーからパスワードを削除したりすることはできません。 CREATE USER または ALTER USER を使用する必要があります。

具体的には、管理者以外のすべてのユーザーに対してSnowflake認証を無効にすることをお勧めします。

重要

MUST_CHANGE_PASSWORD ユーザープロパティはフェデレーション認証に適用されないため、使用しないでください。特に、ユーザー用にSnowflakeでパスワードを保持しないことを選択した場合、このプロパティが 確実に FALSE に設定します。

また、Snowflakeパスワードを使用して、 最低 1人のSnowflakeアカウント管理者を維持する必要があります。これにより、アカウント管理者は常にSnowflakeにアクセスして、フェデレーション認証を管理し、発生した問題をトラブルシューティングできます。

ユーザーの無効化とドロップ

Snowflakeのアカウントまたはセキュリティ管理者は、ユーザーをドロップするか、高い可能性で無効にする必要が生じる場合があります。Snowflakeでドロップまたは無効化されたユーザーは、引き続きOktaアカウントにログインできますが、Snowflakeに接続しようとするとエラーメッセージが表示されます。ユーザーがログインする前に、ユーザーを再作成または有効化する必要があります。

Snowflakeのウェブインターフェイスまたは同等の SQL コマンドを使用して、ユーザーをドロップ/作成および無効化/有効化できます。

Snowflakeに接続するクライアントアプリケーションでの SSO の使用

アカウントで IdP (Okta、 ADFS、またはその他のサポートされている SAML 2.0準拠のサービス/アプリケーション)を構成すると、Snowflakeは SSO を使用して、次のSnowflake提供クライアントとの接続および認証ができるようになります。

SnowSQL

v1.1.43以上

Pythonコネクタ

v1.4.8以上

JDBC ドライバー

v3.2.7以上

ODBC ドライバー

v2.13.11以上

Snowflakeは、2つの認証方法をサポートしています。

  • ブラウザーベース SSO

  • プログラマティック SSO (Oktaのみ)

重要

Snowflakeに接続するクライアントアプリケーションで SSO を使用する場合、ユーザーはプロンプトが表示されたらログイン認証情報を入力する必要があります。ただし、セキュリティ上の理由から、これらの認証情報はクライアントを介して処理されることはありません。代わりに、認証のために認証情報が IdP に送信され、 IdP は有効な SAML 応答を返送します。これにより、クライアントはSnowflakeセッションを開始できます。

ブラウザーベース SSO

Snowflakeが提供するクライアントの必要なバージョン(またはそれ以上) をユーザーがインストールしている場合、ブラウザーベースの SSO を使用してSnowflakeにログインできます。

ブラウザーベースの SSO の仕組み

クライアントアプリケーションがブラウザーベースの SSO を使用するように構成されている場合、アプリケーションはユーザー認証に次のワークフローを使用します。

  1. アプリケーションは、ユーザーのオペレーティングシステムでデフォルトのウェブブラウザーを起動するか、新しいブラウザーのタブ/ウィンドウを開き、 IdP の認証ページを表示します。

  2. ユーザーは自分の IdP 認証情報(ユーザー名とパスワード)を入力します。

  3. ユーザーがSnowflakeの MFA (多要素認証)に登録されている場合、 MFA パスコード(別のデバイスから送信)を入力するか、認証を(他のデバイス上で)確認するよう求められます。

  4. IdP がユーザーの認証情報を認証すると、ブラウザーに成功メッセージが表示されます。ユーザーはその後、ブラウザーのタブ/ウィンドウを閉じて(認証後に開く必要はありません)、アプリケーションに戻り、開始されたSnowflakeセッションを使用できます。

ブラウザーベースの SSO を使用するための要件

ブラウザーベースの SSO を使用する場合、Snowflakeが提供するクライアント(たとえば、Snowflake JDBC ドライバー)は、ユーザーのウェブブラウザーを開くことができる必要があります。このため、Snowflakeが提供するクライアントと、それを使用するクライアントアプリケーションをユーザーのマシンにインストールする必要があります。サーバーで実行されるコードがSnowflake提供のクライアントを使用している場合、ブラウザーベースの SSO は機能しません。

ブラウザーベースの SSO の設定

認証用にブラウザーベースの SSO を設定するには、クライアントの authenticator ログインパラメーター/オプションを externalbrowser に設定します。

クライアント

手順

SnowSQL

クライアントの起動時に、コマンドラインフラグ --authenticator externalbrowser を指定します。

Python

authenticator='externalbrowser'snowflake.connector.connect() 関数に渡します。

JDBC

ドライバーの接続文字列で、 authenticator=externalbrowser を設定します。

ODBC (Linux /macOS)

odbc.ini ファイルで、 authenticator=externalbrowser を設定します。

ODBC (Windows)

regedit を使用して、Windowsレジストリに値を設定します。

.NET

ドライバーの接続文字列で、 authenticator=externalbrowser を設定します。

(オプション)接続キャッシュを使用して認証のプロンプト数を最小限に抑制

クライアントアプリケーションがSnowflakeへの新しい接続を確立するたびに、ユーザーは認証を求められます。このため、クライアントアプリケーションが複数回接続を確立した場合は、認証のための複数のプロンプトが表示される可能性があります。

ユーザーが認証を求められる回数を最小限に抑えるために、アカウント管理者は接続キャッシュを有効にすることができます。

接続キャッシュが有効になっている場合、クライアントアプリケーションは、後続の接続で使用する接続トークンを保存します。セキュリティのため、接続トークンはオペレーティングシステムのキーストアに保存されます。接続キャッシュを有効にする前に、セキュリティチームに相談して、これがセキュリティポリシーに準拠しているかどうかを確認してください。

注釈

接続キャッシュはオプションであり、ブラウザーベースの SSO を使用する場合は必要ありません。

Snowflakeは、 macOS およびWindowsで次のドライバーとコネクタを使用した接続キャッシュをサポートしています(現在、この機能はLinuxでは非対応)。

  • ODBC ドライバーバージョン2.21.2(またはそれ以降)

  • JDBC ドライバーバージョン3.12.8(またはそれ以降)

  • Python用Snowflakeコネクタ2.2.8(またはそれ以降)

接続キャッシュを有効にするには、

  1. アカウントレベルのパラメーター ALLOW_ID_TOKENtrue に設定します。

    alter account set allow_id_token = true;
    

    注釈

    接続キャッシュを有効にするには、アカウント管理者(つまり、 ACCOUNTADMIN ロールを持つユーザー)である必要があります。

  2. Python用Snowflakeコネクタを使用している場合は、次のコマンドを実行してオプションのキーリングパッケージをインストールします。

    pip install "snowflake-connector-python[secure-local-storage]"
    

    コマンドに表示されているように、角括弧([ および ])を入力する必要があります。角括弧は、インストールする必要がある パッケージの追加部分 を指定します。

    角括弧がワイルドカードとして解釈されないようにするには、パッケージ名を引用符で囲みます(図参照)。

    他の追加機能をインストールする必要がある場合(たとえば、 Pandas用Pythonコネクタ APIs を使用 する場合は pandas)は、追加機能の間にコンマを使用します。

    pip install "snowflake-connector-python[secure-local-storage,pandas]"
    

ネイティブ SSO --- Oktaのみ

Oktaが IdP の場合、SnowflakeはOktaによるネイティブ認証もサポートします。この認証方法は、ウェブブラウザーにアクセスできないクライアントで SSO を使用している場合に便利です(例:Pythonコネクタまたは JDBC あるいは ODBC ドライバーのどちらかを介したプログラムで接続)。

Oktaを介してネイティブ SSO を有効にするには、クライアントの authenticator ログインパラメーター/オプションをOkta URL エンドポイント(Oktaが提供)に、通常 https://<ご使用のOktaアカウント名>.okta.com の形式で設定します。

クライアント

手順

SnowSQL

クライアントの起動時に、コマンドラインフラグ --authenticator https://<ご使用のOktaアカウント名>.okta.com を指定します。

Python

authenticator='https://<ご使用のOktaアカウント名>.okta.com'snowflake.connector.connect() 関数に渡します。

JDBC

ドライバーの接続文字列に authenticator=https://<ご使用のOktaアカウント名>.okta.com を設定します。

ODBC (Linux /macOS)

odbc.ini ファイルに authenticator=https://<ご使用のOktaアカウント名>.okta.com を設定します。

ODBC (Windows)

regedit を使用して、Windowsレジストリに値を設定します。

.NET

ドライバーの接続文字列に authenticator=https://<ご使用のOktaアカウント名>.okta.com を設定します。

SSO と MFA の併用

Snowflakeは、追加のセキュリティレベルを提供するために、 MFA と SSO の併用をサポートしています。

  • Snowflakeの個々のユーザーは MFA に登録できます。Snowflakeユーザーが MFA に登録され、 SSO を使用して接続する場合、 MFA ログインワークフローは SSO ワークフロー内で開始され、認証を正常に完了するために必要です。Snowflakeの MFA の詳細については、 多要素認証(MFA) をご参照ください。

    注釈

    Okta SSO を介して MFA で接続するには、Snowflakeはブラウザーベースの SSO を使用する必要があります。Oktaにネイティブ SSO を使用している場合、 MFA はサポートされません。

  • さらに、 IdP も MFAをサポートしますが、これはSnowflakeの MFA とは別であり、 IdPを介して別途構成する必要があります。 MFA が IdPで有効になっている場合、 IdP がワークフローを決定します。 IdP が MFA をサポートしているかどうか、またその実装方法を確認するには、 IdPのドキュメントををご参照ください。

複数のオーディエンス値で SSO を使用する

Snowflakeは、IDプロバイダーからSnowflakeへの SAML 2.0アサーションで複数のオーディエンス値(つまり、オーディエンスまたはオーディエンス制限フィールド)をサポートしています。

この機能により、顧客は、 AWS PrivateLink URL および AWS PrivateLink URL 以外など、複数のアカウントに URLs を含めることができます。Snowflakeは、オーディエンス値のアカウントドメイン名を受け入れます。

現在、Snowflakeは最大4つの異なるオーディエンス値をサポートおよび受け入れています。Snowflakeでの設定は必要ありません。4つより多いオーディエンス値を含める必要がある場合は、Snowflakeサポートにお問い合わせください。

SAML 2.0のオーディエンス値の構成については、組織のIDプロバイダー管理者にお問い合わせください。