JDBC 接続の SSL 構成
多くの JDBC コネクタは一方向 (標準) SSL をサポートしていますが、一部の JDBC コネクタは双方向 SSL をサポートしています。Tableau の使用が明示的にサポートされていない場合は、カスタマイズによって有効にできる可能性があります。両方のタイプに対して SSL を構成する方法はいくつかあり、環境に最も適した方法を使用できます。
注: Tableau Cloud の場合、サーバー証明書が一般的なパブリック ルート CA によって署名されておらず、証明書を埋め込むオプションがないときは、Tableau Bridge を使用できます。これにより、必要に応じて証明書と秘密キーを構成できるようになります。
JDBC ベースのコネクタで通常の (一方向) SSL を使用していて、自己署名証明書や非パブリック認証局 (CA) によって署名された証明書がある場合は、証明書の信頼を構成する必要があります。
Tableau では、次のいずれかの方法を使用して、JDBC 接続に対して一方向 SSL 信頼を構成できます。
一部のコネクタは、ワークブックまたはデータ ストアへの証明書の埋め込みに対応しています。埋め込みが利用可能な場合は、Tableau Desktop を使用して CA 証明書を埋め込むことができます。
埋め込みが利用できない場合は、信頼を構成する別の方法が必要になります。また、この方がすべてのワークブックに証明書を埋め込むよりも簡単に行うことができます。以下に Windows、Mac、Linux プラットフォーム向けの手順を示します。
Tableau Server の既定の信頼ストアの場所:
/opt/tableau/tableau_server/packages/repository.20233.24.0514.1218/jre/lib/security/cacerts
Windows の場合:
CA 証明書や自己署名証明書を Windows ルート CA 信頼ストアにインストールできます。Java ランタイムは、システムのルート信頼ストアで信頼された CA を検索します。中間証明書ストレージは検索されません。
注: ルート CA をインストールしても接続の確立に問題がある場合は、中間証明書が欠落している可能性があります。TLS 標準では、サーバーがルート証明書を除くすべての証明書をチェーンで送信することが要求されますが、すべてのサーバーが準拠しているわけではありません。サーバーが中間証明書を送信しない場合は、中間証明書を正しく転送するようにサーバーを修正するか、ルート信頼ストアに中間証明書をインストールします。または、データ ソースに証明書を埋め込むか、ドライバーのプロパティを使用して信頼ストアを構成することもできます。
- Windows で「証明書」を検索します。
- [コンピューター証明書の管理 ] を選択します。
- [操作] メニューで [すべてのタスク] を選択し、Windows のバージョンに応じて次のいずれかの操作を行います。
- [インポート] を選択してから、[ローカル マシン] を選択する。
- [証明書の検索] を選択する。
- 証明書ファイルを検索します。
- [信頼されたルート証明機関] にインポートします。
Mac の場合:
カスタム証明書を Mac にインストールするには、次の手順に従って "システム" キーチェーンに証明書をインポートします。
注: Mac のキーチェーンから証明書を読み込むと、ほぼすべてのドライバーで動作します。他のドライバーの場合、信頼ストアを構成するために .properties ファイルを使用する必要があることがあります。詳細については、「接続のカスタマイズと微調整」を参照してください。
- https://support.apple.com/guide/keychain-access/add-certificates-to-a-keychain-kyca2431/mac(新しいウィンドウでリンクが開く) に移動します。
- 証明書を ("システム ルート" ではなく) "システム" キーチェーン にインポートします。
- 信頼を次のように有効にします。
- キーチェーンのプリケーションで、新しい証明書を右クリックします。
- [Get Info (情報の取得)] を選択します。
- ダイアログで [信頼] セクションを開き、[When using this certificate always trust (この証明書を使用する場合は常に信頼する)] を選択します。
Linux の場合:
多くの Linux ディストリビューションでは、システム証明書から Java 形式のトラスト ストアが生成されます。このファイルを作成するには、パッケージ マネージャから Java をインストールする必要があります。
これにより、JRE はオペレーティング システムと同じ証明書を使用できます。
注: Tableau Server は、このファイルを次の標準の場所で検索します。/etc/ssl/certs/java/cacerts
/etc/pki/java/cacerts
別の場所を構成するには、次のコマンドを実行します。
tsm configuration set -k native_api.ConnectivityTrustStore -v <path-to-cacerts> --force-keys
このファイルでは、次を実行する必要があります。
- 信頼できるすべての CA 証明書と自己署名証明書を含める。
- 公開キーのみを含める。
- JKS 形式にする。
- Tableau の特権のないユーザー (「実行ユーザー」) が読み取れるようにする。
- 既定の JKS パスワード "changeit" を使用する。
カスタム CA 証明書や自己署名証明書をインストールするには、ディストリビューションのドキュメントを参照してください。適切なコマンドを実行してキー ストアを生成します。例:
update-ca-certificates
.properties ファイルを使用して、JDBC 接続オプション (信頼ストアの場所など) をカスタマイズできます。このプロパティ ファイルは、各接続パラメーターのキーと値のペアを含むプレーンテキスト ファイルです。
たとえば、このプロパティ ファイルの行は、信頼設定を構成するために使用されています。
javax.net.ssl.trustStore=C:\\My_Folder\\truststore.jks
javax.net.ssl.trustStoreType=JKS
javax.net.ssl.trustStorePassword=password
注: 特定のプロパティ設定の詳細については、ドライバーのドキュメントを参照してください。
ファイルを作成して正しい場所に保存すると、ファイル内のプロパティが、同じデータ ソース タイプへのすべての JDBC 接続に適用されます。
汎用の "その他のデータベース (JDBC)" コネクタを使用する場合は、接続ダイアログで .properties ファイルを直接指定できます。
詳細については、「接続のカスタマイズと微調整」(新しいウィンドウでリンクが開く)を参照してください。
JDBC 接続の双方向 SSL
Postgres などの一部の JDBC 接続ついては、双方向 SSL 認証を使用するように構成することもできます。.properties ファイルを使用して、信頼ストアとキーの場所および詳細を指定することにより、この接続を構成できます。
注: Tableau Cloud の場合、双方向 SSL が必要で、キーを埋め込むオプションがコネクタにないときは、Tableau Bridge を使用して、そこで SSL 構成を設定する必要があります。
- キー ストアと証明書ストアの設定を反映するため、.properties ファイルを変更します。例として、以下を使用します。「My_Folder」にはファイルがある場所を指定し、「<password>」には実際のパスワードを入れてください。OSX と Linux 上のパスを分離するには、1 つの「/」 のみが必要です。
javax.net.ssl.trustStore=C:\\My_Folder\\truststore.jks
javax.net.ssl.trustStoreType=JKS
javax.net.ssl.trustStorePassword=<password>
javax.net.ssl.keyStore=C:\\My_Folder\\keystore.jks
javax.net.ssl.keyStoreType=JKS
javax.net.ssl.keyStorePassword=password - Tableau 製品に応じて、.properties ファイルを適切なデータソース フォルダーに保存します。不明な場合は、「接続のカスタマイズと微調整」に記載されている可能なディレクトリの完全なリストを参照してください。
- Tableau Server にパブリッシュする場合は、.properties ファイル、truststore.jks、keystore.jks が各 Tableau Server ノードの適切な場所にインストールされていることを確認してください。
この方法を使用する場合は、SSL ダイアログを介して証明書とキーをアップロードする必要はありません。代わりに、[SSL が必須] をクリックします。これにより、JDBC コネクタは、.properties ファイルからキー ストアと証明書ストアの場所を読み取ります。
トラブルシューティング
SSL の使用に関する問題は、多くの場合、証明書の設定が正しくないことに関連しています。
問題の原因を絞り込むための 1 つの方法は、使用されている証明書とそのインストール場所を確認することです。OpenSSL CLI ツールがインストールされている場合は、s_client
コマンドを使用できます。
openssl s_client -connect hostname:port -showcerts
hostname
と port
に、テストするシステムの正しい値を入力します。このコマンドを実行すると、SSL 接続が試行され、サーバーから送信された証明書が表示されます。
一部のデータベースにはカスタム TLS ハンドシェイクがあり、openssl はそれらのいくつかを直接サポートしています。最新バージョンでは、postgres と mysql です。postgres または mysql と互換姓のあるデータベースに接続しようとしていて、上記のコマンドで問題が発生する場合は、-starttls オプションを使用して、データベースで使用されるプロトコルを有効にしてみてください。例:
openssl s_client -connect hostname:port -showcerts -starttls postgres
OpenSSL でのトラブルシューティングの詳細については、「OpenSSL s_client コマンドを使用して SSL 接続をテストする」(新しいウィンドウでリンクが開く)を参照してください。OpenSSL s_client の完全なドキュメントは「OpenSSL ドキュメント」(新しいウィンドウでリンクが開く)にあります。
関連項目
- Oracle JDBC 接続に SSL を要求する(新しいウィンドウでリンクが開く) - Oracle JDBC 接続に信頼された SSL 証明書を追加するためのインストール手順。
- SSL 接続を使用した Oracle JDBC