ODBC 構成および接続パラメーター

Snowflake ODBC ドライバーは、構成パラメーターと接続パラメーターの両方を利用します。パラメーターを設定する方法は、ドライバーがインストールされている環境によって異なります。

このトピックの内容:

Windowsでのパラメーターの設定

Windowsの場合:

  • 構成パラメーターは、 regedit と次のレジストリパスを使用してWindowsレジストリに設定されます。

    [HKEY_LOCAL_MACHINE\SOFTWARE\Snowflake\Driver]
    
  • 接続パラメーターはデータソース名(DSNs)で設定されます。

    • DSNs は通常、Windows Data Source Administration ツールを使用して作成および編集されます。

    • 必要に応じて regedit を使用して、 DSNs のレジストリキーをWindowsレジストリで直接編集できます。キーへのレジストリパスは、64ビットと32ビットのWindowsを使用しているか、ユーザーまたはシステム DSN を編集しているかによって異なります。

      • 64ビットWindows:

        [HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\<DSN_NAME>]
        
        [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\<DSN_NAME>]
        
      • 32ビットWindows:

        [HKEY_CURRENT_USER\SOFTWARE\WOW6432NODE\ODBC\ODBC.INI\<DSN_NAME>]
        
        [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432NODE\ODBC\ODBC.INI\<DSN_NAME>]
        

      regedit を使用して接続パラメーターを追加するには、新しい String Value を追加し、作成した値をダブルクリックして、 ODBC パラメーターを Value name として、そしてパラメーター値を Value data として入力します。

macOS またはLinuxでのパラメーターの設定

macOS またはLinuxの場合:

  • 構成パラメーターは、構成ファイル(simba.snowflake.ini)で設定されます。

  • 接続パラメーターはデータソース名(DSN)ファイル(odbc.ini)で設定されます。

構成パラメーター

LogLevel

ODBC ドライバーを使用するクライアントについて記録される詳細レベルを指定します。

0 = Off
1 = Fatal
2 = Error
3 = Warning
4 = Info
5 = Debug
6 = Trace
LogPath

ODBC ドライバーを使用するクライアントのSnowflakeログファイルの場所を指定します。

CURLVerboseMode

cURL の詳細ログを有効にするには、 true に設定します。ログファイル snowflake_odbc_curl.dmp が作成および更新されます。Snowflake ODBC ドライバーは、 cURL を HTTP および SSL ライブラリとして使用します。このパラメーターは、ネットワークの問題の診断に役立ちます。

Proxy

ODBC ドライバーを使用するクライアント用に、プロキシサーバーを <ホスト>:<ポート> の形式で指定します。

注釈

Windowsでは、 ODBC ドライバーがインストールされると、 LogLevel および LogPath のエントリが作成され、デフォルト値が入力されます。ただし、インストール中に Proxy のエントリは作成されません。ドライバーで使用するプロキシを指定するには、ドライバーレジストリキーにエントリを手動で追加する必要があります。

1つ以上の IP アドレスまたは URLs のプロキシをバイパスするには、 NoProxy パラメーターを追加します。

NoProxy

プロキシサーバーをバイパスするホスト名パターンを指定します(例:Amazon S3アクセスをバイパスするには、 .amazonaws.com)。

注釈

Snowflake ODBC ドライバーは、 NoProxy 値をカールプション CURLOPT_NOPROXY に渡します。 NoProxy 値の形式は こちら にあります。

CABundleFile

証明機関(CA)のバンドルファイルの場所を設定します。CA 証明書の有効なリストを含むファイルを参照する必要があります。

Linuxの場合、 RPM および DEB インストーラーは自動的にファイルをコピーし、このパラメーターを設定します。

Macの場合、 PKG インストーラーはファイルをコピーし、このパラメーターを設定します。

Windowsの場合、 MSI インストーラーはファイルをコピーし、このパラメーターを設定します。

手動インストールでは、 https://curl.haxx.se/docs/caextract.html からファイルをダウンロードし、ファイルの場所を設定する必要があります。

DisableOCSPCheck

