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

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

このトピックの内容:

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

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またはそれ以上

.NET ドライバー

v1.0.13またはそれ以上

Node.jsドライバー

v1.6.0またはそれ以上(ブラウザーベースの SSO の場合)。v1.6.1またはそれ以上(Oktaを介したネイティブ SSO 認証の場合)

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)

ODBC データソース管理者ツールで、Snowflakeの DSN を編集し、 Authenticatorexternalbrowser に設定します。

.NET

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

Node.js

snowflake.createConnection 関数を呼び出すときに authenticator=EXTERNALBROWSER オプションを設定します。

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

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

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

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

ちなみに

接続キャッシュは、 MFA トークンキャッシュと組み合わせることができます。

これら2つの機能を組み合わせる方法の詳細については、 MFA トークンキャッシングを使用して認証中のプロンプトの数を最小限に抑える --- オプション をご参照ください。

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]"
      
    • Snowflake JDBC ドライバーについては、 クラスパスへの JNA クラスの追加 をご参照ください。

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

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

Oktaを介してネイティブSSOを有効にするには、クライアントの authenticator ログインパラメーター/オプションをご使用のOktaアカウントの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)

ODBC データソース管理者ツールで、Snowflakeの DSN を編集し、 Authenticatorhttps://<Oktaアカウント名>.okta.com に設定します。

.NET

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

Node.js

snowflake.createConnection を呼び出すときは、 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 のドキュメントをご参照ください。

  • Snowflakeが提供する特定のクライアントでは、 MFA トークンを最大4時間キャッシュできます。詳細については、 MFA トークンキャッシングを使用して認証中のプロンプトの数を最小限に抑える --- オプション をご参照ください。

複数のオーディエンス値と SSO の使用

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

この機能は、オーディエンス値としてSnowflakeにアクセスするための URLs をサポートします。複数のSnowflakeアカウントのURLsがサポートされているのは、各アカウントに一意のアカウント名と、Snowflakeにアクセスするための一意のURLがあるためです。さらにSnowflakeは、オーディエンス値としてAWS PrivateLinkまたはAzure Private Linkを使用して、Snowflakeにアクセスするためのアカウントのドメイン名とURLsを受け入れます。SSOと、パブリックインターネットの回避の詳細については、 プライベート接続でのSSOの使用 (このトピック内)をご参照ください。

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

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

プライベート接続における SSO の使用

Snowflakeは、 AWS PrivateLink および Azure Private Link を使用したプライベート接続で SSO をサポートします。

現在、任意のSnowflakeアカウントに対し、 SSO は一度に1つのアカウント URL のみで機能します。パブリックアカウント URL、または AWS PrivateLink やAzure Private Linkサービスに関連付けられた URL のいずれかです。

ただし、 組織 プレビューに参加している場合は、SAML2セキュリティ統合の対応するアカウントURLを使用できます。詳細については、 高度な SAML SSO 機能 をご参照ください。

重要

AWSPrivateLinkまたはAzure Private LinkでSSOを使用するには、 Snowflake サポート に連絡し、AWSPrivateLinkまたはAzure Private Linkサービスで使用するアカウントURLを提供する 必要があります

アカウントのAWSPrivateLinkまたはAzure Private Link URL を確認するには、 SYSTEM$GET_PRIVATELINK_CONFIG を実行します。