OCSP 設定

このトピックでは、 OCSPの概要、Snowflakeでの使用、および OCSP の問題の診断に役立つ情報を提供します。

このトピックの内容:

OCSP の概要

Snowflakeは、オンライン証明書状態プロトコル(OCSP)を使用して最大のセキュリティを提供し、Snowflakeクライアントが HTTPS を介してエンドポイントに接続しようとしたときに証明書が取り消されるかどうかを判断します。

Snowflakeは、 OCSP を使用して、ルート証明機関(CA)がパブリッシュする中間証明書までの信頼チェーン内の各証明書を評価します。各証明書が取り消されないようにすることで、SnowflakeはID確認プロセス中に信頼できるアクターと安全な接続を確立できます。

クライアントまたはドライバーのバージョンとこのページで説明されている構成に応じて、 OCSP をオフにし、 OCSP が証明書が失効したと判断したときに発生するアクションを調整することができます。

フェールオープンまたはフェールクローズの動作

現在、ユーザーは、OCSP のイベント中にSnowflakeクライアントまたはドライバーがどのように応答するかに関して、2つの動作のいずれかを選択できます。

  1. フェールオープン

  2. フェールクローズ

フェールオープン

Snowflakeは、 OCSP CA 応答の評価に関して、デフォルトで フェールオープン アプローチをサポートしています。フェールオープンアプローチには次の特性があります。

  • 失効した証明書を示す応答により、接続に失敗します。

  • 他の証明書エラーまたはステータスを含む応答により、接続が発生しますが、 JSON 形式の関連詳細とともに、 WARNING レベルのログ内のメッセージを示します。

ユーザーは、特定のドライバーまたはコネクタのログを監視して、フェールオープンログイベントの頻度を判断できます。

これらのイベントログを Snowflakeステータスページ と組み合わせて、クライアントアクセスを一時的に制限したり、 フェールクローズ 動作にピボットするなどの最適なアクションを決定できます。

現在、フェールオープンのデフォルトアプローチは、次のクライアントおよびドライバーバージョンに適用されます。

クライアント/ドライバー

バージョン

SnowSQL

v1.1.79以降

Pythonコネクタ

v1.8.0以降

JDBC ドライバー

v3.8.0以降

ODBC ドライバー

v2.19.0以降

SQL Alchemy

Python Connectorをv1.8.0以降にアップグレードする

Spark

Mavenまたは SBT を使用してSparkアプリケーションをビルドする場合は、v2.4.14以降。 JAR ファイルをSparkクラスタに添付する場合は、 . JDBC v3.8.0以降。 . Databricks組み込みのSparkコネクタを使用している場合、DatabricksにSparkコネクタのアップグレードをリクエスト。

Go Driver

v1.2.0以降

Node.js

v1.2.0以降

注釈

Snowflakeは、.NET ドライバーの OCSP チェックをサポートしていません。代わりに、.NET は独自のフレームワークを使用して、 HTTPS 証明書の有効性を確認します。

フェールクローズ

フェールクローズ動作は、 OCSP CA 応答の解釈により制限されます。クライアントまたはドライバーが、何らかの理由で有効な OCSP CA 応答を受信しない場合、接続は失敗します。

この動作は、フェールオープンセクションにリストされているバージョンに基づいたデフォルトではないため、各ドライバーまたはコネクタ内でフェールクローズを手動で構成する必要があります。

フェールクローズ動作を維持するには、対応する ocsp_fail_open パラメーターを false に設定します。

クライアント/ドライバー

設定

SnowSQL

snowsql -o ocsp_fail_open=false

Pythonコネクタ

詳細については、Pythonコネクタドキュメントの フェールオープンまたはフェールクローズモードの選択 をご参照ください。

JDBC ドライバー

詳細については、 JDBC ドライバーのドキュメントの フェールオープンまたはフェールクローズモードの選択 をご参照ください。

ODBC ドライバー

