使用 Amazon EFS 接入点 - Amazon Elastic File System

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

使用 Amazon EFS 接入点

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

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

注意

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

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

创建接入点

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

有关创建接入点的 step-by-step 步骤,请参阅创建接入点

使用接入点挂载文件系统

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

$ mount -t efs -o tls,iam,accesspoint=fsap-abcdef0123456789a fs-abc0123def456789a: /localmountpoint

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

使用接入点强制执行用户身份

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

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

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

  • 群组 ID — 用户的数字POSIX群组 ID。

  • 次要组 IDs-次要组的可选列表IDs。

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

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

  • EFS在评估文件系统权限时,会考虑接入点IDs的用户 ID、组 ID 和辅助组。EFS忽略NFS客户的。IDs

重要

强制使用用户身份须视ClientRootAccessIAM权限而定。

例如,在某些情况下,您可以将接入点用户 ID、组 ID 或两者都配置为 root(也就是说,将UIDGID、或两者都设置为 0)。在这种情况下,您必须向NFS客户端授予ClientRootAccessIAM权限。

使用接入点强制执行根目录

您可以使用访问点覆盖文件系统的根目录。强制使用根目录时,使用接入点的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所有者” 和 “权限” GID 时,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:AccessPointArnIAM条件键。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" } } } ] }