ちょっと話題の記事

[アップデート] AWS Transfer for SFTP で EIP およびセキュリティグループがサポートされました!

AWS Transfer for SFTP で EIP およびセキュリティグループがサポートされるようになりました!
2020.01.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

本日のアップデートで AWS Transfer for SFTP にセキュリティグループと EIP を設定できるようになりました!

なにが嬉しいのか

今回のアップデートによって以下のようなことが簡単に設定できるようになりました。

  • パブリックアクセスで特定 IP のみ許可したい
  • AWS Transfer for SFTP の IP を固定化したい

過去に「特定 IP の許可」や、「接続先 IP アドレスの固定化」について、NLB や NACL を利用して実装する方法をご紹介しました。

今回、EIP および、セキュリティグループのサポートによって以下のように、よりシンプルに実装できるようになります。

さっそく試してみる

事前準備

今回は事前に以下の環境を準備しておきました。

  • EIP
    • 今回はマルチ AZ 構成のため 2 つ
  • パブリックサブネット
  • セキュリティグループ
  • Route53(パブリックホストゾーン)
  • S3 バケット
  • IAM ロール
    • 信頼関係に transfer.amazonaws.com を設定したもの

AWS Transfer for SFTP の作成

AWS Transfer for SFTP のダッシュボードを開き、create server をクリックします。EIP、セキュリティグループを使用しますので 「VPC」 を選択します。hostname は事前に作成しておいたパブリックホストゾーン内で指定しておくと作成時に自動でレコード登録してくれるので便利です。Access は 「Internet Facing」 を指定し、作成したい場所の VPC および、サブネットを指定します。

そして、IPv4 Addresses のブルダウンに事前作成しておいた EIP が選択可能になっていますので、それぞれ指定します。

あとはデフォルトのまま create server をクリックして作成します。

status が Online になったら作成完了です。表示されている 2 つの IP アドレスが事前に取得していた EIP です。

接続確認のためユーザー追加が必要ですが、今回の本筋ではないので手順は割愛します(過去のエントリーを参照ください。)

名前解決の確認

dig で名前解決を確認すると、EIP と SFTP サーバーの CNAME が表示されることが確認できます。

$ dig sftp.marumo.classmethod.info

<snip>
;; ANSWER SECTION:
sftp.marumo.classmethod.info. 300 IN    CNAME    s-fbebafaa9734454cb.server.transfer.ap-northeast-1.amazonaws.com.
s-fbebafaa9734454cb.server.transfer.ap-northeast-1.amazonaws.com. 60 IN    A 18.177.174.200
s-fbebafaa9734454cb.server.transfer.ap-northeast-1.amazonaws.com. 60 IN    A 18.176.160.188
<snip>

セキュリティグループ設定

サーバー作成時のメニューではセキュリティグループを指定するような箇所は見当たりませんでした。そのため、サーバー作成直後は VPC デフォルトのセキュリティグループがアタッチされるようです。

VPC デフォルトのセキュリティグループ利用は避けたいので、以下のような特定 IP からの SSH のみを許可したセキュリティグループに変更します。

該当の VPC エンドポイントを選択し、「アクション」 - 「セキュリティグループの管理」 をクリックします。デフォルトセキュリティグループを削除し、先ほどのセキュリティグループを指定して保存します。

接続確認

それでは接続確認してみましょう。

$ sftp -i cm_marumoatsushi.pem sftpuser@sftp.marumo.classmethod.info
Connected to sftpuser@sftp.marumo.classmethod.info.
sftp> ls
home
sftp> pwd
Remote working directory: /cm-sftp-test-bucket
sftp> put test
Uploading test to /cm-sftp-test-bucket/test
test                                                                            100%    0     0.0KB/s   00:00
sftp> ls
home  test

問題なくアクセスできました!

次にセキュリティグループから、許可していたインバウンドルールを削除します。

この状態で再度アクセスしてみると…

$ sftp -i cm_marumoatsushi.pem sftpuser@sftp.marumo.classmethod.info
ssh: connect to host sftp.marumo.classmethod.info port 22: Operation timed out
Connection closed.
Connection closed

想定どおりアクセス出来なくなりましたので、セキュリティグループは有効に動作していることが確認できましたね。

検証は以上です!

さいごに

AWS Transfer for SFTP の相談において「特定 IP のみでパブリックアクセスさせたい」、または「接続先 IP を固定化したい」という内容は少なくありません。従来は NLB や NACL を使って実現する必要がありましたが、今回のアップデートで非常に簡単に実装できることが確認できました!

パブリック環境での AWS Transfer for SFTP 利用のハードルがグッと下がるアップデートですね!

以上!大阪オフィスの丸毛(@marumo1981)でした!