Amazon Web Services ブログ

SFTP サーバーから AWS への移行をリフトアンドシフトする



さまざまな業界および地理的な場所にまたがる組織は、重要なビジネスワークフローの一部としてデータを交換しています。多くの場合、ファイル転送インフラストラクチャと高い資本支出を管理する運用上の負担により、IT 予算が浪費されます。さらに重要なことは、この負担により予算を付加価値のあるプロジェクトに振り分けてビジネスを差別化するのが難しくなってしまいます。 これらの課題に対処し、データをロック解除して重要な洞察を引き出すために、AWS Transfer for SFTP (AWS SFTP) がローンチされました。AWS SFTP では、お客様は既存のファイル転送インフラストラクチャを、クラウドストレージを基盤とする完全マネージド型のサービスに移行することができます。このサービスの主な目的の 1 つは、このワークフローの移行によってエンドユーザー (SFTP クライアントユーザー) に混乱が生じないようにすることです。そのため、AWS は「リフトアンドシフト」に役立つ機能を設計しました。これにより、お客様はアプリケーションやアカウント設定を変更せずに同サービスに移行できます。

SFTP クライアントの観点から見ると、サーバーの「アイデンティティ」は、DNS 名、IP アドレス、SSH ホストキーの 3 つの要素で構成されています。この記事では、この移行中に必要なだけ既存のサーバーの ID を持ち込む方法について説明します。

DNS の移植性

最も単純なリフトアンドシフトのシナリオは、単に AWS SFTP サーバーと、新しいサーバーのエンドポイントを指す DNS CNAME エイリアスを作成することです。現在の ISP で、または AWS SFTP コンソールから Amazon Route 53 経由で、CNAME レコードを作成できます。

AWS SFTP サーバーの作成

新しい DNS レコードを公開する前に、新しいサーバーで各ユーザーのアカウントを作成してください。これを実現する方法は、エンドユーザー ID を管理するサービスを利用するか、認証およびアクセス用の独自 (カスタム) の ID プロバイダーを使用するかによって異なります。

資格情報をオンプレミスサーバーからインポートした後、フォルダをセットアップして、既存のホームディレクトリをミラーリングできます。Amazon S3 バケット自体でこれを行うか、AWS SFTP の「HomeDirectoryMappings」機能を使用して、各 SFTP ユーザーの論理ディレクトリ構造を作成できます。どちらしても、ユーザーが SFTP クライアントに接続すると、同じ使い慣れた環境が表示されます。

IP アドレスの移植性

SFTP ユーザーが厳密なホワイトリストとともにファイアウォールの内側にいる場合、DNS の移植性は十分ではない可能性があります。その場合、サーバーに関連付けられている実際の IP アドレスを保持する必要があります。AWS SFTP で Amazon EC2 ネットワーキングの自分の IP アドレスを使用する (BYOIP) 機能により、これが可能です。この機能により、オンプレミスネットワークから AWS アカウントにパブリック IPv4 アドレスを取り込むことができます。アドレスを所有したままですが、AWS はインターネットでアドレスを公開します。

既存の IP アドレスを新しいサーバーにバインドするには、以下のいくつかの手順があります。

1.BYOIP ドキュメントで説明されているように、VPC に IP アドレスをインポートします。高可用性を実現するには、各アベイラビリティーゾーンに 1 つずつ、複数の IP アドレスを使用することをお勧めします。これは、既存のユーザーベースを制約することを考えると、適切な方法であったりなかったりもするでしょう。

2. 必要に応じて、必要なサブネット数で新しい VPC を作成します。さらに、サーバーはインターネットからアクセスできるようになる (「インターネットに接続されている」) ため、VPC にはインターネットゲートウェイがアタッチされている必要があります。さらに、サブネットのルーティングテーブルは、そのインターネットゲートウェイを介して転送する必要があります。

新しい VPC の作成

3. エンドポイントが VPC でホストされているインターネット接続サーバーを作成します。すでにサーバーを作成している場合は、まずサーバーを停止してから、そのエンドポイントタイプを変更することができます。

