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

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

使用 Amazon EFS 访问点

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

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

注意

您需要在 EFS 文件系统上创建至少一个挂载目标才能使用接入点。

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

创建访问点

您可以使用以下方法为现有 Amazon EFS 文件系统创建访问点Amazon Web Services Management Console,Amazon Command Line Interface(Amazon CLI)和 EFS API。Amazon EFS 文件系统可以有最多 120 个接入点. 创建现有接入点后,您无法对其进行修改。

适用于 step-by-step 创建访问点的过程,请参阅创建和删除接入点.

使用访问点挂载文件系统

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

$ mount -t efs -o tls,iam,accesspoint=fsap-abcdef0123456789a fs-abc0123def456789a: /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 会自动创建具有指定的所有权和权限的根目录。如果您在创建时未指定目录所有权和权限,Amazon EFS 将不会创建根目录。利用此方法,可以为特定用户或应用程序预置文件系统访问权限,而无需从 Linux 主机挂载文件系统。要创建根目录,您必须在创建访问点时使用以下属性配置根目录所有权和权限:

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

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

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

Amazon EFS 仅在以下情况下才会创建接入点根目录 OwnUid为该目录指定了、OwnGID 和权限。如果您不提供此信息,Amazon EFS 不会创建根目录。如果根目录不存在,则使用接入点进行挂载的尝试将失败。

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

注意

如果您没有指定访问点根目录的所有权和权限,Amazon EFS 不会创建根目录。所有挂载访问点的尝试都将失败。

接入点根目录的安全模型

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

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

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

在 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" } } } ] }