Amazon EFS 新增功能 – IAM 身份验证和接入点(一)

阅读数:4 2020 年 1 月 16 日 10:35

Amazon EFS 新增功能 – IAM 身份验证和接入点(一)

在构建或迁移应用程序时,我们经常需要跨多个计算节点共享数据。 许多应用程序都使用文件 API,并且借助 Amazon Elastic File System (EFS) 可以轻松在 AWS 上使用这些应用程序,提供您可以从其他 AWS 服务和本地资源访问的可扩展、完全托管的网络文件系统 (NFS)。

EFS 可按需从零扩展到 PB 级容量,全程无中断,并随着文件的添加和移除自动增长和缩减,无需您预置和管理容量。它为您提供良好的文件系统一致性,覆盖 3 个可用区 EFS 的性能将根据存储的数据量扩展,并且提供了预置所需吞吐量的选项。

去年,EFS 团队的关注重点是优化成本,为此他们推出了 EFS 不频繁访问 (IA) 存储类存储价格相比 EFS 标准存储类最高降低了 92% 。您 可以通过设置生命周期管理策略以将在一定天数内没有访问的文件移动到 EFS IA,从而快速降低成本。

今天我们将推出两个新的功能,以简化访问权限的管理、数据集的共享以及 EFS 文件系统的保护:

  • 适用于 NFS 客户端的 IAM 身份验证和授权,此功能用于识别客户端并使用 IAM 策略来管理客户端特定的权限。
  • EFS 接入点,此功能用于强制使用操作系统用户和组,此外还可选择限制对文件系统中某个目录的访问权限。

**IAM 身份验证和授权的使用
** 在 EFS 控制台中,我可以在创建或更新 EFS 文件系统时设置文件系统策略。这是一个 IAM 资源策略,与 Amazon Simple Storage Service (S3) 存储桶策略类似,可以用于(例如)为所有客户端禁用根访问权限、强制执行只读访问权限或强制执行传输中加密。

基于身份的策略(例如 IAM 用户、组或角色使用的策略)可以覆盖这些默认的权限。这些新功能的底层是 EFS 目前使用安全组的基于网络的访问权限。

Amazon EFS 新增功能 – IAM 身份验证和接入点(一)

我选择了“默认禁用根访问权限”选项,单击设置策略,然后选择 JSON 选项卡。在此处我可以查看根据我的设置生成的策略,也可创建更高级的策略,例如向不同的 AWS 账户或特定的 IAM 角色授予权限。

在 IAM 策略中可以使用以下操作来管理 NFS 客户端的访问权限:

  • ClientMount,此操作将赋予挂载具有只读访问权限的文件系统的权限
  • ClientWrite,此操作将赋予向文件系统写入的权限
  • ClientRootAccess,此操作将以根用户身份访问文件

Amazon EFS 新增功能 – IAM 身份验证和接入点(一)

我检查了策略 JSON。我看到我可以挂载和读取 (ClientMount) 该文件系统,并且可以在该文件系统中写入 (ClientWrite),但由于我选择了禁用根访问权限的选项,我没有 ClientRootAccess 权限。

同样,我可以将策略附加到某个 IAM 用户或角色以赋予特定的权限。例如,我可以创建一个 IAM 角色,并使用如下策略赋予对此文件系统的完全访问权限(包括根访问权限):

Json

复制代码
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"elasticfilesystem:ClientMount",
"elasticfilesystem:ClientWrite",
"elasticfilesystem:ClientRootAccess"
],
"Resource": "arn:aws:elasticfilesystem:us-east-2:123412341234:file-system/fs-d1188b58"
}
]
}

我启动了一个 Amazon Elastic Compute Cloud (EC2) 实例,此实例与该 EFS 文件系统位于同一 Amazon Virtual Private Cloud 中,它使用 Amazon Linux 2 和一个可以连接到该文件系统的安全组。此 EC2 实例使用我刚刚创建的 IAM 角色。

需要使用开源 efs-utils 以连接到使用 IAM 身份验证、传输中加密或同时使用这两种机制的客户端。正常情况下,我会在 Amazon Linux 2 上使用 yum 安装efs-utils,但新版本仍在不断推出,因此我将按照说明利用来自此存储库的源构建软件包。我将在更新的软件包可用时更新本博文。

为了挂载该 EFS 文件系统,我使用了 mount 命令。为了利用传输中加密功能,我添加了 tls 选项。此处我没有使用 IAM 身份验证,因此我在文件系统策略中为“*”委托人指定的权限将适用于此连接。

Bash

复制代码
$ sudo mkdir /mnt/shared
$ sudo mount -t efs -o tls fs-d1188b58 /mnt/shared

我的文件系统策略默认禁用根访问权限,因此我无法以根用户身份创建新文件。

Bash

复制代码
$ sudo touch /mnt/shared/newfile
touch: cannot touch ‘/mnt/shared/newfile’: Permission denied

我现在将使用 IAM 身份验证,将 iam 选项添加到 mount 命令(需要使用 tls 才能让 IAM 身份验证正常工作)。

Bash

复制代码
$ sudo mount -t efs -o iam,tls fs-d1188b58 /mnt/shared

当我使用此挂载选项时,将使用来自我的 EC2 实例配置文件的 IAM 角色以及附加到该角色的权限(包括根权限)进行连接:

Bash

复制代码
$ sudo touch /mnt/shared/newfile
$ ls -la /mnt/shared/newfile
-rw-r--r-- 1 root root 0 Jan 8 09:52 /mnt/shared/newfile

此处我使用该 IAM 角色来获取根访问权限。其他常见的使用案例包括强制执行传输中加密(使用 aws:SecureTransport 条件键)或为需要写入或只读访问权限的客户端创建不同的角色。

EFS IAM 权限检查将通过 AWS CloudTrail 进行记录,以便审计客户端对您的文件系统的访问。例如,当某个客户端挂载一个文件系统时,将在我的 CloudTrail 控制台中显示一个 NewClientConnection 事件。

Amazon EFS 新增功能 – IAM 身份验证和接入点(一)

本文转载自 AWS 技术博客。

原文链接: https://amazonaws-china.com/cn/blogs/china/aws-backup-ec2-instances-efs-single-file-restore-and-cross-region-backup/

评论

发布