AWS Transfer for SFTP の Workshopをやってみた

2023.07.24

はじめに

AWS Transfer Familyを利用する機会があり、今までに触ったことがなかったため、Workshopをやってみました。

AWS Transfer Familyは、Amazon S3 やAmazon EFS に対してファイルを送受信できる転送サービスです。

今回利用したWorkshopは、文章は英語のみですが、Google翻訳すると、違和感なく文章を読み進めることができました。

Workshopを行う前にやること

事前に以下の動画でサービスを把握することをおすすめします。


下記記事は、Transfer Familyの設定項目や構成例を把握できるため、一読ください

Workshopで理解できること

  • AWS Transfer for SFTPサーバーの構築方法が学べます
  • クライアントPCからAWS Transfer for SFTP サーバーへのアクセスでIP制限する方法が学べます
  • 論理ディレクトリを使用して、ユーザーのアクセス制御方法が理解できます。

論理ディレクトリについては、下記の記事が分かりやすいです。

TransferFamilyの論理ディレクトリについて調べてみた
https://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/logical-dir-mappings.html

作成する構成

Workshopでは、下記の構成を作成します。

引用:https://github.com/aws-samples/aws-transfer-sftp-ip-whitelisting-workshop/tree/master

目次

  • モジュール 1
    • リソースを作成する
      • CloudFormationで、AWS Transfer for SFTP サーバー以外のリソースをデプロイします
      • AWS Transfer for SFTP サーバーを手動で作成します
  • モジュール 2
    • ユーザーを作成し、SFTP サーバー経由でS3にファイルをアップロードする
      • クライアントPCからAWS Transfer for SFTP サーバーへのアクセスでIP制限ができることをテストします
  • モジュール 3
    • 論理ディレクトリを使用して、ユーザーのアクセスを制御する
      • 複数のユーザーのアクセスを管理するため、特定のディレクトリに対して、各ユーザーごとにアクセス制限をかけます。さらに、複数のバケットにまたがるフォルダにアクセスできるユーザーを作成します
  • モジュール 4
    • リソース削除
  • オプション モジュール 5
    • VPC ピアリングを使用して内部 IP アクセスを許可する

事前準備

  • SFTPクライアントソフトをインストール
    • 私はFileZillaをインストールしました

各章の注意点やコメント

  • モジュール 1
    • CloudFormationのテンプレートは、東京リージョンが用意されておりませんでした。私はバージニアリージョンを利用しました。
    • ドキュメントには説明がなかった部分が2つありました。
      • セキュリティグループのアタッチが必要でしたので、とりあえずデフォルトセキュリティグループをアタッチしました
      • 追加の詳細を設定は、デフォルトのままです。
    • VPCエンドポイントが自動作成されておりました。SFTP サーバーとの間のすべてのネットワーク トラフィックは、このエンドポイントを経由します。

      • このエンドポイントのセキュリティグループを編集して、SFTP クライアントからのIPを許可します。
  • モジュール 2
    • 下記コマンドでSSH鍵を作成しました
      $ ssh-keygen -P "" -f transfer-key -N ""Enter
      $ cat transfer-key.pub 
      ssh-rsa AAAAB3NzaC1yc
    • FileZillaの場合、以下の設定でファイルをアップロードできました。
  • モジュール 3
    • ユーザーに対してアクセス制限をするには、スクリプトを用意して実行する必要があり、不便に思いました。マネジメントコンソールからできれば便利ですね。
      • Workshopで紹介されたスクリプト自体は使い回せるので、使う機会はありそうだと思います。
    • スクリプトの実行は、CloudShell上で行うのが簡単でおすすめです。

最後に

今回は、AWS Transfer for SFTPのWorkshopをやってみました。

AWS Transfer for SFTPサーバーへのIP制限や論理ディレクトリを使用してユーザーごとのアクセス制御を理解できました。

AWS Transfer Familyで対応しているプロトコルには、FTPやFTPSなどがあり、ユーザーの管理方法も複数あるため、今後色々試してみたいと思います。