true に設定して、オンライン証明書状態プロトコル(OCSP)による TLS/SSL 証明書失効ステータスチェックを無効にします。通常の状況では、このフラグは設定しないでください。ただし、 OCSP の可用性の問題が解決しないときは、アプリケーションがこのパラメーターを一時的に設定して、接続の問題のブロックを解除し、 OCSP の可用性の問題が解決されたときに削除する場合があります。

KeepLeadingTrailingZeros

文字列値としてフォーマットされた数値の先頭または後続のゼロの処理方法を決定します。デフォルトでは、パラメーターは true に設定されます。これは、ドライバーが先頭または後続のゼロを保持することを意味します。パラメーターを false に設定して、先頭または後続のゼロを削除します。たとえば、

  • 0.23.23 に変更

  • 7.007 に変更

NoExecuteInSQLPrepare

true に設定して、 ODBC ドライバーを構成し、 DDL ステートメント(CREATE や DROP など)を SQLPrepare()SQLExecute() に渡すときに標準の ODBC 動作を使用します。

Snowflakeでは、デフォルトで、 DDL ステートメントを SQLPrepare() に渡すと、 ODBC ドライバーはデータソースにステートメントを送信して(準備ではなく)実行します。DDL ステートメントを SQLExecute() に渡すと、 ODBC ドライバーはステートメントをデータソースに送信しません。

NoExecuteInSQLPreparetrue に設定すると、 ODBC ドライバーは標準の ODBC 動作に従います。 SQLPrepare() を呼び出すと、ステートメントがデータソースに送信され、準備されます(実行はしない)。 SQLExecute() を呼び出すと、ステートメントがデータソースに送信されて実行されます。

このパラメーターは、 ODBC ドライバーのバージョン2.21.6で導入されました。

接続パラメーター

必要な接続パラメーター

<名前> (データソース)

DSNの名前を指定します。

uid (ユーザー)

認証するSnowflakeユーザーのログイン名を指定します。

pwd (パスワード)

Snowflakeに接続するにはパスワードが必要です。ただし、セキュリティおよび認証上の理由により、 DSN 定義内にパスワード認証情報を直接保存することを強くお勧めします。

通常、認証情報は、Snowflakeへの接続を試行しているクライアントアプリケーションによってプログラムでドライバーに渡されます。

注釈

Windowsでは、 ODBC ドライバーは Data Source Administration ツールの Password フィールドを表示します。ただし、ドライバーはフィールドに入力された値を保存 しません 。代わりに、ドライバーは接続時にログイン認証情報を提供する必要があります。

server (サーバー)

アカウントの ホスト名 を次の形式で指定します。

アカウント名.snowflakecomputing.com

ただし、完全なアカウント名には、アカウントがホストされている 地域 および クラウドプラットフォーム を識別する 追加 のセグメントが含まれている場合があります。

地域別のアカウント名の例

アカウント名が xy12345 の場合、

クラウドプラットフォーム/地域

完全なアカウント名

AWS

US 西部(オレゴン)

xy12345

US 東部(オハイオ)

xy12345.us-east-2.aws

US 東部(バージニア北部)

xy12345.us-east-1

US 東部(商業組織、バージニア政府北部)

xy12345.us-east-1-gov.aws

カナダ(中部)

xy12345.ca-central-1.aws

EU (アイルランド)

xy12345.eu-west-1

EU (フランクフルト)

xy12345.eu-central-1

アジア太平洋(東京)

xy12345.ap-northeast-1.aws

アジア太平洋(ムンバイ)

xy12345.ap-south-1.aws

アジア太平洋(シンガポール)

xy12345.ap-southeast-1

アジア太平洋(シドニー)

xy12345.ap-southeast-2

GCP

US 中央部1(アイオワ)

xy12345.us-central1.gcp

ヨーロッパ西部2(ロンドン)

xy12345.europe-west2.gcp

ヨーロッパ西部4(オランダ)

xy12345.europe-west4.gcp

Azure

西 US 2(ワシントン)

xy12345.west-us-2.azure

東 US 2(バージニア)

xy12345.east-us-2.azure

US 政府バージニア

xy12345.us-gov-virginia.azure

カナダ中央部(トロント)

xy12345.canada-central.azure

西ヨーロッパ(オランダ)

xy12345.west-europe.azure

