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

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

使用 Amazon EFS 接入点工作

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

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

注意

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

有关创建接入点的更多信息,请参阅创建接入点

创建接入点

您可以使用 Amazon Web Services Management Console、 Amazon Command Line Interface (Amazon CLI) 和 EFS API 为现有 Amazon EFS 文件系统创建接入点。一个 Amazon EFS 文件系统最多可以有 1 千个接入点。接入点一经创建就无法进行修改。

有关创建接入点的 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) 级别使用用户、组和权限

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

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

注意

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

接入点根目录的安全模型

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

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