4. サーバーの作成時に、VPC のデフォルトのセキュリティグループがエンドポイントに自動的に割り当てられます。エンドポイントに関連付けられているセキュリティグループを変更して、エンドポイントにアクセスできるクライアントのソース IP アドレスを追加できます。サーバーに接続できない場合は、セキュリティグループで指定されたルールまたはエンドポイントのサブネット周辺の NACL がクライアントアクセスを許可しているかどうかを確認してください。

注意: AWS SFTP は、標準の SSH ポート (TCP/22) で SFTP 接続をリッスンします。既存のオンプレミスサーバーが別のポートでリッスンし、その動作を維持する必要がある場合は、こちらの指示に従ってください。最終的に、パブリックインターネットとサーバーの VPC エンドポイント間のブリッジとして Network Load Balancer を使用して、リスナーポートを変更する必要があります。

ホストキーの移植性

これで、古い SFTP サーバーの「ID」の 3 つ目と最後の部分、つまり SSH ホストキーに進めます。

SFTP クライアントは通常、最初に接続したときのサーバーのパブリックキーを記憶しています。キーが変更された場合、安全でない接続を示している可能性があるため、クライアントは次の影響について恐ろしい警告を発します。

$ sftp -i wayne-transfer-key1 wayne@my-sftp-server.example.com
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:uRrhorK4Le+WPBS1ihytaHDHerBB+ZQi2Uq4kkuOrlU.
Please contact your system administrator.
Add correct host key in ~/.ssh/known_hosts to get rid of this message.
Offending RSA key in ~/.ssh/known_hosts:145
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
Permission denied (publickey,password,keyboard-interactive).
Couldn't read packet: Connection reset by peer
$

AWS SFTP により、お客様は選択したホストキーを使用して、サーバーを作成または更新できます。(ホストキーを指定しない場合、AWS SFTP はサーバーの作成時にホストキーを作成します)。 ホストキーの更新操作は AWS SFTP コンソールでは行えませんが、API または CLI を介して実行できます。

$ aws transfer update-server --server-id s-9b87ba0ffcee4d158 \
        --host-key file://old-server-host-key
{
    "ServerId": "s-9b87ba0ffcee4d158"
}

注意: RSA キーペアのプライベートな部分は慎重に保護してください。特にホストキーにはそうしてください。ホストキーが侵害された場合、ローテーションはすべてのユーザーを混乱させます。このため、キーファイルをアップロードして検証したらすぐに、キーファイルの一時コピーを削除することをお勧めします。

$ aws transfer describe-server --server-id s-9b87ba0ffcee4d158 \
        --query Server.HostKeyFingerprint
"SHA256:FU8AqSf/Cu/wxT810IZq5DA74uYV4CGBKuGpsSiz4NY="
$ ssh-keygen -l -f old-server-host-key
2048 SHA256:FU8AqSf/Cu/wxT810IZq5DA74uYV4CGBKuGpsSiz4NY
$ rm old-server-host-key

プライベートキーのコピーを安全な場所に保管することをお勧めします。プライベートキー自体は、一度アップロードすると AWS SFTP サービスから取得できなくなります。

古いプライベートキーをインストールすると、リフトアンドシフトが完了します。既存のユーザーは、サーバーがクラウドに移行したことに気づかずに、これまでと同じようにサーバーに接続し続けられます。

$ sftp -i wayne-transfer-key1 wayne@my-sftp-server.example.com
Connected to my-sftp-server.example.com.
sftp>

まとめ

この記事では、SFTP サーバーを AWS に移行する際に、既存のサーバーの ID の多くを引き継ぐ方法を示しました。この ID には、独自のホスト名、サーバーエンドポイント IP アドレス、およびホストキーが含まれます。これらすべてを持ち込めることで、SFTP ユーザーを混乱させることなく、SFTP サーバーをシームレスに移行できます。 ユーザーは SFTP サーバーを AWS に正常に移動したことに気付くことなく、これまでと同じようにファイルに接続してアクセスし続けられます。Amazon S3 でデータを利用できるようになったことで、AWS でこのデータのロックを解除するためのオプションが数多くあり、処理、分析、AI/ML などが行えます。 AWS Transfer for SFTP コンソールにアクセスして、今日からご利用を開始しましょう。ご質問がある方は以下にコメントしてください。このブログ記事をお読みいただき、ありがとうございました。

この記事は、2019 年 5 月 23 日に最初に公開されたブログ記事の更新版です。