スイス北部(チューリッヒ)

xy12345.switzerland-north.azure

東南アジア(シンガポール)

xy12345.southeast-asia.azure

オーストラリア東部(ニューサウスウェールズ)

xy12345.australia-east.azure

重要

次のいずれかの条件に該当する場合、アカウント名はこの例の構造とは異なります。

  • Snowflake Editionが VPS の場合、アカウント名の詳細については Snowflakeサポート にお問い合わせください。

  • AWS PrivateLink がアカウントで有効になっている場合、アカウント名には追加の privatelink セグメントが 必要 です。詳細については、 AWS PrivateLink とSnowflake をご参照ください。

port (ポート)

ドライバーがSnowflake通信をリッスンするポートを指定します。

注釈

443 のデフォルトの Port 値を変更する必要はありません。

オプションの接続パラメーター

database (データベース)

ドライバーによって開始されたセッションに使用するデフォルトのデータベースを指定します。

schema (スキーマ)

ドライバーによって開始されたセッションに使用するデフォルトのスキーマを指定します。

デフォルトは public です。

warehouse (ウェアハウス)

ドライバーによって開始されたセッションに使用するデフォルトのウェアハウスを指定します。

role (ロール)

ドライバーによって開始されたセッションに使用する既定のロールを指定します。指定されたロールは、ドライバーの指定されたユーザーに割り当てられたロールでなければなりません。指定されたロールがユーザーに割り当てられたロールのいずれとも一致しない場合、ドライバーによって開始されたセッションには最初はロールがありません。ただし、ロールはセッション内からいつでも指定できます。

tracing (トレース)

ドライバートレースファイルに記録される詳細レベル:

0 =トレースの無効化

1 =致命的なエラーのみトレース

2 =エラートレース

3 =警告トレース

4 =情報トレース

5 =デバッグトレース

6 =詳細トレース

追加の接続パラメーター

注釈

Windowsでは、これらの追加の接続パラメーターは、 regedit を使用してWindowsレジストリで設定できます。

macOS またはLinuxでは、他の接続パラメーターと同様に、 odbc.ini ファイルで設定されます。

application

Snowflakeパートナーによる使用のみ : ODBC を介して接続するパートナーアプリケーションの名前を指定します。

このパラメーターは、 SQLSetConnectAttr() 関数を呼び出すことでも設定できます。詳細については、 Snowflake固有のSQLSetConnectAttr 関数の動作 をご参照ください。

authenticator

ユーザーのログイン認証情報の確認に使用する認証方式を指定します。

  • snowflake (デフォルト)は、内部Snowflake認証方式を使用します。

  • externalbrowser to use your web browser to authenticate with Okta, ADFS, or any other SAML 2.0-compliant identity provider (IdP) that has been defined for your account.

  • https://<Oktaのアカウント名>.okta.com (つまり、Oktaの URL エンドポイント)から ネイティブOktaを介して認証 します( IdP がOktaの場合にのみサポート)。

  • OAuth を使用して認証する oauth。OAuth が認証コードとして指定されている場合は、 OAuth トークンを指定するために token パラメーターも設定する必要があります( 以下を参照)。

デフォルトは snowflake です。

認証の詳細については、 フェデレーション認証の管理/使用 および OAuth のクライアント、ドライバー、およびコネクター をご参照ください。

token=<文字列>

認証に使用する OAuth トークンを指定します。 <文字列> はトークンです。このパラメーターは、 authenticator=oauth パラメーターが設定されている場合にのみ必要です。

デフォルトはありません。

passcode

多要素認証に使用するパスコードを指定します。

多要素認証の詳細については、 多要素認証(MFA) をご参照ください。

passcodeInPassword

多要素認証のパスコードをパスワードに追加するかどうかを指定します。

  • on (または true)は、パスコードが追加されることを指定します。

  • off (または false)またはその他の値は、パスコードが追加されないことを指定します。

デフォルト値は off です。

login_timeout

ログイン失敗エラーを返す前に、Snowflakeサービスに接続する際の応答を待機する時間を指定します。

デフォルトは60秒です。

network_timeout

