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

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

加密传输中数据

Amazon EFS 支持使用传输层安全性协议(TLS)对传输中数据进行加密。在将传输中数据加密声明为 EFS 文件系统的挂载选项时,Amazon EFS 会在挂载文件系统时与您的 EFS 文件系统建立安全的 TLS 连接。所有 NFS 流量都通过此加密连接进行路由。

传输中加密的工作方式

我们建议使用 EFS 挂载帮助程序来挂载您的文件系统,因为与使用 NFS mount 挂载相比,它简化了挂载过程。EFS 挂载帮助程序通过使用 efs-proxy(适用于 efs-utils 版本 2.0.0 及更高版本)或 stunnel(适用于 efs-utils 的早期版本)来管理该进程,从而与 EFS 文件系统建立安全的 TLS 连接。

如果未使用挂载帮助程序,您仍然可以启用传输中的数据加密。请按以下步骤操作。

在不使用挂载帮助程序的情况下对传输中数据进行加密
  1. 下载并安装 stunnel,并记下该应用程序侦听的端口。有关更多信息,请参阅 升级 stunnel

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

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

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

注意

默认情况下,在将 EFS 挂载帮助程序与 TLS 一起使用时,它会强制使用在线证书状态协议(OCSP)和证书主机名检查。EFS 挂载帮助程序使用 stunnel 程序提供 TLS 功能。某些版本的 Linux 不包含默认支持这些 TLS 功能的 stunnel 版本。在使用这些 Linux 版本之一时,使用 TLS 挂载 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 和 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

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