内容
業務間データ連携などによく出てくるAWS Transfer Familyに関する入門記事になります。ガバクラ案件をやる前はあまり触ったことがないサービスでしたが、私の中でTransit Gatewayなどと並び良く利用するサービスの一つとなりました。記事は基礎的な内容をサクッと読める内容にまとめました。
Transfer Familyの基礎
まず最初にSFTPサーバについてです。Transfer FamilyはFTPやFTPSなど他のプロトコルにも対応しておりますが、今回はガバクラで良く使いそうなSFTPプロトコルを対象にしています。FTPを暗号化して安全にしたプロトコルですね。
オンプレだとSFTPサーバを自分で立てる必要がありますが、Transfr Familyはこの部分マネージドサービスとして用意してくれます。また、Transfer FamilyとS3は内部通信で繋がっているため、S3をデータの保存先として指定出来るわけです。
ここからは左側のサーバをEC2に置き換えて見ていきます。EC2サーバはどのようにTransfer Familyサーバに接続しているのでしょうか。(もちろんネットワーク的に接続していればオンプレミスのサーバからの接続は可能です。)
Transfer Familyのサーバを作成する際、VPC内部からのアクセスを有効にすると、VPCエンドポイントが作成されます。EC2サーバ(またはオンプレミスのサーバ)はこのVPCエンドポイント経由でTransfer Familyのサーバに接続します。
あとサーバにアクセスする際、必要になるのはアクセスするためのユーザです。色々なユーザ認証の方式がありますが、Transfer Familyサーバの内部にユーザを作成する方法を記載しています。今回のSFTPサーバでは秘密鍵、公開鍵を使用したユーザ認証を行っており、下記の作業を実施しています。
- Transfer Family上でSFTP用のユーザを作成する。
- 秘密鍵と公開鍵のペアを作成する。
- 公開鍵をTransfer Family上に保存する。
- 秘密鍵をEC2上に保存する。
ここまででEC2サーバからTransfer Family経由でS3にアクセスする準備が整いました。EC2サーバからSFTPユーザ名、秘密鍵、VPCエンドポイントのDNS名を指定して接続します。
前頁のスライドをコマンドにすると下記の様になります。EC2サーバから下記のようなsftpコマンドを実行することによってTransfer Family経由でS3にアクセスすることが出来ます。
アクセス制御
機密情報をS3バケットに保存する場合はしっかりとしたアクセス制御を行う必要があります。Transfer Family上にユーザを作成する際、ユーザにIAMロールを紐づけることが可能です。IAMロールでの制限やS3側のバケットポリシーで制限を行うことが可能です。また、今回説明を割愛させて頂きますが、ロジカルディレクトリの機能を使用することで、ユーザ毎に必要なディレクトリを割り当てるといったアクセス制御方法もあります。
暗号化方式
Transifer Familyの暗号化仕様について、以前下記の記事にまとめました。