CData API Server は、ローカルのRDB やファイルから本格的なREST API をノーコードで公開できるAPI 開発・運用基盤です。この記事では、CData API Serverの機能でも若干特殊ながら、とても重要な機能である「Cloud Gateway」を解説します。

API Server は、インストール型のソフトウェアであり、通常Web サーバーでホスティングしてAPI 公開を行います。API にインターネット経由でアクセスさせる場合には、クラウドにホストするか、オンプレミスの場合にはDMZ などの配置する必要があります。Cloud Gateway は、クラウド上のSSH サーバーからリバースSSH ポートフォワーディングを利用することで、オンプレミスのFirewall 内のAPI Server をセキュアにインターネットに公開する機能です。ヘルプドキュメントはこちらです。

API Server がSSH Server と接続を確立した状態で、SSH Server がHTTP/Sリクエストをポートフォワーディングすることにより、API Serverをインターネットアクセスを可能にします。これにより、ファイアウォールの変更、DMZへの配置、固定IPアドレス・ドメインといった要素をAWSなどのクラウドサービス側に寄せることができ、セキュアにオンプレミスに存在するRDBや基幹システムをクラウド上で扱えます。

今回はこの機能をAWS EC2・Amazon Linux インスタンスで構成する方法を紹介したいと思います。なお、SSHサーバーはお好みのマシンで構いません。

SSH サーバーとなるEC2 インスタンスを構築・設定

まずはゲートウェイの役割を担うSSH ServerをAWS EC2で構成したいと思います。EC2の場合、SSHがデフォルトで接続できる状態なので、あまり小難しい準備は必要ありません。必要なポートはSSHと最終的にAPI Serverを公開するポートです。今回は API Serverのデフォルトポートである「8783」を選択しました。

環境が構成できたら、EC2の設定を調整します。EC2 Instance ConnectでSSHアクセスし、「sshd_config」に「GatewayPorts yes」を追加してください。デフォルトではコメントアウト状態で「#GatewayPorts no」になっています。
sudo vi /etc/ssh/sshd_config

オンプレミス環境にCData API Server を設定する

CData API Server をダウンロードしてインストールします。設定の「接続」から使用するRDB に接続します。接続後設定の「リソース」から公開するRDB 内のテーブルやビューを選択します。

API Server のCloud Gateway の設定

タスクメニューのAPI Serverアイコンを右クリックして「Server Options」を選択します。

Server Options画面の「Cloud Gateway」タブから設定を行うことができます。 「Enable Cloud Gateway」にチェックを入れて、EC2に接続するために必要な情報を入力します。設定が終わったらテスト接続を押して接続を確認します。「Successfully established an outgoing SSH connection.」のメッセージが出れば成功です。

「Service」タブに戻り「Run as a Windows Service」のチェックボックスをOFFにして、「Save Changes」をクリックします。クリック後、API Serverの再起動が始まるので、正常に起動すればOKです。

EC2 からAPI Server へのポートフォワーディングでAPI Server にアクセス

EC2 のホストアドレスにポート番号である8783 を付与してCloud Gateway 経由でAPI Server にアクセスできるようになります。API Server の設定の「サーバー」画面で、Base URL の変更を行います。こちらをSSH Server であるAWS EX2 のBaseURL にします。

これでオンプレミスのAPI Server に外部インターネットからアクセスすることが可能になりました。このように簡単にFirewall 内のRDB に対してセキュアにREST API エンドポイントを開設できました。