AWS Transfer Family SFTP で「固定IP」「接続元IP制限」「パスワード認証」を実現する
はじめに
気がついたら華金の投稿が多くなっている @___nix___ です。
背景
AWS Transfer Familyを使用してSFTPサーバーを構築し、ファイルをS3バケットにアップロードするワークフローを設定することは、多くの企業にとって重要なタスクです。
このTerraform構成は、AWSのさまざまなサービスを組み合わせて、セキュアでスケーラブルなファイル転送ソリューションを提供します。
概要
このプロジェクトは、AWS Transfer Familyを使用してSFTPサーバーを設定し、ファイルをS3バケットにアップロードするためのワークフローを構築します。
アップロードされたファイルはSQSキューを介して管理され、Lambda関数によって処理されます。
SFTPサーバーは、SSHキー認証とパスワード認証の2つの認証方法をサポートしており、ユーザーのニーズに応じて選択できます。
この記事で紹介するポイントはここで、パスワード認証を許可しようとするとフルマネージドでは無くなってしまう為、自前で構築するにはやや面倒な部分を隠蔽できるという点です。
特徴
- SFTPサーバーのIP固定化
- 厳しい接続元の場合、接続先IPを固定化する要件がある
- 接続元IP制限
- 流石にどこからでも接続できてしまうのはリスクがある
- マルチ(鍵+パスワード)認証対応
- クライアントの都合でパスワード認証を求められることがある
アーキテクチャ
リポジトリ
導入
- リポジトリのクローン: このリポジトリをクローンします。
- 変数の設定: terraform.tfvarsファイルを作成し、必要な変数を設定します。
- Terraformの初期化: terraform initを実行してTerraformを初期化します。
- リソースの確認: terraform planを実行して作成されるリソースを確認します。
- インフラのデプロイ: terraform applyを実行してインフラをデプロイします。
終わりに
このTerraform構成は、AWS Transfer Familyを使用したSFTPサーバーの設定を簡素化し、ファイル転送のセキュリティと効率を向上させます。SSHキー認証とパスワード認証の両方をサポートしており、ユーザーのニーズに応じた柔軟な設定が可能です。S3バケット、SQSキュー、Lambda関数を組み合わせることで、ファイルのアップロードと処理を自動化し、運用の効率化を図ります。
【謝辞】
以下の公式ブログのコードを利用させて頂きました。
一言
最初の要件は、メディア変換用としてのSFTPサーバーでした。
ただ、固定費用が意外にお高いのね、と感じた記憶がありますが、マネージドサービスなのでそこも踏まえての金額なので仕方が無いですね。
この記事良かったと少しでも思って頂けたら是非 @___nix___ をフォローしてあげてください。或いは記事に対してリアクションをお願い致します。
Discussion