亚马逊AWS官方博客

新增功能 – 除了现有的 SFTP 之外,还推出了 AWS Transfer for FTP 和 AWS Transfer for FTPS

AWS Transfer for SFTP 已于 2018 年 11 月 推出,是一项完全托管的服务,可使用安全文件传输协议 (SFTP) 将文件直接传入和传出 Amazon S3。

今天,我们很高兴地宣布扩展此项服务,以增加对 FTPS 和 FTP 的支持,除了现有的 AWS Transfer for SFTP 服务 外,它还可以轻松迁移和安全运行基于 SSL 之上的文件传输协议 (FTPS) 和 AWS 中的 FTP 工作负载。我们支持 Amazon S3 基于 SFTP、FTPS 和 FTP 的传输,我们还推出了“AWS Transfer Family”,它是 AWS Transfer for SFTP、AWS Transfer for FTPS 和 AWS Transfer for FTP 的总称。

一些软件归档和科学研究应用程序使用 FTP 分发软件工件或公共数据集,而 CRM、ERP 和供应链应用程序使用 FTPS 传输敏感数据。他们的许多现有应用程序无法从 FTP 或 FTPS 切换到 SFTP,因为这需要更改现有应用程序和进程,尤其是涉及第三方的应用程序和进程,并且通常不切实际或不可行。客户一直在寻找一种迁移文件传输,而又不会破坏现有集成和最终用户体验的简便、安全的方式。有鉴于此,我们将推出 AWS Transfer for FTPS 和 AWS Transfer for FTP。

SFTP 与 FTPS/FTP 之间的基本差别

在开始演练之前,让我们先谈谈 SFTP 与 FTPS/FTP 之间的差别。这些协议实际上是不同的协议,但是它们的工作方式类似于“文件传输”。

  • 安全文件传输协议 (SFTP) –由互联网工程任务组 (IETF) 定义为 SSH 2.0 的扩展版本,允许通过 SSH 进行文件传输,并与传输层安全性 (TLS) 和 VPN 应用程序结合使用。
  • 文件传输协议 (FTP) – 最初由 RFC114 定义,后来被以 TCP/IP 为基础的 RFC765RFC959 取代。
  • 基于 SSL/TLS 的文件传输协议 (FTPS) – 用于通过 SSL/TLS 加密 FTP 通信。

到目前为止,具有多种协议需求的客户都在使用 SFTP 服务或等待此推出。使用这三种协议中任何一种的客户,通过此推出的协议,可以迁移并利用 AWS 服务,满足其端到端文件传输需求。这些新协议的可用性提高了数据的可访问性,而适用于 SFTP 的相同选项也可用于 FTPS 和 FTP 以确保访问安全。可用的访问控制功能包括使用 IAM 角色和策略、S3 的逻辑目录安全组

演示

本演练提供了创建完全托管的 FTP 服务器的分步指南。FTP 服务器只能在您的 VPC内部访问,包括 AWS Direct Connect 或 VPN。如果需要通过互联网访问,则可以使用 FTPS。

访问 AWS Transfer Family 控制台时,您将看到一个新的 AWS 控制台页面。单击创建服务器开始。

现在有三个协议选择 – SFTPFTPSFTP

在此示例中,让我们通过选择 FTP 开始演练。单击 FTP 复选框,然后取消选中 SFTP 复选框。我们可以同时分配两个协议,但是作为此步骤的新功能,我们会创建一个 FTP 服务器。

单击下一步

现在,我们需要分配一个身份提供者。登录到 FTP 服务器时,身份提供者用于身份验证。FTPS 和 FTP 仅支持 Amazon API Gateway 提供的自定义。为了能够调用 API,我们需要创建一个调用 URL,它是一个 API 网关终端节点,也是一个 IAM 角色。以下是有关如何使用带有 Yaml 模板的 CloudFormation创建调用 URL 的准则。对于仅启用了 SFTP 的服务器,您还可以选择“托管服务”身份验证来存储和管理服务中的身份。

单击下一步,出现“终端节点配置”对话框。

我们只能选择 VPC 作为 FTP 的 VPC 托管终端节点。如果需要互联网访问,出于安全原因,我们需要选择 FTPS 而不是 FTP。然后,我们选择一个适当的 VPC 及其子网来托管终端节点。

单击下一步,出现下一个对话框。下一步为可选项。我们可以通过分配 IAM 角色来启用 CloudWatch 日志记录。以上 CloudFormation 模板创建了一个 IAM 角色,我们可以使用该角色,也可以使用其他角色。

我们跳过“服务器主机密钥”部分,因为此部分针对 SFTP。

分配适当的标签,然后单击下一步。然后,单击创建服务器。FTP 服务器创建完成。

单击服务器 ID,我们将看到 FTP 服务器的详细信息。

现在该测试 FTP 服务器了!

操作中,选择测试。键入“myuser”作为用户名,“MySuperSecretPassword”作为密码

如果您的 FTP 服务器已与身份提供者成功集成,则会返回 HTTP 200 的状态代码。

现在,我们知道您的身份提供者均已正确集成,让我们使用 ftp 客户端进行测试。
我们现在可以使用 FTP 客户端对现有 Amazon S3 存储桶执行 cd/ls/put/get/rm 操作。我们将使用 Amazon EC2 进行本演练。如果上面指定的子网中没有该实例,则创建一个实例,然后安装 lftp 客户端。

sudo yum install lftp

要连接到服务器,我们将需要 FTP 服务器的终端节点 URL。我们需要访问 VPC 终端节点控制台才能获取它。如果您使用的是面向互联网的 SFTP 和/或 FTPS 服务器,则可以直接从 AWS Transfer Family 控制台获取此信息。如果我们从其他子网或其他 VPC 访问终端节点,请确保安全组允许 TCP 端口 21 和端口 8192-8200。

然后,我们可以尝试通过以下命令登录到 FTP 服务器;

lftp -d ftp://{VPC End Point of your FTP Server} -u 'myuser, MySuperSecretPassword'


(单击放大图片)

下一步

用于测试的用户名和密码在 CloudFormation 创建的 Lambda 函数内的源代码中按指示指定。

博客文章“使用 AWS Secrets Manager 为 SFTP 启用 AWS Transfer for SFTP 的密码身份验证”是开始了解有关学习管理身份验证数据的更多信息的一种非常好的方法,该 CloudFormation 模板用于通过 AWS Secrets Manager 创建 API 网关和 Lambda 函数。

结语:

  • 仅支持被动模式。我们的服务不建立出站连接。
  • 仅支持 FTPS 的显式模式。我们的服务不支持隐式模式。
  • 支持重命名文件名,但不支持重命名目录(S3 BucketName),也不支持附加操作

现已推出

当前已推出 AWS Transfer for SFTP 的所有区域,均已推出 AWS Transfer for FTPS 和 AWS Transfer for FTP。通过产品页面文档也可以了解更多信息。您也可以观看此视频以获取演示。

– Kame;