使用 Amazon EFS 访问点 - Amazon Elastic File System
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

使用 Amazon EFS 访问点

Amazon EFS 访问点 是 EFS 文件系统中特定于应用程序的入口点,便于轻松地管理应用程序对共享数据集的访问。访问点可以为通过访问点发出的所有文件系统请求强制执行用户身份(包括用户的 POSIX 组)。访问点还可以为文件系统强制执行不同的根目录,以便客户端只能访问指定目录或其子目录中的数据。

您可以使用 AWS Identity and Access Management (IAM) 策略强制特定应用程序使用特定的访问点。通过将 IAM 策略与访问点相结合,您可以轻松地为您的应用程序提供对特定数据集的安全访问。

有关创建访问点的更多信息,请参阅创建和删除接入点

创建访问点

您可以使用 AWS 管理控制台、AWS Command Line Interface (AWS CLI) 和 EFS API 为现有 Amazon EFS 文件系统创建访问点。

有关如何创建访问点的说明,请参阅创建和删除接入点

使用访问点挂载文件系统

使用访问点挂载文件系统时,您可以使用 EFS 挂载帮助程序。在挂载命令中,包括文件系统 ID、访问点 ID 和 tls 挂载选项,如以下示例所示。

$ mount -t efs -o tls,accesspoint=fsap-12345678 fs-12345678: /localmountpoint

有关使用访问点挂载文件系统的更多信息,请参阅安装在EFS接入点上

使用访问点强制执行用户身份

您可以使用访问点为通过访问点发出的所有文件系统请求强制执行用户和组信息。要启用此功能,您需要指定在创建访问点时要强制执行的操作系统身份。

其中,您将提供以下内容:

  • 用户 ID – 用户的数字 POSIX 用户 ID。

  • 组 ID – 用户的数字 POSIX 组 ID。

  • 辅助组 ID – 可选的辅助组 ID 列表。

启用用户强制执行后,Amazon EFS 将 NFS 客户端的用户和组 ID 替换为在访问点上所有文件系统操作配置的身份。用户强制执行还将执行以下操作:

  • 新文件和目录的所有者和组设置为访问点的用户 ID 和组 ID。

  • EFS 在评估文件系统权限时会考虑访问点的用户 ID、组 ID 和辅助组 ID。EFS 将忽略 NFS 客户端的 ID。

重要

强制执行用户身份受 ClientRootAccess IAM 权限的约束。

例如,在某些情况下,您可能会将访问点用户 ID 和/或组 ID 配置为根 ID(即,将 UID 和/或 GID 设置为 0)。在此类情况下,您必须向 NFS 客户端授予 ClientRootAccess IAM 权限。

使用访问点强制执行根目录

您可以使用访问点覆盖文件系统的根目录。在强制执行根目录时,使用访问点的 NFS 客户端使用在访问点上配置的根目录,而不是文件系统的根目录。

您可以通过在创建访问点时设置访问点 Path 属性来启用此功能。Path 属性是通过此访问点发出的所有文件系统请求的文件系统根目录的完整路径。完整路径的长度不能超过 100 个字符。它最多可包含四个子目录。

在访问点上指定根目录时,该目录将成为挂载该访问点的 NFS 客户端的文件系统的根目录。例如,假设您的接入点的根目录是 /data...在这种情况下,安装 fs-12345678:/ 使用接入点与安装相同 fs-12345678:/data 不使用接入点。

在您的访问点中指定根目录时,请确保配置目录权限,使得接入点用户能够成功装载文件系统。具体而言,请确保为接入点用户或组或者为所有人设置了执行位。例如,目录权限值 755 允许目录用户拥有者列出文件、创建文件和装载目录,并允许所有其他用户列出文件和装载目录。

为访问点创建根目录

如果文件系统上没有访问点的根目录路径,则 Amazon EFS 会自动创建具有可配置的所有权和权限的根目录。利用此方法,可以为特定用户或应用程序预置文件系统访问权限,而无需从 Linux 主机挂载文件系统。在创建访问点时,可以使用以下属性配置根目录所有权和权限:

  • OwnerUid – 要用作根目录拥有者的数字 POSIX 用户 ID。

  • OwnerGiD – 要用作根目录拥有者组的数字 POSIX 组 ID。

  • 权限 – 目录的 Unix 模式。一个常见配置是 755。确保为接入点用户设置了执行位,使得他们能够执行装载操作。此配置向目录拥有者授予在目录中输入、列出和写入新文件的权限。它向所有其他用户授予输入和列出文件的权限。有关使用 Unix 文件和目录模式的更多信息,请参阅使用网络文件系统 (NFS) 级的用户、组和权限

在使用访问点挂载文件系统时,会创建访问点的根目录(如果它不存在)。如果在访问点上配置的根目录在挂载时间之前已存在,则访问点不会覆盖现有权限。如果删除根目录,则 EFS 将在下次使用访问点挂载文件系统时重新创建该目录。

访问点根目录的安全模型

当根目录覆盖生效时,Amazon EFS 的行为类似于启用了 no_subtree_check 选项的 Linux NFS 服务器。

在 NFS 协议中,服务器生成文件句柄,客户端将这些句柄用作访问文件时的唯一引用。EFS 可以安全地生成不可预测且特定于 EFS 文件系统的文件句柄。当根目录覆盖就位时,EFS 将不会在指定根目录之外泄露文件的文件句柄。但是,在某些情况下,用户可能会通过使用带外机制来获取访问点之外的文件的文件句柄。例如,如果他们有权访问第二个访问点,则他们可能会这样做。如果他们这样做,则可对文件执行读取和写入操作。

对于访问用户的访问点根目录内外的文件,始终强制执行文件所有权和访问权限。

在 IAM 策略中使用访问点

您可以使用 IAM 策略强制规定:由其 IAM 角色标识的特定 NFS 客户端只能访问特定访问点。为此,您可以使用 elasticfilesystem:AccessPointArn IAM 条件键。AccessPointArn 是挂载文件系统的访问点的 Amazon 资源名称 (ARN)。

以下是允许IAM角色的文件系统策略示例 app1 使用接入点访问文件系统 fsap-01234567...政策还允许 app2 使用接入点使用文件系统 fsap-89abcdef.

{ "Version": "2012-10-17", "Id": "MyFileSystemPolicy", "Statement": [ { "Sid": "App1Access", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/app1" }, "Action": [ "elasticfilesystem:ClientMount", "elasticfilesystem:ClientWrite" ], "Condition": { "StringEquals": { "elasticfilesystem:AccessPointArn" : "arn:aws:elasticfilesystem:us-east-1:222233334444:access-point/fsap-01234567" } } }, { "Sid": "App2Access", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/app2" }, "Action": [ "elasticfilesystem:ClientMount", "elasticfilesystem:ClientWrite" ], "Condition": { "StringEquals": { "elasticfilesystem:AccessPointArn" : "arn:aws:elasticfilesystem:us-east-1:222233334444:access-point/fsap-89abcdef" } } } ] }