次のいずれかを選択します。 . 接続パラメーターを OCSP_FAIL_OPEN=false . に設定します。環境変数$SIMBAINI を使用して、対応するファイルを見つけます。次に OCSPFailOpen=false を設定

SQL Alchemy

JDBC ドライバーの設定を参照

Spark

Sparkコネクタには ocsp_fail_open パラメーターがありません。 . フェールクローズは、 JDBC ドライバーを使用している場合にのみSparkで保持できます。

Go Driver

次のいずれかを実行します。 . - Configの接続パラメーター OCSPFailOpenocspFailOpenTrue または ocspFailOpenFalse に設定します。例 : . import ( ... sf "github.com/snowflakedb/gosnowflake ... ") . config: &Config{ Account: "xy12345", ...,  OCSPFailOpen: sf.ocspFailOpenFalse, ... } . - 接続文字列の ocspFailOpen 接続パラメーターを true または false に設定します。例: . user:pass@account/db/s?ocspFailOpen=false. 大文字と小文字の違いに注意してください。 . Go接続パラメーターの詳細については、 GoDoc gosnowflakeのドキュメント をご参照ください。

Node.js

グローバルパラメーター ocspFailOpen=false を設定します。詳細については、 Node.jsドライバーの使用 をご参照ください。

従来のクライアントおよびドライバーのバージョン

クライアントまたはドライバーのバージョンがフェールオープンのセクションにリストされているものよりも古い場合、フェールオープンの動作はオプションではありません。したがって、フェールクローズ動作はデフォルトです。

OCSP に関してレガシークライアントおよびドライバーバージョンを使用するSnowflakeデプロイメントには、3つのオプションがあります。

  1. クライアントまたはドライバーを最新バージョンにアップグレードする(最適なオプション)。

  2. フェールクローズ動作を引き続き使用する。

  3. こちら の説明に従って、 OCSP モニタリング(つまり、安全でないモード)をオフにする。

ベストプラクティス

リスクの軽減には、安全な通信を保つための次のベストプラクティスをお勧めします。

  1. AWS PrivateLink を使用し、Snowflakeへのパブリックアクセスをブロックします。

  2. クライアントドライバーが管理されたデスクトップとサーバーでのみ実行できるようにします。

  3. クライアントドライバーログを管理システムに送信するか、Snowflakeにアップロードします。OCSP チェックなしで行われた接続を監視します。

注釈

AWS PrivateLink のサポートには、 Business Critical (またはそれ以上)が必要です。アップグレードについては、 Snowflakeサポート にお問い合わせください。

CA サイトまたは OCSP レスポンダーとの通信の確認

通信がブロックされていないことを確認するには、

ステップ1:証明書の URL を取得する

