加密传输中数据 - Amazon Elastic File System
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

加密传输中数据

您可以使用 Amazon EFS 文件系统加密传输中的数据,而无需修改您的应用程序。

使用 TLS 加密传输中的数据

可以在使用 Amazon EFS 挂载帮助程序挂载文件系统时启用传输层安全性协议(TLS),以便为您的 Amazon EFS 文件系统启用传输中数据加密。有关更多信息,请参阅使用 EFS 挂载帮助程序挂载 EFS 文件系统

在将传输中的数据加密声明为 Amazon EFS 文件系统的挂载选项时,挂载帮助程序会初始化客户端 stunnel 进程。stunnel 是一种开源多用途网络中继。客户端 stunnel 进程侦听本地端口的入站流量,挂载帮助程序将网络文件系统 (NFS) 客户端流量重定向到该本地端口。挂载帮助程序使用 TLS 1.2 版与您的文件系统进行通信。

使用挂载帮助程序挂载 Amazon EFS 文件系统并启用传输中的数据加密
  1. 通过安全 Shell(SSH)访问您的实例的终端,然后使用相应的用户名登录。有关如何完成此操作的更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的使用 SSH 连接到您的 Linux 实例

  2. 运行以下命令以挂载文件系统。

    sudo mount -t efs -o tls fs-12345678:/ /mnt/efs

传输中加密的工作方式

要启用传输中的数据加密,请使用 TLS 连接到 Amazon EFS。我们建议使用 EFS 挂载帮助程序来挂载您的文件系统,因为与使用 NFS mount 挂载相比,它简化了挂载过程。EFS 挂载帮助程序使用适用于 TLS 的 stunnel 来管理此过程。如果未使用挂载帮助程序,您仍然可以启用传输中的数据加密。以下是完成该操作所需的简要步骤:

在不使用 EFS 挂载帮助程序的情况下启用传输中的数据加密
  1. 下载并安装 stunnel,并记下该应用程序侦听的端口。有关执行此操作的说明,请参阅升级 stunnel

  2. 运行 stunnel 以使用 TLS 通过端口 2049 连接到您的 Amazon EFS 文件系统。

  3. 使用 NFS 客户端挂载 localhost:port,其中 port 是在第一步中记下的端口。

由于传输中的数据加密是根据每个连接配置的,因此,每个配置的挂载在实例上运行专用的 stunnel 进程。默认情况下,EFS 挂载帮助程序使用的 stunnel 进程侦听本地端口 20049 和 21049,并通过端口 2049 连接到 Amazon EFS。

注意

默认情况下,在使用带有 TLS 的 Amazon EFS 挂载帮助程序时,该挂载帮助程序会强制执行证书主机名检查。Amazon EFS 挂载帮助程序使用 stunnel 程序提供 TLS 功能。某些版本的 Linux 不包含默认支持这些 TLS 功能的 stunnel 版本。在使用这些 Linux 版本之一时,使用 TLS 挂载 Amazon EFS 文件系统将失败。

安装 amazon-efs-utils 软件包后,要升级系统的 stunnel 版本,请参阅升级 stunnel

有关加密问题,请参阅排除加密故障

在使用传输中的数据加密时,将更改您的 NFS 客户端设置。在检查您主动挂载的文件系统时,将会看到一个文件系统挂载到 127.0.0.1 或 localhost,如以下示例中所示。

$ mount | column -t 127.0.0.1:/ on /home/ec2-user/efs type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=20127,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1)

在使用 TLS 和 Amazon EFS 挂载帮助程序进行挂载时,将重新配置 NFS 客户端以挂载到本地端口。EFS 挂载帮助程序启动一个客户端 stunnel 进程以侦听该本地端口,并且 stunnel 使用 TLS 打开到 EFS 文件系统的加密连接。EFS 挂载帮助程序负责设置和维护该加密连接和关联的配置。

要确定哪个 Amazon EFS 文件系统 ID 对应于哪个本地挂载点,您可以使用以下命令。将 efs-mount-point 替换为挂载文件系统的本地路径。

grep -E "Successfully mounted.*efs-mount-point" /var/log/amazon/efs/mount.log | tail -1

在将挂载帮助程序用于传输中的数据加密时,它还会创建一个名为 amazon-efs-mount-watchdog 的进程。该进程确保每个挂载的 stunnel 进程正在运行,并在卸载 Amazon EFS 文件系统后停止 stunnel。如果 stunnel 进程由于某种原因意外终止,watchdog 进程将重新启动该进程。