Snowflakeサービスと対話するときにエラーを返すまでの応答を待機する時間を指定します。ゼロ(0)は、ネットワークタイムアウトが設定されていないことを示します。

デフォルトは0秒です。

query_timeout

エラーを返す前に、クエリが完了するまで待機する時間を指定します。ゼロ(0)は無期限に待機することを示します。

デフォルトは0秒です。

odbc_use_standard_timestamp_columnsize

このブール値パラメーターは、 SQL_TYPE_TIMESTAMPに対して返される列サイズ(文字数)に影響します。このパラメーターをtrueに設定すると、ドライバーは ODBC 標準に従って29を返します。このパラメーターをfalseに設定すると、ドライバーは35を返します。これにより、タイムゾーンオフセット用のスペースが許可されます(例: 「-08:00」)。

この値は、odbc.iniファイル(Linuxまたは macOS)または MS-Windowsレジストリだけでなく、接続文字列経由でも設定できます。

デフォルトはfalseです。

proxy

ODBC からのすべての通信がプロキシサーバーを使用するように、プロキシサーバー URL を http://<ホスト名>:<ポート>/ または <ホスト名>:<ポート番号> の形式で指定します。

注釈

このパラメーターはプロセスに適用されます。別の接続が同じプロセスを共有する場合、プロキシ設定は同一である必要があります。そうでない場合、動作は予測できません。

no_proxy

プロキシサーバーのバイパスを許可するホスト名の末尾を指定します(例: no_proxy=.amazonaws.com は、Amazon S3アクセスがプロキシを通過する必要がないことを意味)。

このパラメーターはワイルドカードをサポートしていません。指定する各値は、次のいずれかである必要があります。

  • ホスト名の末尾(または完全なホスト名)。例:

    • .amazonaws.com

    • xy12345.snowflakecomputing.com

  • IP アドレス。例:

    • 192.196.1.15

複数の値を指定する場合、値はコンマで区切る必要があります。次に例を示します。

no_proxy=localhost,.my_company.com,xy12345.snowflakecomputing.com,192.168.1.15,192.168.1.16

注釈

このパラメーターはプロセスに適用されます。別の接続が同じプロセスを共有する場合、プロキシ設定は同一である必要があります。そうでない場合、動作は予測できません。

SnowCD を使用したSnowflakeへのネットワーク接続の検証

ドライバーを設定したら、 SnowCD を使用して、Snowflakeへのネットワーク接続を評価およびトラブルシューティングできます。

初期設定プロセス中にオンデマンドで SnowCD をいつでも使用して、Snowflakeへのネットワーク接続を評価およびトラブルシューティングできます。

プロキシサーバー経由での接続

プロキシサーバー接続を構成する手順は、オペレーティングシステムとドライバーのバージョンによって異なります。

オペレーティングシステム

ドライバーのバージョン

サポートされている手順

Linux

2.16.0(2018年5月3日リリース)またはそれ以上

2.13.18(2018年2月7日リリース)~2.15.0(2018年4月30日リリース)

環境変数の使用

2.13.17またはそれ以下

構成パラメーターの使用

macOS

2.16.0(2018年5月3日リリース)またはそれ以上

2.14.0(2018年3月28日リリース)~2.15.0(2018年4月30日リリース)

環境変数の使用

2.13.21またはそれ以下

構成パラメーターの使用

Windows

2.16.0(2018年5月3日リリース)またはそれ以上

2.15.0(2018年4月30日リリース)

環境変数の使用

2.14.0またはそれ以下

構成パラメーターの使用

注釈

上記の ODBC ドライバーの最新バージョンは、リストされている構成オプションのいずれかをサポートしています。オプションは優先順にリストされています。複数のオプションが定義されている場合、優先順位が最も高い設定が適用されます。

接続パラメーターの使用

プロキシサーバー経由で接続するには、次の接続パラメーターを DSNに追加します。

  • proxy

  • no_proxy

例:

[connection]
Description = SnowflakeDB
Driver      = SnowflakeDSIIDriver
Locale      = en-US
server      = account.snowflakecomputing.com
proxy       = http://proxyserver.company:80
no_proxy    = .amazonaws.com

パラメーターの説明については、 接続パラメーター をご参照ください。