Snowflakeは、署名済みのSnowflake証明書の OCSP チェックに使用する URL を取得します。

  1. Google Chromeで、Snowflakeウェブインターフェイスにログインします。

  2. ブラウザーウィンドウの右上隅にあるアイコン(「Google Chromeのカスタマイズと制御」)をクリックします。次に、 More Tools » Developer Tools をクリックします。

  3. 開発者ツールフレームが表示されます。フレームで、 Security タブをクリックします。

  4. View certificate ボタンをクリックして、 Details セクションを展開します。

  5. 適切な拡張子が見つかるまで詳細をスクロールして、次の URL を書き留めます。

    オンライン証明書状態プロトコル (例: http://ocsp.netsolssl.com

    例:

    Viewing OCSP URL for certificate in Developer Tools

次に、 URL にアクセスする能力をテストします(ステップ2 を参照)。さまざまなネットワークの問題により、Snowflakeクライアントが URLにアクセスできなくなる可能性があります。たとえば、Snowflakeが使用するサイトへのアクセスをファイアウォールがブロックしている可能性があります。

ステップ2: URL をテストする

オペレーティングシステム固有の手順を完了して、ステップ1で取得した URL (<OSCPのURL>)に到達できるかどうかを確認します。

Windows
  1. 接続の問題が続くホストで PowerShell ウィンドウを開きます。

  2. 次のコマンドを実行します:

    Invoke-WebRequest <ocsp_url>
    

    Invoke-WebRequest コマンドは、 HTTP リクエストをウェブページまたはウェブサービスに送信し、応答を返します。

Linux / macOS
  1. 接続の問題が続くホストでターミナルを開きます。

  2. 次のコマンドを実行します:

    curl -I <ocsp_url>
    

成功すると、コマンドは次のような結果を返します。

HTTP/1.1 200 OK
Server: Apache
X-OCSP-Responder-ID: dwdccaocsp27
Content-Length: 5
Content-Type: application/ocsp-response
Date: Thu, 09 Aug 2018 19:19:20 GMT
Connection: keep-alive

コマンドがエラーを返した場合は、ネットワーク管理者に問題を報告してさらに診断してください。証明書の確認に使用される OCSP ホストを明示的にホワイトリストに登録する必要がある場合があります。

コマンドが 200 以外のステータスコードを返す場合は、 Snowflakeサポート にお問い合わせください。

Snowflakeが使用する CA サイトおよび OCSP レスポンダーホスト(クラウドプラットフォームおよび地域別)

Snowflakeは、OCSP 証明チェックに次のホストを使用します。ホストは、指定されたクラウドプラットフォームの地域に応じて異なる場合があります。

重要

これらは、最も一般的に使用されるホストの例です。各地域(または個々のアカウント)に対して、Snowflakeは異なる CAによってパブリッシュされた証明書を使用する場合があり、その結果、異なるホストと URLsになります。例:

  • US 西部( AWS上)のほとんどのアカウントでは、Snowflakeは現在、Network SolutionsのDigicert署名証明書を使用しています。

  • 他の地域( AWS上)では、Snowflakeは主にAmazon CAからの証明書を使用します。

さらに、Snowflakeは、証明書の有効期限が切れるか、または機能強化が必要になると証明書を変更する場合があり、その結果、ホストおよび URLsは変わります。

アカウントのホストおよび URLs のすべてのリストについては、 Snowflakeサポート にお問い合わせください。

AWS上のSnowflake

ホスト

US 西部

その他の地域

メモ

ocsp.snowflakecomputing.com:80

Snowflakeの OCSP 応答キャッシュサーバー。 AWS PrivateLink が有効な場合、ホスト名は異なります。

*.amazontrust.com:80

*.digicert.com:80

*.netsolssl.com:80

*.ss2.us:80

*.usertrust.com:80

Microsoft Azure上のSnowflake

ホスト

東部 US 2

メモ

ocsp.snowflakecomputing.com:80

Snowflakeの OCSP 応答キャッシュサーバー。

*.digicert.com:80

*.msocsp.com:80

Google Cloud PlatformのSnowflake

ホスト

us-central1

メモ

ocsp.snowflakecomputing.com:80

Snowflakeの OCSP 応答キャッシュサーバー。

ocsp.digicert.com:80

ocsp.pki.goog:80

OCSP 証明チェックにはポート80が必要

Snowflakeとのすべての通信には、ポート443を使用します。ただし、 OCSP 証明チェックはポート80を介して送信されます。ワークステーションがファイアウォールの内側にある場合は、組織のネットワーク管理者がポート443 および 80のトラフィックに対してファイアウォールを開いていることを確認します。

JDBC およびODBC ドライバーは、 CRL の必要なし

CRL (証明書失効リスト)は、特定の CA によって明示的に失効した証明書を指定します。古いバージョンの JDBC および ODBC ドライバーでは、 CRL または OCSP を使用して TLS/SSL 証明書を確認しました。以下のバージョンから、ドライバーはすべての証明書確認に OCSP のみを使用します。

  • JDBC 3.5.0 (またはそれ以上)。

  • ODBC 2.15.0 (またはそれ以上)