こんにちは。kobayashiです。
2018年11月26日、Amazon S3と連携したマネージドなSFTPサービスのAWS Transfer for SFTPが発表されました。
今回はこちらのサービスを利用したWinSCPからS3へのアクセス、 及びscope-down policyを利用してユーザーごとのアクセス制限の設定を試してみたいと思います。
手順
①SFTPサーバーの設定
では早速設定していきましょう。
まずはSFTPサーバーの設定を行います。 AWS Transfer for SFTPのサービストップページにアクセスし「Create Server」をクリックします。
設定項目
・DNS configuration:サーバの名前解決の方法 ・Identity provider:認証を行う場所 ・Logging role:CloudWatch Logsに情報を送るためのIAMロール ・Tags:タグの設定
今回は下記の通りデフォルトで設定しています。
・DNS configuration:None ・Identity provider:Service managed ・Logging role:(無し) ・Tags:(無し)
設定が終わったら「Create server」をクリックします。
サーバーは約3分弱で「Online」になり、利用可能になりました。
こちらでSFTPサーバーの設定は完了となります。
②SFTPユーザーの設定
ユーザーを作成する間に、利用するロールを作成しておきましょう。
ロールを使用するサービスでAWS Transfer for SFTPが選択できないため(ブログ作成時)、 とりあえず適当なサービスでロールを作成し、後で信頼関係の編集を行いました。 ポリシーは「AmazonS3FullAccess」をアタッチしてあります。
ロールが作成できたら、編集画面の「信頼関係」タブから信頼関係の編集を行います。 下図のように「Service」の項目を「transfer.amazonaws.com」へ変更します。
では作成したロールを利用してユーザーの作成を行いましょう。 先程作成したSFTPサーバーの設定画面の「Add user」をクリックします。
設定項目 ●User configuration ・Username:SFTPユーザー名 ・Access:S3バケットへのアクセスを提供するロール ・Policy:SFTPユーザーのアクセスを各ユーザーのホームディレクトリに制限するポリシー (scope-down policyと呼ばれる) ・Home directory:ホームディレクトリの設定
●SSH public keys:鍵認証に利用するパブリックキー
●Tags;タグの設定
今回は下記の通り設定しました。 ●User configuration ・Username:xpsftp ・Access:先ほど作成したロール(Amazon S3 Full Access) ・Policy:None ・Home directory:(無し)
●SSH public keys:EC2に利用しているシークレットキーから、ローカルPCのコマンドプロンプトでパブリックキーを取得して利用しました。
●Tags:(無し)
設定が終わったら「Add」をクリックします。
ユーザーが作成されました。
③WinSCPからS3へアクセス
では作成したユーザーでWinSCPからS3へアクセスしてみたいと思います。
下記の通り設定し、「設定」をクリックします。 ・転送プロトコル:SFTP ・ホスト名:SFTPサーバーのエンドポイント ・ポート番号:22 ・ユーザー名:作成したSFTPユーザー名
「認証」をクリックし、接続に利用するシークレットキー(.pem)を指定します。
PuTTY形式に変換するか聞かれるので「OK」をクリックし、任意の保存場所を選択します。
変換されたシークレットキー(.ppk)が保存されましたので、「OK」をクリックします。
自動的に変換したシークレットキーが選択されているので、「OK」をクリックします。
接続設定を保存する場合は「保存」をクリックして下さい。
では、全ての設定が終了しましたので「ログイン」をクリックします。
無事S3に接続ができました。
SFTPユーザーを作成する際にホームディレクトリを設定しなかったので、右ペインにS3バケットの一覧が表示されています。
全てのS3バケットを操作可能です。
④scope-down policyの設定
WinSCPからS3へのアクセスが成功したところで、次はscope-down policyを利用してアクセス制限を行ってみたいと思います。
まずscope-down policyとして使用するポリシーを作成します。
ポリシーの中身は下図の通りです。
使用している以下のポリシー変数は、ポリシーが評価される際にユーザーごと自動的に値がセットされます。
${transfer:HomeBucket}
${transfer:HomeDirectory}
参照される値はSFTPユーザー作成時の「Home directory」に設定した値になります。
これにより、ユーザーごとにポリシーを作る必要が無くなるので非常に便利ですね。
では、作成したポリシーを設定したいと思います。
Home directoryに指定するS3バケットを作成し、
SFTPユーザーの設定変更を行います。
S3バケットは下図の通り作成しました。
ディレクトリは「Bob」「Olivia」「Simon」の3つです。
次にSFTPユーザー設定を変更します。
変更点は下記の通りです。
・Policy:Select a policy from IAM(先程作成したポリシーを選択)
・Home directory:S3バケットとディレクトリの指定(今回はOlivia)
設定した項目はユーザー画面から確認できます。
ではWinSCPからアクセスしてみましょう。
無事Home directoryに設定してある「Olivia」が表示されました。
制限がかかっているS3バケットやディレクトリを表示しようとすると下図の通り表示できないので、アクセス制限も上手くいっているようです。
おわりに
いかがでしたでしょうか。
ご覧いただいた通り、非常に簡単に設定できますので、ご興味がある方は是非お試し下さい。
自動でRoute53 の登録を行える機能やログの出力なども追々試してみたいですね。
ご覧いただきありがとうございました!