構成パラメーターの使用

注釈

これらのパラメーターは、最新の ODBC ドライバーバージョンでは廃止されました(つまり、サポートなし)。 プロキシサーバーを介した接続 で、サポートされているオプションのテーブルをご参照ください。ドライバーをアップグレードするときに、環境変数または接続パラメーターを使用してプロキシサーバー設定を構成します。

プロキシサーバー経由で接続するには、次の構成パラメーターを追加します。

  • Proxy

  • NoProxy

パラメーターの説明については、 構成パラメーター をご参照ください。

環境変数の使用

プロキシサーバー経由で接続するには、次の環境変数を構成します。

  • http_proxy

  • https_proxy

  • no_proxy

注釈

これらの環境変数は、Linuxおよび macOSで大文字と小文字が区別されるため、小文字で設定する必要があります。Windowsの場合、環境変数は大文字と小文字を区別しません。

例:

  • Linuxまたは macOS:

    export http_proxy=http://proxyserver.company.com:80
    export https_proxy=http://proxyserver.company.com:80
    

    プロキシサーバーでユーザー名とパスワードが必要な場合は、認証情報を含めます。たとえば、

    export https_proxy=http://username:password@proxyserver.company.com:80
    
  • Windows:

    set http_proxy=http://proxyserver.company.com:80
    set https_proxy=http://proxyserver.company.com:80
    

    プロキシサーバーでユーザー名とパスワードが必要な場合は、認証情報を含めます。たとえば、

    set https_proxy=http://username:password@proxyserver.company.com:80
    

オプションで、特定の通信のプロキシをバイパスするように no_proxy を設定できます(例:Amazon S3アクセスをバイパスするには、 no_proxy=.amazonaws.com)。

認証でのシングルサインオン(SSO)の使用

シングルサインオン(SSO)を使用するようにSnowflakeを構成 している場合、認証に SSO を使用するようにクライアントアプリケーションを構成できます。詳細については Snowflakeに接続するクライアントアプリケーションでの SSO の使用 をご参照ください。

キーペア認証の使用

Snowflakeは一般的なユーザー名/パスワード認証ではなく、キーペア認証の使用をサポートしています。この認証方法には、2048ビット(最小)の RSA キーペアが必要です。 OpenSSLを使用して公開キーと秘密キーのペアを生成します。公開キーは、Snowflakeクライアントを使用するSnowflakeユーザーに割り当てられます。

ちなみに

PCI DSS 標準に基づいた長くて複雑なパスワードを使用して、ローカルで生成された秘密キーを保護することをSnowflakeはお勧めします。

PCI DSS標準に基づいて長くて複雑なパスワードを生成するには、次の手順に従います。

  1. PCI セキュリティ標準ドキュメントライブラリ にアクセスします。

  2. PCI DSS には、最新バージョンと希望の言語を選択します。

  3. フォームに入力して、ドキュメントにアクセスします。

  4. Passwords/passphrases must meet the following: を検索し、パスワード/パスフレーズの要件、テスト、およびガイダンスに関する推奨事項に従ってください。

  • ドキュメントのバージョンに応じて、 Requirement 8: Identify and authenticate access to system components (または類似の名前)と呼ばれるセクションに、このフレーズを見つけられる可能性があります。

