Fivetran のデータベースへの接続オプションとして SSHトンネルを指定してみた #Fivetran

2024.04.08

はじめに

Fivetran では、ソースまたはターゲットのデータベースポートに直接アクセスできない場合に、SSH トンネル経由で接続するオプションを提供しています。
本記事では、踏み台サーバー経由で接続可能なデータベース(Amazon RDS for PostgreSQL)を用意し、こちらを Fivetran の ソースとして設定してみました。
まや、Destination 側に SSH トンネル経由で接続する際の手順については、以下の記事で紹介しています。

検証環境

  • SSH サーバー
    • OS:Amazon Linux 2023
    • インスタンスタイプ:t2.micro
    • ローカルポートフォワーディングによる SSH トンネルを設定する際に使用する中間のサーバー
    • ローカルから SSH 接続可能
    • 後述する手順で Fivetran 側からの SSH アクセスを許可
  • Source
    • Amazon RDS for PostgreSQL:16.1-R2
    • インスタンスクラス:db.t3.micro
    • プライベートネットサブネットに構築し、踏み台サーバーからのアクセスを許可
    • Fivetran 用のユーザー、Snowflake に連携するサンプルテーブルは作成済み
  • Destination:Snowflake
    • 以下の記事と同様の手順でユーザー、ロール、ロード先のデータベース・スキーマを作成しました

設定手順

SSH トンネルによるアクセス時の SSH サーバーのセットアップ手順は Fivetran 側のドキュメントに記載があるので、こちらの手順に沿って進めます。

SSH ユーザーの作成

SSH サーバーにローカルから接続し、以下のコマンドを実行しておきます。

#グループを作成
sudo groupadd fivetran
#ユーザーを作成
sudo useradd -m -g fivetran fivetran
#ユーザーに切り替え
sudo su - fivetran
#.ssh ディレクトリを作成
mkdir ~/.ssh
#権限設定
chmod 700 ~/.ssh
#作成したディレクトリに移動
cd ~/.ssh
#ファイルを作成
touch authorized_keys
#ファイルの権限を設定
chmod 600 authorized_keys

ポートアクセスの許可

Fivetran 側のデータベース設定ページにて、Fivetran の IP アドレスのリストが表示されるので、セキュリティグループでインバウンド通信を許可しておきます。
Fivetran IP Addresses | Fivetran

Fivetran 側:コネクタの追加

Fivetran でコネクタを追加します。 データベースに接続するための各種情報を入力します。

ポイントとして、接続方法に「Connect via an SSH tunnel」を指定します。

すると、下図のセットアップ画面が追加表示されます。

ここで、SSH サーバーのホスト名/IP アドレス、ポート番号(22)、上記手順で作成したSSH サーバーのユーザー名(fivetran)を指定します。「Public Key」欄に公開鍵が生成されるので、この内容を先ほど手順で作成した「authorized_keys」に追加します。

vi authorized_keys

以降で、データの同期方法を指定します。ここでは Fivetran Teleport Sync を指定しました。

その後「Save & Test」より接続テストを行います。
接続テスト時、ここでは、下図の通り Fivetran がサーバーのホストキーの指紋(fingerprint)を取得したことが通知されましたので、確認し [Confirm] をクリックします。
サーバーのホストキーは/etc/sshディレクトリに格納されています。

問題なければ下図の表示となります。

初期同期後、Snowflake 側で確認すると、テーブルが作成されていることを確認できます。

さいごに

データベースがプライベートサブネットに構築されており、直接アクセスできない場面が多いかと思いますので、その際はこちらのオプションが選択肢になり得ます。
こちらの内容が何かの参考になれば幸いです。