Query Service個のSSL オプション

セキュリティを強化するために、Adobe Experience Platform Query Serviceでは、クライアントとサーバーの通信を暗号化するためのSSL接続をネイティブでサポートしています。 このドキュメントでは、Query Serviceへのサードパーティクライアント接続で使用可能なSSL オプションと、verify-full SSL パラメーター値を使用して接続する方法について説明します。

前提条件

このドキュメントでは、Experience Platform データで使用するサードパーティのデスクトップクライアントアプリケーションを既にダウンロードしていることを前提としています。 サードパーティクライアントと接続する際にSSL セキュリティを組み込む方法に関する具体的な手順については、それぞれの接続ガイドのドキュメントを参照してください。 サポートされているすべてのQuery Service クライアントの一覧については、​ クライアント接続の概要を参照してください。

使用可能なSSL オプション available-ssl-options

Experience Platformは、データセキュリティのニーズに合わせて、暗号化とキー交換の処理オーバーヘッドのバランスを取るために、さまざまなSSL オプションをサポートしています。

異なるsslmode パラメーター値は、異なるレベルの保護を提供します。 SSL証明書を使用して移動中のデータを暗号化することで、「中間者攻撃」(MITM)攻撃、盗聴、なりすましを防ぐことができます。 次の表に、使用可能な様々なSSL モードとその保護レベルの内訳を示します。

NOTE
必要なデータ保護コンプライアンスのため、SSL値disableはAdobe Experience Platformでサポートされていません。
sslmode
盗聴防止
MITM保護
説明
allow
×
暗号化はすべての通信に必要です。 ネットワークは、正しいサーバーに接続することを信頼されています。
prefer
×
暗号化はすべての通信に必要です。 ネットワークは、正しいサーバーに接続することを信頼されています。
require
×
暗号化はすべての通信に必要です。 ネットワークは、正しいサーバーに接続することを信頼されています。 サーバーSSL証明書の検証は必要ありません。
verify-ca
CA ポリシーに依存します
暗号化はすべての通信に必要です。 データを共有する前に、サーバーの検証が必要です。 これには、PostgreSQL ホームディレクトリにルート証明書を設定する必要があります。 詳細は以下に記載されています
verify-full
暗号化はすべての通信に必要です。 データを共有する前に、サーバーの検証が必要です。 これには、PostgreSQL ホームディレクトリにルート証明書を設定する必要があります。 詳細は以下に記載されています
NOTE
verify-caverify-fullの違いは、ルート証明機関(CA)のポリシーによって異なります。 アプリケーション用のプライベート証明書を発行するために独自のローカル CAを作成した場合、verify-caを使用すると、多くの場合、十分な保護が提供されます。 パブリック CAを使用している場合、verify-caは、他のユーザーがCAに登録した可能性のあるサーバーへの接続を許可します。 verify-fullは、常にパブリック ルート CAと共に使用する必要があります。

Experience Platform データベースへのサードパーティ接続を確立する場合は、少なくともsslmode=requireを使用して、移動中のデータの安全な接続を確保することをお勧めします。 verify-full SSL モードは、ほとんどのセキュリティに敏感な環境で使用することをお勧めします。

サーバー検証用のルート証明書の設定 root-certificate

IMPORTANT
Query Service Interactive Postgres APIの実稼動環境のTLS/SSL証明書は、2024年1月24日(水)に更新されました。
これは年間要件ですが、AdobeのTLS/SSL証明書プロバイダーが証明書の階層を更新したため、この場合、チェーン内のルート証明書も変更されました。 これは、特定のPostgres クライアントで、証明書認証局のリストにルート証明書が欠落している場合に影響を与える可能性があります。 例えば、PSQL CLI クライアントでは、ルート証明書を明示的なファイル ~/postgresql/root.crtに追加する必要がある場合があります。そうしないと、エラーが発生する可能性があります。 たとえば、psql: error: SSL error: certificate verify failed のように設定します。 この問題について詳しくは、公式PostgreSQL ドキュメント ​を参照してください。
追加するルート証明書は、https://cacerts.digicert.com/DigiCertGlobalRootG2.crt.pemからダウンロードできます。

安全な接続を確保するには、接続を行う前に、クライアントとサーバーの両方でSSL使用を設定する必要があります。 SSLがサーバー上でのみ設定されている場合、クライアントは、サーバーに高いセキュリティが必要であることを確認する前に、パスワードなどの機密情報を送信する可能性があります。

既定では、PostgreSQLはサーバー証明書の検証を実行しません。 サーバーのIDを確認し、機密データが(SSL verify-full モードの一部として)送信される前に安全な接続を確保するには、ルート (自己署名)証明書をローカルマシン (root.crt)に配置し、サーバー上のルート証明書で署名されたリーフ証明書を配置する必要があります。

sslmode パラメーターがverify-fullに設定されている場合、libpqは、クライアントに保存されているルート証明書まで証明書チェーンを確認することで、サーバーが信頼できることを検証します。 次に、ホスト名がサーバー証明書に保存されている名前と一致することを確認します。

サーバー証明書の検証を許可するには、1つ以上のルート証明書(root.crt)をホームディレクトリのPostgreSQL ファイルに配置する必要があります。 ファイルパスは~/.postgresql/root.crtに似ています。

サードパーティ Query Service接続で使用するverify-full SSL モードを有効にします instructions

sslmode=requireより厳格なセキュリティ制御が必要な場合は、ハイライトされている手順に従って、verify-full SSL モードを使用してサードパーティクライアントをQuery Serviceに接続できます。

NOTE
SSL証明書を取得するには、多くのオプションがあります。 不正な証明書の傾向が高まっているため、このガイドでは、DigiCertが高保証のTLS/SSL、PKI、IoT、署名ソリューションの信頼できるグローバルプロバイダーであるため、このガイドで使用されています。
  1. 使用可能なDigiCert ルート証明書のリスト に移動します

  2. 使用可能な証明書のリストから「DigiCert Global Root G2」を検索します。

  3. PEMをダウンロードを選択して、ファイルをローカルマシンにダウンロードします。
    ​ ダウンロード PEMがハイライト表示されている利用可能なDigiCert ルート証明書のリスト。

  4. セキュリティ証明書ファイルの名前をroot.crtに変更します。

  5. ファイルをPostgreSQL フォルダーにコピーします。 必要なファイルパスは、オペレーティングシステムによって異なります。 フォルダーがまだ存在しない場合は、フォルダーを作成します。

    • MacOSを使用している場合、パスは/Users/<username>/.postgresqlです
    • Windowsを使用している場合、パスは%appdata%\postgresqlです
TIP
Windows オペレーティングシステム上の%appdata% ファイルの場所を見つけるには、Win + R⊞押して、検索フィールドに%appdata%と入力します。

DigiCert Global Root G2 CRT ファイルがPostgreSQL フォルダーで利用できるようになったら、sslmode=verify-fullまたはsslmode=verify-ca オプションを使用してQuery Serviceに接続できます。

次の手順

このドキュメントを読むことで、サードパーティのクライアントをQuery Serviceに接続するための使用可能なSSL オプションと、移動中のデータを暗号化するためにverify-full SSL オプションを有効にする方法について理解を深めることができます。

まだ実行していない場合は、​ サードパーティクライアントを Query Serviceに接続する方法に関するガイダンスに従ってください。

recommendation-more-help
experience-platform-help-query-service