[小ネタ]AWS Transfer for SFTP の認証は成功しているのにセッションが確立されない事象の解決方法

AWS Transfer for SFTP にはログ出力機能があります。ログ出力するために設定する IAM ロールを間違うと AWS Transfer for SFTP に接続失敗することを知りました。IAM ロールの信頼されたエンティティの選択を誤らないようにしましょう。
2020.04.21

こんにちは、岩城です。

小ネタです。

AWS Transfer SFTP(以降、AWS SFTP) で少しハマったところがあったので共有したいと思います。

AWS SFTP について、より詳細に知りたい場合は以下のエントリをご確認ください。

ハマったこと

ハマったことは、本エントリのタイトルにあるとおり「AWS Transfer for SFTP の認証は成功しているのにセッションが確立されない」ことです。 どういことか順を追って説明します。

AWS SFTP は CloudWatch Logs にログを出力することができます。

▲ CloudWatch Logs に出力されたログ例

ログ出力するには適切な IAM ロールが AWS SFTP に設定されている必要があります。
適切な IAM ロールとは、以下を満たしていることを指します。

  • 信頼されたエンティティに AWS SFTP が設定されていること
  • 適切な IAM ポリシーがアタッチされていること

最も重要なポイントが信頼されたエンティティです。今回ロール作成時に誤って EC2 を選択していました。

▲ ロール作成時に信頼されたエンティティの選択ミス

▲ (誤)信頼されたエンティティに EC2 を選択

本来 AWS SFTP を選択するのが正しいです。

▲ (正)信頼されたエンティティに SFTP を選択

これを間違うと WinSCP などのクライアントから AWS SFTP への認証が成功しても、以下のようにセッションが確立されず AWS SFTP への接続が失敗することを知りました。

▲ WinSCP で出力されるメッセージ

ちなみに、信頼されたエンティティが正しく設定されていれば、間違った IAM ポリシーを設定してもログが出力されないだけで AWS SFTP へ接続することができました。

まとめ

ログ出力用の IAM ロールの正誤による AWS SFTP への接続可否のパターンを表にまとめてみました。

# 信頼されたエンティティの正誤 IAM ポリシーの正誤 接続可否
1
2
3
4

公式ドキュメントにもしっかり手順が記載されているので、信頼されたエンティティの指定は間違えないようにしましょう。

サービスリストから [Transfer (転送)] を選択し、[Next: Permissions (次へ: アクセス権限)] を選択します。これにより、AWS Transfer for SFTP と AWS の間で信頼関係が確立されます。

本エントリがどなたかのお役にたてれば幸いです。