公開/秘密キーペアを構成するには、

  1. ターミナルウィンドウのコマンドラインから、秘密キーを生成します。

    秘密キーは、暗号化バージョンまたは非暗号化バージョンのいずれかを生成できます。

    非暗号化バージョンを生成するには、次のコマンドを使用します。

    $ openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
    

    暗号化バージョンを生成するには、次の(「-nocrypt」を省略する)コマンドを使用します。

    $ openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8
    

    通常は、暗号化されたバージョンを生成する方が安全です。

    2番目のコマンドを使用して秘密キーを暗号化する場合、 OpenSSL は秘密キーファイルの暗号化に使用されるパスフレーズの入力を求めます。強力なパスフレーズを使用して秘密キーを保護することをお勧めします。このパスフレーズを安全な場所に記録します。Snowflakeに接続するときに入力します。パスフレーズは秘密キーの保護にのみ使用され、Snowflakeには送信されないことに注意してください。

    サンプル PEM 秘密キー

    -----BEGIN ENCRYPTED PRIVATE KEY-----
    MIIE6TAbBgkqhkiG9w0BBQMwDgQILYPyCppzOwECAggABIIEyLiGSpeeGSe3xHP1
    wHLjfCYycUPennlX2bd8yX8xOxGSGfvB+99+PmSlex0FmY9ov1J8H1H9Y3lMWXbL
    ...
    -----END ENCRYPTED PRIVATE KEY-----
    
  2. コマンドラインから、秘密キーを参照して公開キーを生成します:

    秘密キーが暗号化され、「rsa_key.p8」という名前のファイルに含まれていると仮定して、次のコマンドを使用します:

    $ openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
    

    サンプル PEM 公開キー

    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy+Fw2qv4Roud3l6tjPH4
    zxybHjmZ5rhtCz9jppCV8UTWvEXxa88IGRIHbJ/PwKW/mR8LXdfI7l/9vCMXX4mk
    ...
    -----END PUBLIC KEY-----
    
  3. 公開キーファイルと秘密キーファイルを保存用のローカルディレクトリにコピーします。ファイルへのパスを記録します。秘密キーは PKCS#8(公開キー暗号化標準)形式を使用して格納され、前の手順で指定したパスフレーズを使用して暗号化されることに注意してください。ただし、オペレーティングシステムが提供するファイル許可メカニズムを使用して、ファイルを不正アクセスから保護する必要があります。ファイルが使用されていない場合、ファイルを保護するのはユーザーの責任です。

  4. ALTER USER を使用して、Snowflakeユーザーに公開キーを割り当てます。例:

    ALTER USER jsmith SET RSA_PUBLIC_KEY='MIIBIjANBgkqh...';
    

    注釈

    • ユーザーを変更できるのは、セキュリティ管理者(つまり、 SECURITYADMIN ロールのユーザー)以上のみです。

    • SQL ステートメントで公開キーのヘッダーとフッターを除外します。

    DESCRIBE USER を使用してユーザーの公開キーの指紋を検証します:

    DESC USER jsmith;
    +-------------------------------+-----------------------------------------------------+---------+-------------------------------------------------------------------------------+
    | property                      | value                                               | default | description                                                                   |
    |-------------------------------+-----------------------------------------------------+---------+-------------------------------------------------------------------------------|
    | NAME                          | JSMITH                                              | null    | Name                                                                          |
    ...
    ...
    | RSA_PUBLIC_KEY_FP             | SHA256:nvnONUsfiuycCLMXIEWG4eTp4FjhVUZQUQbNpbSHXiA= | null    | Fingerprint of user's RSA public key.                                         |
    | RSA_PUBLIC_KEY_2_FP           | null                                                | null    | Fingerprint of user's second RSA public key.                                  |
    +-------------------------------+-----------------------------------------------------+---------+-------------------------------------------------------------------------------+
    

    注釈

    RSA_PUBLIC_KEY_2_FP プロパティについては、このトピックの キーローテーション で説明しています。

  5. ドライバーのデータソース名(DSN)エントリを変更します。 DSN エントリの詳細については、オペレーティングシステムに該当するトピックをご参照ください。

    次の(大文字と小文字を区別する)パラメーターを追加します。

    AUTHENTICATOR = SNOWFLAKE_JWT

    JSON Webトークン(JWT)でのキーペア認証を使用してSnowflake接続を認証するように指定します。

    JWT_TIME_OUT = 整数

    オプション。Snowflakeがタイムアウトになるまで JWT の受信を待機する時間の長さ(秒単位)を指定します。その場合、認証は失敗し、ドライバーは Invalid JWT token エラーを返します。エラーの繰り返し発生を解決するには、パラメーター値を増やします。デフォルト: 30

    PRIV_KEY_FILE = パス/rsa_key.p8

    作成した秘密キーファイル(つまり、 rsa_key.p8)へのローカルパスを指定します。

    DSN に設定された値は、 SQLSetConnectAttr() 関数を呼び出すことで上書きできます。詳細については、 Snowflake固有の SQLSetConnectAttr 関数の動作 をご参照ください。

    PRIV_KEY_FILE_PWD = <password>

    秘密キーファイルをデコードするパスコードを指定します。

    このパラメーターは、パラメーター PRIV_KEY_FILE も設定されている場合にのみ設定する必要があります。

    DSN に設定された値は、 SQLSetConnectAttr() 関数を呼び出すことで上書きできます。詳細については、 Snowflake固有の SQLSetConnectAttr 関数の動作 をご参照ください。

  6. 設定を保存します。

