Transfer for SFTPを使ってみよう~scope-down policyでのアクセス制限~WinSCPからS3

こんにちは。kobayashiです。

2018年11月26日、Amazon S3と連携したマネージドなSFTPサービスのAWS Transfer for SFTPが発表されました。

今回はこちらのサービスを利用したWinSCPからS3へのアクセス、
及びscope-down policyを利用してユーザーごとのアクセス制限の設定を試してみたいと思います。

 

手順

①SFTPサーバーの設定

では早速設定していきましょう。

まずはSFTPサーバーの設定を行います。
AWS Transfer for SFTPのサービストップページにアクセスし「Create Server」をクリックします。

 

SFTPサーバーの設定

 

設定項目

DNS configuration:サーバの名前解決の方法
・Identity provider:認証を行う場所
・Logging role:CloudWatch Logsに情報を送るためのIAMロール
・Tags:タグの設定

今回は下記の通りデフォルトで設定しています。

DNS configuration:None
・Identity provider:Service managed
・Logging role:(無し)
・Tags:(無し)

設定が終わったら「Create server」をクリックします。

 

「Create server」をクリック

 

サーバーは約3分弱で「Online」になり、利用可能になりました。

こちらでSFTPサーバーの設定は完了となります。

 

SFTPサーバーの設定は完了

 

②SFTPユーザーの設定

ユーザーを作成する間に、利用するロールを作成しておきましょう。

ロールを使用するサービスでAWS Transfer for SFTPが選択できないため(ブログ作成時)、
とりあえず適当なサービスでロールを作成し、後で信頼関係の編集を行いました。
ポリシーは「AmazonS3FullAccess」をアタッチしてあります。

ロールが作成できたら、編集画面の「信頼関係」タブから信頼関係の編集を行います。
下図のように「Service」の項目を「transfer.amazonaws.com」へ変更します。

 

transfer.amazonaws.comへ変更

 

では作成したロールを利用してユーザーの作成を行いましょう。
先程作成したSFTPサーバーの設定画面の「Add  user」をクリックします。

 

SFTPサーバーの設定画面width=

 

 

設定項目
●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 user

 

設定が終わったら「Add」をクリックします。

 

Transfer for SFTP

 

ユーザーが作成されました。

 

Transfer for SFTP

 

WinSCPからS3へアクセス

では作成したユーザーでWinSCPからS3へアクセスしてみたいと思います。

下記の通り設定し、「設定」をクリックします。
・転送プロトコル:SFTP
・ホスト名:SFTPサーバーのエンドポイント
・ポート番号:22
・ユーザー名:作成したSFTPユーザー名

 

WinSCPからS3へアクセス

 

「認証」をクリックし、接続に利用するシークレットキー(.pem)を指定します。

 

WinSCPからS3へアクセス

 

PuTTY形式に変換するか聞かれるので「OK」をクリックし、任意の保存場所を選択します。

 

WinSCPからS3へアクセス

 

変換されたシークレットキー(.ppk)が保存されましたので、「OK」をクリックします。

 

WinSCPからS3へアクセス

 

自動的に変換したシークレットキーが選択されているので、「OK」をクリックします。

 

WinSCPからS3へアクセス

 

接続設定を保存する場合は「保存」をクリックして下さい。

では、全ての設定が終了しましたので「ログイン」をクリックします。

 

WinSCPからS3へアクセス ログイン

 

無事S3に接続ができました。

 

SFTPユーザーを作成する際にホームディレクトリを設定しなかったので、右ペインにS3バケットの一覧が表示されています。

全てのS3バケットを操作可能です。

 

WinSCPからS3へアクセス

 

④scope-down policyの設定

WinSCPからS3へのアクセスが成功したところで、次はscope-down policyを利用してアクセス制限を行ってみたいと思います。

まずscope-down policyとして使用するポリシーを作成します。

ポリシーの中身は下図の通りです。

 

scope-down policy

 

使用している以下のポリシー変数は、ポリシーが評価される際にユーザーごと自動的に値がセットされます。

${transfer:HomeBucket}

${transfer:HomeDirectory}

 

参照される値はSFTPユーザー作成時の「Home directory」に設定した値になります。

これにより、ユーザーごとにポリシーを作る必要が無くなるので非常に便利ですね。

 

では、作成したポリシーを設定したいと思います。

Home directoryに指定するS3バケットを作成し、
SFTPユーザーの設定変更を行います。

 

S3バケットは下図の通り作成しました。
ディレクトリは「Bob」「Olivia」「Simon」の3つです。

 

S3バケット 作成

 

次にSFTPユーザー設定を変更します。

 

変更点は下記の通りです。

・Policy:Select a policy from IAM(先程作成したポリシーを選択)

・Home directory:S3バケットディレクトリの指定(今回はOlivia)

 

S3バケットとディレクトリの指定

設定した項目はユーザー画面から確認できます。

ユーザー画面から確認

 

ではWinSCPからアクセスしてみましょう。

 

無事Home directoryに設定してある「Olivia」が表示されました。

scope-down policyを利用してアクセス制限

制限がかかっているS3バケットディレクトリを表示しようとすると下図の通り表示できないので、アクセス制限も上手くいっているようです。

scope-down policyを利用してアクセス制限

 

おわりに

いかがでしたでしょうか。

ご覧いただいた通り、非常に簡単に設定できますので、ご興味がある方は是非お試し下さい。

自動でRoute53 の登録を行える機能やログの出力なども追々試してみたいですね。

ご覧いただきありがとうございました!

 

 

 

このブログの著者

 

 

AWS相談会