ASTERIA WarpからSSHサーバー経由でPostgreSQLに接続する

by 浦邊信太郎 | 2021年06月16日

遠隔のデータベースへの不正アクセスを防ぐために、クライアントとデータベースの間に踏み台サーバーを設置するSSHポートフォワーディング方式が使われています。 データベースは踏み台サーバーからの接続のみを許可し、クライアントから接続する際は必ず踏み台サーバーへのSSH接続を経由することで、アクセス制限や通信の暗号化によるセキュリティの向上が図られます。

今回はデータ連携ツールASTERIA WarpからSSHサーバー経由でPostgreSQLに接続する方法を紹介します。 ASTERIA WarpからPostgreSQLへの接続にはCData PostgreSQL JDBC Driverを利用します。 オープンソースのJDBCドライバでSSHサーバーを経由した接続を行う際には、別途PuTTYなどのSSHクライアントを利用する必要がありますが、CData PostgreSQL JDBC Driverはドライバ自体にSSHポートフォワーディング機能を備えているため、ドライバの設定のみでSSHサーバーを経由した接続が可能です。

CData PostgreSQL JDBC Driverのインストール

CData Software Japan社のCData PostgreSQL JDBC Driverダウンロードページにアクセスしてください。 ダウンロードページの[ダウンロード 評価版]をクリックすると必要事項入力画面が表示されます。

f:id:urabe_shintaro:20210616122906p:plain

必要事項を入力し、[ダウンロード]をクリックするとCData PostgreSQL JDBC Driver評価版のインストーラがダウンロードされます。 ダウンロードしたファイルをダブルクリックするとインストーラが起動しますので、ウィザードに従ってインストールしてください。 途中、ライセンスサーバーへのオンラインアクティベーションが行われるためネットワーク環境に接続されている必要があります。 ライセンスサーバにアクセス出来ないネットワーク環境の場合は、CData Software Japan テクニカルサポートまでお問い合わせください。

JDBCドライバの配置

インストールしたドライバファイルをASTERIA Warpのライブラリフォルダに配置します。 コピー元ファイルとコピー先は以下の通りです。

コピー元ファイル

C:\Program Files\CData\CData JDBC Driver for PostgreSQL 2021J\lib\cdata.jdbc.postgresql.jar

コピー先フォルダ

C:\asteriahome5\system\lib\drivers

コネクションの作成

ASTERIA Warpの画面上でPostgreSQLのコネクションを作成する方法を説明します。

[コネクションの作成]をクリックして[コネクションの作成]ダイアログを開きます。 [接続種別]で「RDB」を選択、[名前]に適当なコネクション名を入力し、[OK]を押下します。

f:id:urabe_shintaro:20210616122946p:plain

作成したコネクションを選択し、以下の通り接続プロパティを設定します。

プロパティ名
データベースタイプ "Other"
ドライバー "cdata.jdbc.PostgreSQL.PostgreSQLDriver"
URL 接続文字列(下記参照)

f:id:urabe_shintaro:20210616123006p:plain

接続文字列の構成

[URL]に設定する接続文字列には、CData PostgreSQL JDBC Driverの接続プロパティで構成された文字列を設定します。 設定が必要な接続プロパティは接続方法により異なります。 ここではパスワード方式と公開鍵認証方式でSSH接続を行う場合の接続文字列をそれぞれ説明します。

パスワード方式によるSSH接続

パスワード方式によるSSH接続時に必要なプロパティ一覧を以下に示します。

プロパティ名
User PostgreSQLのユーザ
Password PostgreSQLのパスワード
Database PostgreSQLの接続先データベース
Server PostgreSQLのサーバ
Port PostgreSQLのポート
UserSSH "true"
SSHPort SSHのポート
SSHServer SSHサーバ
SSHUser SSHユーザ
SSHUser SSHパスワード

接続文字列はjdbc:postgresql:で始まり、上記プロパティを「プロパティ名=値」で指定したものをセミコロンで連結します。 以下にパスワード方式でのSSH接続の接続文字列の例を示します。

jdbc:postgresql:User=admin;Password=adminpassword;Database=test;Server=postgresql-server;Port=5432;UseSSH=true;SSHPort=22;SSHServer=ssh-server;SSHUser=root;SSHPassword=sshpasswd;

公開鍵認証方式によるSSH接続

公開鍵認証によるSSH接続時に必要なプロパティ一覧を以下に示します。

プロパティ名
User PostgreSQLのユーザ
Password PostgreSQLのパスワード
Database PostgreSQLの接続先データベース
Server PostgreSQLのサーバ
Port PostgreSQLのポート
UserSSH "true"
SSHClientCertType キーストアの種類
SSHPort SSHのポート
SSHServer SSHサーバ
SSHUser SSHユーザ
SSHClientCert 秘密鍵ファイルのパス

以下に公開鍵認証方式でのSSH接続の接続文字列の例を示します。

jdbc:PostgreSQL:User=admin;Password=adminpassword;Database=test;Server=PostgreSQL-server;Port=5432;UseSSH=true;SSHClientCertType=PEMKEY_FILE;SSHPort=22;SSHServer=ssh-server;SSHUser=root;SSHClientCert=C:\Keys\key.pem;

上の例ではPEM形式の秘密鍵を指定していますが、キーストアの種類はSSHClientCertTypeプロパティで指定できます。

接続確認

接続プロパティの設定が完了したら接続テストを行ってPostgreSQLへ接続できることを確認してください。

f:id:urabe_shintaro:20210615183710p:plain

おわりに

本記事ではCData PostgreSQL JDBC Driverを利用し、ASTERIA WarpからSSHサーバー経由でPostgreSQLに接続する方法を紹介しました。 CData PostgreSQL JDBC Driverの評価版は30日間無料でお使いいただけます。 ASTERIA WarpとPostgreSQLとの連携をご検討の方はぜひお試しください。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。