キーローテーション

Snowflakeは、複数のアクティブキーをサポートして、連続したローテーションを可能にします。内部的に従う有効期限のスケジュールに基づいて、公開キーと秘密キーをローテーションして交換します。

現在、 ALTER USERRSA_PUBLIC_KEY および RSA_PUBLIC_KEY_2 パラメーターを使用して、最大2個の公開キーを1人のユーザーに関連付けることができます。

キーをローテーションするには:

  1. キーペア認証の使用 の手順を完了して:

    • 新しい秘密キーと公開キーのセットを生成します。

    • ユーザーに公開キーを割り当てます。公開キーの値を RSA_PUBLIC_KEY または RSA_PUBLIC_KEY_2 (現在使用されていないキーの値)に設定します。例:

      alter user jsmith set rsa_public_key_2='JERUEHtcve...';
      
  2. Snowflakeに接続するようにコードを更新します。新しい秘密キーを指定します。

    Snowflakeは、接続情報とともに送信された秘密キーに基づいて、認証用の正しいアクティブな公開キーを検証します。

  3. ユーザープロファイルから古い公開キーを削除します。例:

    alter user jsmith unset rsa_public_key;
    

OCSP コネクタまたはドライバーバージョンの確認

Snowflakeは、Snowflakeへの接続の際、 OCSP を使用して証明書チェーンを評価します。ドライバーまたはコネクターのバージョンとその構成により、 OCSP の動作が決まります。ドライバーまたはコネクタのバージョン、それらの構成、および OCSP の動作の詳細については、 OCSP 設定 をご参照ください。

OCSP 応答キャッシュサーバー

注釈

OCSP 応答キャッシュサーバーは現在、Snowflake ODBC ドライバー2.15.0以上でサポートされています。

Snowflakeクライアントは、実際にデータを転送する前に安全な接続を確立する「ハンドシェイク」を使用して、Snowflakeサービスエンドポイントへのすべての接続を開始します。ハンドシェイクの一部として、クライアントはサービスエンドポイントの TLS/SSL 証明書を認証します。証明書の失効ステータスは、 CA (認証機関)の OCSP (オンライン証明書ステータスプロトコル)サーバーの1つにクライアント証明書リクエストを送信することにより確認されます。

OCSP サーバーからの応答が妥当な時間を超えて遅延すると、接続エラーが発生します。次のキャッシュは失効ステータスを保持し、これらの問題の軽減に役立ちます。

  • プロセスの存続期間中保持されるメモリキャッシュ。

  • ファイルキャッシュ。キャッシュディレクトリ(例: ~/.cache/snowflake または ~/.snowsql/ocsp_response_cache)が削除されるまで保持します。

  • Snowflake OCSP 応答キャッシュサーバー。 CA の OCSP サーバーから OCSP 応答を1時間ごとに取得し、24時間保存します。クライアントは、このサーバーキャッシュから特定のSnowflake証明書の検証ステータスを要求できます。

    重要

    サーバーポリシーでほとんどまたはすべての外部 IP アドレスおよびウェブサイトへのアクセスが拒否された場合、通常のサービス操作を許可するには、キャッシュサーバーアドレスを 必ず ホワイトリストに登録する必要があります。キャッシュサーバーのホスト名は ocsp*.snowflakecomputing.com:80 です。

    何らかの理由でキャッシュサーバーを無効化する必要がある場合は、 SF_OCSP_RESPONSE_CACHE_SERVER_ENABLED 環境変数を false に設定します。値は大文字と小文字が区別され、小文字にする 必要がある ことに注意してください。

キャッシュレイヤーに OCSP 応答が含まれていない場合、クライアントは CAの OCSP サーバーから検証ステータスを直接取得しようとします。