こんにちは。CData Software Japan リードエンジニアの杉本です。
AWSやAzureでPostgreSQL などのRDBを構築している方々の中には、外部からだと踏み台のSSHサーバーを経由しなければ接続できない環境構成をされているところが結構あるのではないでしょうか。
通常であれば、Puttyなどでポートフォワードを構成して、接続しなければいけませんが、CData PostgreSQL Driverだと、Driverの機能を使ってポートフォワードの必要など無くSSHサーバーを経由した接続が実現できます。
今回はこのSSHサーバー経由での接続方法を紹介したいと思います。
なお、PostgreSQL ODBC Driverを例としていますが、この機能はJDBCやADO.NETなどすべてのテクノロジーラインナップで対応しています。
対象の環境について
今回は AWS RDS PostgreSQL を対象のRDBとして、EC2で構成したSSHサーバーを経由して接続を行います。
以下のようなイメージになります。
SSHサーバーには外部から以下のSSHコマンドでRDBにアクセスできるようになっており
ssh -i "key.pem" ec2-user@ec2-X-XXX-XXX-X.ap-northeast-1.compute.amazonaws.com
このSSHサーバーからのみ、Amazon RDS の PostgreSQLにアクセスできます。
接続手順
まず、必要なドライバーをダウンロードしてきましょう。
以下のURLからCData PostgreSQL ODBC Driver 30日間のトライアルが入手できます。
https://www.cdata.com/jp/drivers/postgresql/odbc/
ダウンロード後、Exeファイルを実行し、ダイアログに従ってセットアップを進めます。
https://cdn.cdata.com/help/FPF/jp/odbc/RSBPostgresql_p_UseSSH.htm
セットアップが完了すると、以下のようにODBC DSNの構成画面が表示されるので、接続情報をそれぞれ入力します。
AuthenticationカテゴリのところにはSSHサーバー経由で接続するPostgreSQL RDSの情報
SSHカテゴリのところに、EC2 SSHサーバーの接続情報をそれぞれ入力します。
プロパティ名 | 値 | 備考 |
---|---|---|
Server | 例)database-1.CDataSample.ap-northeast-1.rds.amazonaws.com | Amazon RDS PostgreSQLのエンドポイント |
Port | 5432 | |
User | 例)Postgres | PostgreSQLのユーザー |
Database | 例)Postgres | 接続対象DB名 |
Password | 例)YOUR_PASSWORD | PostgreSQLのユーザーパスワード |
SSH Port | 22 | SSHサーバー接続用ポートを指定 |
SSH Server | 例)ec2-X-XXX-XXX-X.ap-northeast-1.compute.amazonaws.com | SSHサーバーのSSHアドレスを指定 |
SSH User | ec2-user | SSHアクセスユーザーを指定 |
SSH Client Cert | 例)C:\Work\AWS\key.pem | 予めダウンロードしたPEMキーファイルを指定 |
Use SSH | True | SSH接続を利用するのでTrueに設定します。 |
入力後、接続テストをクリックして、以下のように成功しましたと表示されればOKです。
テーブルタブで実際にAmazon RDS PostgreSQLに接続して、情報が読み取れているかを確認できます。
おわりに
このような形でCData のPostgreSQL Driverでは、オープンソース側で対応していないような機能にも対応していたりします。
もしその他気になる点があれば、テクニカルサポートまでお気軽にお問い合わせください。