ID プロバイダーの使用 - AWS Transfer for SFTP

ID プロバイダーの使用

RESTful インターフェイスに Amazon API Gateway メソッドを提供することで、既存の ID プロバイダーを AWS SFTP に統合できます。AWS SFTP は、このメソッドを呼び出して、SFTP ユーザーを認証します。

RESTful インターフェイスには、Amazon S3 へのアクセスについてユーザーを認証および承認する 1 つのメソッドが含まれている必要があります。API メソッドを設定したら、コンソールまたは AWS SFTP API オペレーションを使用して新しいサーバーを作成する際に、このメソッドを SFTP サーバーにアタッチします。

カスタム ID プロバイダーの使用

API Gateway には、API を作成および提供するための安全な方法が用意されています。API Gateway が提供する HTTPS エンドポイントを使用することで、すべての受信 API 呼び出しが安全に転送されます。API Gateway では、AWS_IAM という名前の認証方法を提供し、AWS が内部的に使用する認証と同じ IAM ベースの認証を付与します。AWS_IAM が有効になっている場合、顧客の API を呼び出す明示的なアクセス権限を持つ発信者のみが API Gateway メソッドに到達できます。AWS SFTP を使用するには、発信者は AWS Identity and Access Management (IAM) を有効にして、AWS SFTP のアクセス権限を持つ IAM ロールを提供して API メソッドを呼び出す必要があります。API Gateway サービスの詳細については、『API Gateway 開発者ガイド』を参照してください。

カスタム認証に API Gateway を使用するには

  1. AWS ウェブサイトから AWS CloudFormation テンプレートをダウンロードします。

    この AWS SFTP AWS CloudFormation テンプレートによって、プロトタイプ AWS Lambda 関数が使用される完全に機能する実装が作成されます。このテンプレートをデプロイすることが、カスタム ID プロバイダーを統合する最も簡単な方法です。

  2. SFTP サーバーの API Gateway 認証方法を設定します。

    テンプレートをロードしてメソッドを作成したら、API Gateway コンソールに移動して、メソッド本体を実装します。

    このメソッドのテンプレートを次の図に示します。この例のメソッドでは Lambda 関数が使用されますが、多数の統合タイプも使用できます。

  3. メソッドをテストして、有効なユーザー認証を正常にできること(および、無効なユーザーを認証しないこと) を確認します。

    次のスクリーンショットは、API Gateway でカスタム認証メソッドのテストに成功した例を示しています。

  4. 以下のように、サーバーを作成し、[Identity provider] タイプで [Custom] を選択します。

  5. 作成したばかりの API Gateway エンドポイントの URL と、サービスにアクセス権限を提供してこの API Gateway を呼び出すために作成された IAM ロールを入力します。

API Gateway では、/servers/serverId/users/username/config のリソースパスを使用して、単一のパスを実装する必要があります。serverId および username は RESTful リソースパスから取得されます。

AWS SFTP がユーザーの代わりにパスワード認証を試行すると、サービスでは Password: ヘッダーフィールドを提供します。Password: ヘッダーが提供されない場合、AWS SFTP がユーザーによる認証の代わりにパブリックキー認証を試行すると想定されています。

このメソッドは常に HTTP ステータス 200 を返すはずです。その他の HTTP ステータスコードは、API へのアクセスエラーを示します。

レスポンス本文は以下の形式の JSON ドキュメントになります。

{ "Role": "IAM role with configured S3 permissions", "PublicKeys": [ "ssh-rsa public-key1", "ssh-rsa public-key2" ], "Policy": "STS Assume role scope down policy", "HomeDirectory": "User's home directory" }

Role フィールドは認証に成功したことを示しています。パスワード認証を行う場合 (すなわち、Password: ヘッダーが提供された場合) は、SSH パブリックキーは省略できます。また、Policy および HomeDirectory フィールドはオプションです。home ディレクトリが指定されていない場合は、AWS SFTP はデフォルトで Amazon S3 バケットのルートアクセスを設定します。指定するロールには HomeDirectory パスへのアクセス権限が含まれている必要があります。ユーザーが存在しないか、このサーバーへのアクセス権限がない場合は、HTTP レスポンス本文は空である必要があります。