

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

# 在 Amazon EFS 中保护数据
<a name="security-considerations"></a>

云安全 AWS 是重中之重。作为 AWS 客户，您可以受益于专为满足大多数安全敏感型组织的要求而构建的数据中心和网络架构。

安全是双方共同承担 AWS 的责任。[责任共担模式](https://aws.amazon.com/compliance/shared-responsibility-model/)将其描述为云*的*安全性和云*中*的安全性：
+ **云安全** — AWS 负责保护在云中运行 AWS 服务的基础架构 AWS 云。 AWS 还为您提供可以安全使用的服务。作为[AWS 合规计划合规计划合规计划合](https://aws.amazon.com/compliance/programs/)的一部分，第三方审计师定期测试和验证我们安全的有效性。要了解适用于 Amazon Elastic File System 的合规计划，请参阅[按合规计划AWS 提供的范围内的AWS 服务](https://aws.amazon.com/compliance/services-in-scope/)服务。
+ **云端安全**-您的责任由您使用的 AWS 服务决定。您还需要对其他因素负责，包括您的数据的敏感性、您公司的要求以及适用的法律法规。

此文档将帮助您了解如何在使用 Amazon EFS 时应用责任共担模式。以下主题说明如何配置 Amazon EFS 以实现安全性和合规性目标。您还将学习如何使用其他 AWS 服务来帮助您监控和保护您的 Amazon EFS 资源。

**Topics**
+ [Amazon EFS 中的数据保护](data-protection.md)
+ [Amazon EFS 的身份和访问管理](security-iam.md)
+ [使用 IAM 控制文件系统访问](iam-access-control-nfs-efs.md)
+ [Amazon EFS 的合规性验证](EFS-compliance.md)
+ [Amazon EFS 中的韧性](disaster-recovery-resiliency.md)
+ [控制 NFS 客户端对 EFS 文件系统的网络访问](NFS-access-control-efs.md)
+ [网络文件系统（NFS）级别用户、组和权限](accessing-fs-nfs-permissions.md)
+ [使用接入点工作](efs-access-points.md)
+ [屏蔽对 EFS 文件系统的公共访问权限](access-control-block-public-access.md)
+ [Amazon EFS 网络隔离](network-isolation.md)

# Amazon EFS 中的数据保护
<a name="data-protection"></a>

[责任 AWS 共担模式](https://aws.amazon.com/compliance/shared-responsibility-model/)分适用于 Amazon EFS 中的数据保护。如本模型所述 AWS ，负责保护运行所有内容的全球基础架构 AWS 云。您负责维护对托管在此基础结构上的内容的控制。您还负责您所使用的 AWS 服务 的安全配置和管理任务。有关数据隐私的更多信息，请参阅[数据隐私常见问题](https://aws.amazon.com/compliance/data-privacy-faq/)。有关欧洲数据保护的信息，请参阅 *AWS Security Blog* 上的 [AWS Shared Responsibility Model and GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 博客文章。

出于数据保护目的，我们建议您保护 AWS 账户 凭证并使用 AWS IAM Identity Center 或 AWS Identity and Access Management (IAM) 设置个人用户。这样，每个用户只获得履行其工作职责所需的权限。还建议您通过以下方式保护数据：
+ 对每个账户使用多重身份验证（MFA）。
+ 用于 SSL/TLS 与 AWS 资源通信。我们要求使用 TLS 1.2，建议使用 TLS 1.3。
+ 使用设置 API 和用户活动日志 AWS CloudTrail。有关使用 CloudTrail 跟踪捕获 AWS 活动的信息，请参阅《*AWS CloudTrail 用户指南》*中的[使用跟 CloudTrail 踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)。
+ 使用 AWS 加密解决方案以及其中的所有默认安全控件 AWS 服务。
+ 使用高级托管安全服务（例如 Amazon Macie），它有助于发现和保护存储在 Amazon S3 中的敏感数据。
+ 如果您在 AWS 通过命令行界面或 API 进行访问时需要经过 FIPS 140-3 验证的加密模块，请使用 FIPS 端点。有关可用的 FIPS 端点的更多信息，请参阅《美国联邦信息处理标准（FIPS）第 140-3 版》[https://aws.amazon.com/compliance/fips/](https://aws.amazon.com/compliance/fips/)。

强烈建议您切勿将机密信息或敏感信息（如您客户的电子邮件地址）放入标签或自由格式文本字段（如**名称**字段）。这包括您 AWS 服务 使用控制台、API 或与 Amazon EFS 或其他 AWS CLI机构合作时 AWS SDKs。在用于名称的标签或自由格式文本字段中输入的任何数据都可能会用于计费或诊断日志。如果您向外部服务器提供 URL，强烈建议您不要在网址中包含凭证信息来验证对该服务器的请求。

**Topics**
+ [Amazon EFS 中的数据加密](encryption.md)
+ [互联网络隐私](internetwork-privacy.md)

# Amazon EFS 中的数据加密
<a name="encryption"></a>

Amazon EFS 提供全面的加密功能来保护静态数据和传输中数据。
+ **静态加密** - 加密存储在文件系统中的数据。
+ **传输中加密** - 加密在客户端和文件系统之间传输的数据。

如果您组织的公司或监管策略要求加密数据和元数据，建议您创建一个静态加密的文件系统，并通过加密传输中数据来挂载文件系统。



**Topics**
+ [加密静态数据](encryption-at-rest.md)
+ [加密传输中数据](encryption-in-transit.md)
+ [使用 Amazon EFS 的 AWS KMS 密钥](EFSKMS.md)
+ [排除加密故障](troubleshooting-efs-encryption.md)

# 加密静态数据
<a name="encryption-at-rest"></a>

静态加密可对 EFS 文件系统中存储的数据进行加密。这可以帮助您满足合规性要求并确保敏感数据免遭未经授权的访问。您的组织可能要求加密符合特定分类条件的所有数据，或者加密与特定应用程序、工作负载或环境关联的所有数据。

**注意**  
 AWS 密钥管理基础设施使用经联邦信息处理标准 (FIPS) 140-3 批准的加密算法。该基础设施符合美国国家标准与技术研究院（NIST）800-57 建议。

使用 Amazon EFS 控制台创建文件系统时，静态加密默认处于启用状态。使用 AWS CLI、API 或 SDKs 创建文件系统时，必须明确启用加密。

创建 EFS 文件系统后，将无法更改其加密设置。这意味着您无法修改未加密的文件系统以使其加密。相反，您需要通过[复制文件系统](efs-replication.md)，将数据从未加密的文件系统复制到新的加密文件系统。有关更多信息，请参阅[如何为现有 EFS 文件系统启用静态加密？](https://repost.aws/knowledge-center/efs-turn-on-encryption-at-rest)

## 静态加密的工作方式
<a name="howencrypt"></a>

在加密文件系统中，默认情况下，数据和元数据在写入存储之前会进行加密，并在读取时自动解密。这些过程是 Amazon EFS 以透明方式处理的，因此，您无需修改您的应用程序。

Amazon EFS AWS KMS 用于密钥管理，如下所示：
+ **文件数据加密** - 使用您指定的 KMS 密钥对文件内容进行加密。您可以指定：
  +  AWS 拥有的密钥 适用于 Amazon EFS (`aws/elasticfilesystem`) 的 “默认” 选项，不收取额外费用。
  + 您创建和管理的客户托管密钥 - 提供额外的控制和审计功能。
+ **元数据加密** - 文件名、目录名和目录内容是使用 Amazon EFS 在内部管理的密钥加密的。

### 加密过程
<a name="encryption-atrest-process"></a>

在创建文件系统或将某个文件系统复制到同一账户下的另一个文件系统时，Amazon EFS 使用[转发访问会话（FAS）](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)，通过调用者凭证进行 KMS 调用。在 CloudTrail 日志中，`kms:CreateGrant`调用似乎是由创建文件系统或复制的相同用户身份进行的。您可以 CloudTrail 通过查找带有值的`invokedBy`字段来识别 Amazon EFS 服务调用`elasticfilesystem.amazonaws.com`。KMS 密钥上的资源策略必须支持 FAS 执行 `CreateGrant` 操作以发起调用。

**重要**  
您可以管理对授权的控制权，并且可以随时撤销授权。撤销授权后，Amazon EFS 将无法在后续操作中访问该 KMS 密钥。有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[停用和撤销授权](https://docs.aws.amazon.com/kms/latest/developerguide/grant-delete.html)。

使用客户托管的 KMS 密钥时，资源策略还必须支持 Amazon EFS 服务主体，并包括 `kms:ViaService` 条件来限制访问特定服务端点。例如：

```
"kms:ViaService":
    "elasticfilesystem.us-east-2.amazonaws.com"
```

Amazon EFS 使用行业标准 AES-256 加密算法来以静态方式加密数据和元数据。

有关适用于 Amazon EFS 的 KMS 密钥策略的更多信息，请参阅[使用 Amazon EFS 的 AWS KMS 密钥](EFSKMS.md)。

## 对新文件系统强制执行静态加密
<a name="enforce-encryption-at-rest"></a>

您可以在基于 AWS Identity and Access Management （IAM）身份的策略中使用 `elasticfilesystem:Encrypted` IAM 条件键，来在用户创建 EFS 文件系统时强制执行静态创建。有关使用此条件键的更多信息，请参阅[示例：强制创建加密文件系统](security_iam_id-based-policy-examples.md#using-iam-to-enforce-encryption-at-rest)。

您还可以在内部定义服务控制策略 (SCPs)， AWS Organizations 对组织 AWS 账户 中的所有人强制执行 Amazon EFS 加密。有关中服务控制策略的更多信息 AWS Organizations，请参阅《*AWS Organizations 用户指南》*中的[服务控制策略](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html#orgs_manage_policies_scp)。

# 加密传输中数据
<a name="encryption-in-transit"></a>

Amazon EFS 支持使用传输层安全性协议（TLS）对传输中数据进行加密。在将传输中数据加密声明为 EFS 文件系统的挂载选项时，Amazon EFS 会在挂载文件系统时与您的 EFS 文件系统建立安全的 TLS 连接。所有 NFS 流量都通过此加密连接进行路由。

## 传输中加密的工作方式
<a name="how-encrypt-transit"></a>

我们建议使用 EFS 挂载帮助程序来挂载您的文件系统，因为与使用 NFS `mount` 挂载相比，它简化了挂载过程。EFS 挂载帮助程序通过使用 efs-proxy（适用于 efs-utils 版本 2.0.0 及更高版本）或 stunnel（适用于 efs-utils 的早期版本）来管理该进程，从而与 EFS 文件系统建立安全的 TLS 连接。

如果未使用挂载帮助程序，您仍然可以启用传输中的数据加密。请按以下步骤操作。

**在不使用挂载帮助程序的情况下对传输中数据进行加密**

1. 下载并安装 `stunnel`，并记下该应用程序侦听的端口。有关更多信息，请参阅 [升级 `stunnel`](upgrading-stunnel.md)。

1. 运行 `stunnel` 以使用 TLS 通过端口 2049 连接到您的 EFS 文件系统。

1. 使用 NFS 客户端挂载 `localhost:port`，其中 `port` 是在第一步中记下的端口。

由于传输中的数据加密是根据每个连接配置的，因此，每个配置的挂载在实例上运行专用的 `stunnel` 进程。默认情况下，挂载帮助程序使用的 stunnel 进程会侦听 20049 和 20449 之间的本地端口，并通过端口 2049 连接到 Amazon EFS。

**注意**  
默认情况下，在将 EFS 挂载帮助程序与 TLS 一起使用时，它会强制使用在线证书状态协议（OCSP）和证书主机名检查。EFS 挂载帮助程序使用 stunnel 程序提供 TLS 功能。某些版本的 Linux 不包含默认支持这些 TLS 功能的 stunnel 版本。在使用这些 Linux 版本之一时，使用 TLS 挂载 EFS 文件系统将失败。  
安装 amazon-efs-utils软件包后，要升级系统的 stunnel 版本，请参阅[升级 `stunnel`](upgrading-stunnel.md)。  
 有关加密问题，请参阅[排除加密故障](troubleshooting-efs-encryption.md)。

在使用传输中的数据加密时，将更改您的 NFS 客户端设置。在检查您主动挂载的文件系统时，将会看到一个文件系统挂载到 127.0.0.1 或 `localhost`，如以下示例中所示。

```
$ mount | column -t
127.0.0.1:/  on  /home/ec2-user/efs        type  nfs4         (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=20127,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1)
```

在使用 TLS 和 EFS 挂载帮助程序进行挂载时，将重新配置 NFS 客户端以挂载到本地端口。EFS 挂载帮助程序启动一个客户端 `stunnel` 进程以侦听该本地端口，并且 `stunnel` 使用 TLS 打开到 EFS 文件系统的加密连接。EFS 挂载帮助程序负责设置和维护该加密连接和关联的配置。

要确定哪个 Amazon EFS 文件系统 ID 对应于哪个本地挂载点，您可以使用以下命令。请记住*efs-mount-point*替换为挂载文件系统的本地路径。

```
grep -E "Successfully mounted.*efs-mount-point" /var/log/amazon/efs/mount.log | tail -1
```

在将 EFS 挂载帮助程序用于传输中数据加密时，它还会创建一个名为 `amazon-efs-mount-watchdog` 的进程。该进程可确保每个挂载的 stunnel 进程正在运行，并在卸载 EFS 文件系统后停止 stunnel。如果 stunnel 进程由于某种原因意外终止，watchdog 进程将重新启动该进程。

# 使用 Amazon EFS 的 AWS KMS 密钥
<a name="EFSKMS"></a>

Amazon EFS 与 AWS Key Management Service (AWS KMS) 集成，用于密钥管理。Amazon EFS 使用客户托管密钥通过以下方法加密您的文件系统：
+ **静态加密元数据** – Amazon EFS 使用适用于 Amazon EF 的 AWS 托管式密钥 `aws/elasticfilesystem` 来加密和解密文件系统元数据（即，文件名、目录名称和目录内容）。
+ **静态加密文件数据** – 您选择用于加密和解密文件数据（即，文件内容）的客户托管文件。您可以启用、禁用或撤销对此客户托管密钥的授权。此客户托管密钥可以是以下两种类型之一：
  + **AWS 托管式密钥 适用于 Amazon EFS** — 这是默认的客户托管密钥`aws/elasticfilesystem`。您无需为创建和存储客户托管密钥支付费用，但需要支付使用费用。要了解更多信息，请参阅 [AWS Key Management Service 定价](https://aws.amazon.com/kms/pricing/)。
  + **客户托管式密钥** – 这是使用最灵活的 KMS 密钥，因为您可以配置其密钥策略以及为多个用户或服务提供授权。有关创建客户托管密钥的更多信息，请参阅《*AWS Key Management Service 开发人员指南》中的[创建密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。*

    如果将客户托管式密钥用于数据加密和解密，您可以启用密钥轮换。启用密钥轮换后，每年 AWS KMS 自动轮换密钥一次。此外，对于客户托管式密钥，您还可以随时选择何时禁用、重新启用、删除或撤销对您的客管理式密钥的访问权限。有关更多信息，请参阅 [使用 Amazon EFS 的 AWS KMS 密钥](#EFSKMS)。

**重要**  
Amazon EFS 仅接受对称的客户托管式密钥。您不能在 Amazon EFS 中使用非对称的客户托管式密钥。

静态数据加密和解密是透明处理的。但是，Amazon EFS IDs 特有的 AWS 账户会出现在与 AWS KMS 操作相关的 AWS CloudTrail 日志中。有关更多信息，请参阅 [文件系统的 Amazon EFS 日志 encrypted-at-rest文件条目](logging-using-cloudtrail.md#efs-encryption-cloudtrail)。

## Amazon EFS 的密钥政策 AWS KMS
<a name="EFSKMSPolicy"></a>

密钥策略是控制对客户托管式密钥的访问的主要方式。有关密钥策略的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的 [AWS KMS中的密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。以下列表描述了 Amazon EFS 对静态加密文件系统所需或以其他方式支持的所有 AWS KMS相关权限：
+ **kms:Encrypt** –（可选）将明文加密为密文。该权限包含在默认密钥策略中。
+ **kms:Decrypt** –（必需）解密密文。密文是以前加密的明文。该权限包含在默认密钥策略中。
+ **kms: ReEncrypt** —（可选）使用新的客户托管密钥加密服务器端的数据，而不会在客户端暴露数据的纯文本。将先解密数据，然后重新加密。该权限包含在默认密钥策略中。
+ **kms: GenerateDataKeyWithoutPlaintext** —（必填）返回使用客户托管密钥加密的数据加密密钥。此权限包含在 k **ms: GenerateDataKey \$1** 下的默认密钥策略中。
+ **km CreateGrant s:** —（必填）向密钥添加授权，以指定谁可以在什么条件下使用该密钥。授权是密钥政策的替代权限机制。有关授权的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的 [AWS KMS中的授权](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)。该权限包含在默认密钥策略中。
+ **kms: DescribeKey** —（必填）提供有关指定客户托管密钥的详细信息。该权限包含在默认密钥策略中。
+ **km ListAliases s:** —（可选）列出账户中的所有密钥别名。使用控制台创建加密的文件系统时，该权限将填充**选择 KMS 密钥**列表。我们建议您使用该权限以提供最佳的用户体验。该权限包含在默认密钥策略中。

### AWS 托管式密钥 适用于 Amazon EFS KMS 政策
<a name="efs-aws-managed-key-policy"></a>

适用于 Amazon EFS AWS 托管式密钥 的 KMS 策略 JS `aws/elasticfilesystem` ON 如下所示：

```
{
    "Version": "2012-10-17",		 	 	 
    "Id": "auto-elasticfilesystem-1",
    "Statement": [
        {
            "Sid": "Allow access to EFS for all principals in the account that are authorized to use EFS",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:CreateGrant",
                "kms:DescribeKey"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "elasticfilesystem.us-east-2.amazonaws.com",
                    "kms:CallerAccount": "111122223333"
                }
            }
        },
        {
            "Sid": "Allow direct access to key metadata to the account",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "kms:Describe*",
                "kms:Get*",
                "kms:List*",
                "kms:RevokeGrant"
            ],
            "Resource": "*"
        }
    ]
}
```

## 密钥状态及其影响
<a name="key-states-effects"></a>

KMS 密钥的状态直接影响到对加密文件系统的访问：

已启用  
正常操作 - 对文件系统具有完全读取和写入权限

已禁用  
文件系统在短时间后变得无法访问。可以重新启用。

待删除  
文件系统变得无法访问。在等待期间可以取消删除。

已删除  
文件系统永久无法访问。此操作无法撤消。

**警告**  
如果您禁用或删除用于文件系统的 KMS 密钥，或者撤销 Amazon EFS 对该密钥的访问权限，您的文件系统将变得无法访问。如果您没有备份，这可能会导致数据丢失。在更改加密密钥之前，请务必确保已创建正确的备份过程。

# 排除加密故障
<a name="troubleshooting-efs-encryption"></a>

**Topics**
+ [具有传输中数据加密的挂载失败](#mounting-tls-fails)
+ [具有传输中数据加密的挂载中断](#mounting-tls-interrupt)
+ [Encrypted-at-rest 无法创建文件系统](#unable-to-encrypt)
+ [无法使用的加密文件系统](#unusable-encrypt)

## 具有传输中数据加密的挂载失败
<a name="mounting-tls-fails"></a>

默认情况下，当您使用带有传输层安全性协议（TLS）的 Amazon EFS 挂载帮助程序时，它会强制执行主机名检查。某些系统不支持此功能，例如使用 Red Hat Enterprise Linux 或 CentOS 时。在这些情况下，挂载使用 TLS 的 EFS 文件系统会失败。

**要采取的操作**  
 我们建议您升级客户端上的 stunnel 版本以支持主机名检查。有关更多信息，请参阅 [升级 `stunnel`](upgrading-stunnel.md)。

## 具有传输中数据加密的挂载中断
<a name="mounting-tls-interrupt"></a>

在极少数情况下，客户端事件可能会导致到您的 Amazon EFS 文件系统的加密连接挂起或中断。

**要采取的操作**  
如果到使用传输中数据加密的 Amazon EFS 文件系统的连接中断，请执行以下步骤：

1. 确保正在客户端上运行 stunnel 服务。

1. 确认正在客户端上运行监控程序应用程序 `amazon-efs-mount-watchdog`。您可以使用以下命令确定是否正在运行该应用程序：

   ```
   ps aux | grep [a]mazon-efs-mount-watchdog
   ```

1. 检查您的支持日志。有关更多信息，请参阅 [获取支持日志](mount-helper-logs.md)。

1. （可选）您可以启用 stunnel 日志以及检查这些日志中的信息。您可以在 `/etc/amazon/efs/efs-utils.conf` 中更改日志配置以启用 stunnel 日志。但是，这样做需要卸载文件系统，然后使用挂载帮助程序重新挂载以使更改生效。
**重要**  
启用 stunnel 日志可能会用完您的文件系统上的宝贵空间量。

如果中断仍在继续，请联系 Su AWS pport。

## Encrypted-at-rest 无法创建文件系统
<a name="unable-to-encrypt"></a>

您已尝试创建新的 encrypted-at-rest文件系统。但是，您会收到一条错误消息，提示该消息 AWS KMS 不可用。

**要采取的操作**  
在极少数情况下，可能会发生此错误，这种情况在您中暂时 AWS KMS 不可用 AWS 区域。如果发生这种情况，请等待，直到 AWS KMS 恢复到完全可用状态，然后重试创建文件系统。

## 无法使用的加密文件系统
<a name="unusable-encrypt"></a>

加密的文件系统持续返回 NFS 服务器错误。当 EFS 由于以下原因之一无法从中 AWS KMS 检索您的主密钥时，可能会发生这些错误：
+ 禁用了密钥。
+ 删除了密钥。
+ 撤销了 Amazon EFS 使用密钥的权限。
+ AWS KMS 暂时不可用。

**要采取的操作**  
首先，确认 AWS KMS 密钥已启用。为此，您可以在控制台中查看这些密钥。有关更多信息，请参阅《AWS Key Management Service 开发人员指南**》中的[查看密钥](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html)。

如果未启用密钥，请将其启用。有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[启用和禁用密钥](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html)。

如果密钥处于待删除状态，该状态将禁用密钥。您可以取消删除，然后重新启用密钥。有关更多信息，请参阅《AWS Key Management Service 开发人员指南**》中的[计划和取消密钥删除](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html#deleting-keys-scheduling-key-deletion)。

如果密钥已启用，但仍然遇到问题，或者在重新启用密钥时遇到问题，请联系 Su AWS pport。

# 互联网络隐私
<a name="internetwork-privacy"></a>

本主题介绍 Amazon EFS 如何保护从服务到其他位置的连接。

## 服务与本地客户端和应用之间的流量
<a name="on-prem-traffic-apps"></a>

您的私有网络和以下两种连接方式可供选择 AWS：
+  一个 AWS Site-to-Site VPN 连接。有关更多信息，请参阅[什么是 AWS Site-to-Site VPN？](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) 
+  一个 Direct Connect 连接。有关更多信息，请参阅[什么是 Direct Connect？](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) 

 通过网络访问 Amazon EFS 是通过 AWS 发布进行的 APIs。客户端必须支持传输层 1.2 或更高版本。我们建议使用 TLS 1.3 或更高版本。客户端还必须支持具有完全向前保密（PFS）的密码套件，例如 Ephemeral Diffie-Hellman（DHE）或 Elliptic Curve Diffie-Hellman Ephemeral（ECDHE）。大多数现代系统（如 Java 7 及更高版本）都支持这些模式。此外，必须使用与 IAM 主体关联的访问密钥 ID 和秘密访问密钥来对请求进行签名，也可以使用 [AWS Security Token Service （AWS STS）](https://docs.aws.amazon.com/STS/latest/APIReference/)生成临时安全凭证来对请求进行签名。

## VPC 和 Amazon EFS API 之间的流量
<a name="vpc-endpoints"></a>

要在虚拟私有云（VPC）与 Amazon EFS API 之间建立专用连接，可以创建接口 VPC 端点。您可以使用此连接从 VPC 调用 Amazon EFS API，而无需通过互联网发送流量。端点提供与 Amazon EFS API 的安全连接，无需互联网网关、NAT 实例或虚拟专用网络（VPN）连接。有关更多信息，请参阅 [使用 Amazon EFS 中的接口 VPC 端点](efs-vpc-endpoints.md)。

## 同一区域内 AWS 资源之间的流量
<a name="intra-aws-resource-traffic"></a>

 Amazon EFS 的 Amazon Virtual Private Cloud（Amazon VPC）端点是 VPC 内的逻辑实体，仅支持连接到 Amazon EFS。Amazon VPC 会将请求路由到 Amazon EFS 并将响应路由回 VPC。有关更多信息，请参阅**《Amazon VPC 用户指南》的 [VPC 端点](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)。

# Amazon EFS 的身份和访问管理
<a name="security-iam"></a>

 

AWS Identity and Access Management (IAM) AWS 服务 可帮助管理员安全地控制对 AWS 资源的访问权限。IAM 管理员控制谁可以*通过身份验证*（登录）和*获得授权*（具有权限）来使用 Amazon EFS 资源。您可以使用 IAM AWS 服务 ，无需支付额外费用。

**Topics**
+ [受众](#security_iam_audience)
+ [使用身份进行身份验证](#security_iam_authentication)
+ [使用策略管理访问](#security_iam_access-manage)
+ [Amazon Elastic File System 如何与 IAM 配合使用](security_iam_service-with-iam.md)
+ [适用于 Amazon Elastic File System 的基于身份的策略示例](security_iam_id-based-policy-examples.md)
+ [适用于 Amazon EFS 的基于资源的策略示例](security_iam_resource-based-policy-examples.md)
+ [AWS 亚马逊 EFS 的托管策略](security-iam-awsmanpol.md)
+ [将标签与 Amazon EFS 一起使用](using-tags-efs.md)
+ [对 Amazon EFS 使用服务相关角色](using-service-linked-roles.md)
+ [Amazon Elastic File System 身份和访问问题排查](security_iam_troubleshoot.md)

## 受众
<a name="security_iam_audience"></a>

您的使用方式 AWS Identity and Access Management (IAM) 因您的角色而异：
+ **服务用户**：如果您无法访问功能，请从管理员处请求权限（请参阅[Amazon Elastic File System 身份和访问问题排查](security_iam_troubleshoot.md)）
+ **服务管理员**：确定用户访问权限并提交权限请求（请参阅[Amazon Elastic File System 如何与 IAM 配合使用](security_iam_service-with-iam.md)）
+ **IAM 管理员**：编写用于管理访问权限的策略（请参阅[适用于 Amazon Elastic File System 的基于身份的策略示例](security_iam_id-based-policy-examples.md)）

## 使用身份进行身份验证
<a name="security_iam_authentication"></a>

身份验证是您 AWS 使用身份凭证登录的方式。您必须以 IAM 用户身份进行身份验证 AWS 账户根用户，或者通过担任 IAM 角色进行身份验证。

您可以使用来自身份源的证书 AWS IAM Identity Center （例如（IAM Identity Center）、单点登录身份验证或 Google/Facebook 证书，以联合身份登录。有关登录的更多信息，请参阅《AWS 登录 用户指南》**中的[如何登录您的 AWS 账户](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)。

对于编程访问， AWS 提供 SDK 和 CLI 来对请求进行加密签名。有关更多信息，请参阅*《IAM 用户指南》*中的[适用于 API 请求的AWS 签名版本 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)。

### AWS 账户 root 用户
<a name="security_iam_authentication-rootuser"></a>

 创建时 AWS 账户，首先会有一个名为 AWS 账户 *root 用户的*登录身份，该身份可以完全访问所有资源 AWS 服务 和资源。我们强烈建议不要使用根用户进行日常任务。有关需要根用户凭证的任务，请参阅《IAM 用户指南》**中的[需要根用户凭证的任务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

### 联合身份
<a name="security_iam_authentication-federated"></a>

作为最佳实践，要求人类用户使用与身份提供商的联合身份验证才能 AWS 服务 使用临时证书进行访问。

*联合身份是指*来自您的企业目录、Web 身份提供商的用户 Directory Service ，或者 AWS 服务 使用来自身份源的凭据进行访问的用户。联合身份代入可提供临时凭证的角色。

要集中管理访问权限，建议使用。 AWS IAM Identity Center有关更多信息，请参阅《AWS IAM Identity Center 用户指南》**中的[什么是 IAM Identity Center？](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

### IAM 用户和群组
<a name="security_iam_authentication-iamuser"></a>

*[IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)*是对某个人员或应用程序具有特定权限的一个身份。建议使用临时凭证，而非具有长期凭证的 IAM 用户。有关更多信息，请参阅 *IAM 用户指南*[中的要求人类用户使用身份提供商的联合身份验证才能 AWS 使用临时证书进行访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)。

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)指定一组 IAM 用户，便于更轻松地对大量用户进行权限管理。有关更多信息，请参阅*《IAM 用户指南》*中的 [IAM 用户使用案例](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html)。

### IAM 角色
<a name="security_iam_authentication-iamrole"></a>

*[IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)*是具有特定权限的身份，可提供临时凭证。您可以通过[从用户切换到 IAM 角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)或调用 AWS CLI 或 AWS API 操作来代入角色。有关更多信息，请参阅《IAM 用户指南》**中的[担任角色的方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)。

IAM 角色对于联合用户访问、临时 IAM 用户权限、跨账户访问、跨服务访问以及在 Amazon EC2 上运行的应用程序非常有用。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的跨账户资源访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## 使用策略管理访问
<a name="security_iam_access-manage"></a>

您可以 AWS 通过创建策略并将其附加到 AWS 身份或资源来控制中的访问权限。策略定义了与身份或资源关联时的权限。 AWS 在委托人提出请求时评估这些政策。大多数策略都以 JSON 文档的 AWS 形式存储在中。有关 JSON 策略文档的更多信息，请参阅*《IAM 用户指南》*中的 [JSON 策略概述](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

管理员使用策略，通过定义哪个**主体**可以在什么**条件**下对哪些**资源**执行哪些**操作**来指定谁有权访问什么。

默认情况下，用户和角色没有权限。IAM 管理员创建 IAM 策略并将其添加到角色中，然后用户可以担任这些角色。IAM 策略定义权限，与执行操作所用的方法无关。

### 基于身份的策略
<a name="security_iam_access-manage-id-based-policies"></a>

基于身份的策略是您附加到身份（用户、组或角色）的 JSON 权限策略文档。这些策略控制身份可以执行什么操作、对哪些资源执行以及在什么条件下执行。要了解如何创建基于身份的策略，请参阅《IAM 用户指南》**中的[使用客户管理型策略定义自定义 IAM 权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

基于身份的策略可以是*内联策略*（直接嵌入到单个身份中）或*托管策略*（附加到多个身份的独立策略）。要了解如何在托管策略和内联策略之间进行选择，请参阅*《IAM 用户指南》*中的[在托管策略与内联策略之间进行选择](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html)。

### 基于资源的策略
<a name="security_iam_access-manage-resource-based-policies"></a>

基于资源的策略是附加到资源的 JSON 策略文档。示例包括 IAM *角色信任策略*和 Amazon S3 *存储桶策略*。在支持基于资源的策略的服务中，服务管理员可以使用它们来控制对特定资源的访问。您必须在基于资源的策略中[指定主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。

基于资源的策略是位于该服务中的内联策略。您不能在基于资源的策略中使用 IAM 中的 AWS 托管策略。

### 其他策略类型
<a name="security_iam_access-manage-other-policies"></a>

AWS 支持其他策略类型，这些策略类型可以设置更常见的策略类型授予的最大权限：
+ **权限边界** – 设置基于身份的策略可以授予 IAM 实体的最大权限。有关更多信息，请参阅《 IAM 用户指南》**中的 [IAM 实体的权限边界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。
+ **服务控制策略 (SCPs)**-在中指定组织或组织单位的最大权限 AWS Organizations。有关更多信息，请参阅《AWS Organizations 用户指南》**中的[服务控制策略](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ **资源控制策略 (RCPs)**-设置账户中资源的最大可用权限。有关更多信息，请参阅《*AWS Organizations 用户指南》*中的[资源控制策略 (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。
+ **会话策略** – 在为角色或联合用户创建临时会话时，作为参数传递的高级策略。有关更多信息，请参阅《IAM 用户指南》**中的[会话策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)。

### 多个策略类型
<a name="security_iam_access-manage-multiple-policies"></a>

当多个类型的策略应用于一个请求时，生成的权限更加复杂和难以理解。要了解在涉及多种策略类型时如何 AWS 确定是否允许请求，请参阅 *IAM 用户指南*中的[策略评估逻辑](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。

# Amazon Elastic File System 如何与 IAM 配合使用
<a name="security_iam_service-with-iam"></a>

在使用 IAM 管理对 Amazon EFS 的访问权限之前，应了解哪些 IAM 功能可用于 Amazon EFS。






**可与 Amazon Elastic File System 配合使用的 IAM 功能**  

| IAM 功能 | Amazon EFS 支持 | 
| --- | --- | 
|  [基于身份的策略](#security_iam_service-with-iam-id-based-policies)  |   是  | 
|  [基于资源的策略](#security_iam_service-with-iam-resource-based-policies)  |   是  | 
|  [策略操作](#security_iam_service-with-iam-id-based-policies-actions)  |   是  | 
|  [策略资源](#security_iam_service-with-iam-id-based-policies-resources)  |   是  | 
|  [策略条件键（特定于服务）](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   是  | 
|  [ACLs](#security_iam_service-with-iam-acls)  |   否   | 
|  [ABAC（策略中的标签）](#security_iam_service-with-iam-tags)  |   部分  | 
|  [临时凭证](#security_iam_service-with-iam-roles-tempcreds)  |   是  | 
|  [主体权限](#security_iam_service-with-iam-principal-permissions)  |   是  | 
|  [服务角色](#security_iam_service-with-iam-roles-service)  |   是  | 
|  [服务关联角色](#security_iam_service-with-iam-roles-service-linked)  |   是  | 

要全面了解 Amazon EFS 和其他 AWS 服务如何与大多数 IAM 功能配合使用，请参阅 IAM *用户指南中与 IAM* [配合使用的AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

## Amazon EFS 基于身份的策略
<a name="security_iam_service-with-iam-id-based-policies"></a>

**支持基于身份的策略：**是

基于身份的策略是可附加到身份（如 IAM 用户、用户组或角色）的 JSON 权限策略文档。这些策略控制用户和角色可在何种条件下对哪些资源执行哪些操作。要了解如何创建基于身份的策略，请参阅《IAM 用户指南》**中的[使用客户管理型策略定义自定义 IAM 权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

通过使用 IAM 基于身份的策略，您可以指定允许或拒绝的操作和资源以及允许或拒绝操作的条件。要了解可在 JSON 策略中使用的所有元素，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素引用](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。

### Amazon EFS 基于身份的策略示例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



要查看 Amazon EFS 基于身份的策略示例，请参阅[适用于 Amazon Elastic File System 的基于身份的策略示例](security_iam_id-based-policy-examples.md)。

## Amazon EFS 基于资源的策略
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**支持基于资源的策略：**是

基于资源的策略是附加到资源的 JSON 策略文档。基于资源的策略的示例包括 IAM *角色信任策略*和 Amazon S3 *存储桶策略*。在支持基于资源的策略的服务中，服务管理员可以使用它们来控制对特定资源的访问。对于在其中附加策略的资源，策略定义指定主体可以对该资源执行哪些操作以及在什么条件下执行。您必须在基于资源的策略中[指定主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。委托人可以包括账户、用户、角色、联合用户或 AWS 服务。

要启用跨账户访问，您可以将整个账户或其他账户中的 IAM 实体指定为基于资源的策略中的主体。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的跨账户资源访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

要了解如何使用资源策略控制文件系统数据访问，请参阅[使用 IAM 控制文件系统访问](iam-access-control-nfs-efs.md)。要了解如何将基于资源的策略附加到系统，请参阅[创建文件系统策略](create-file-system-policy.md)。

### Amazon EFS 中基于资源的策略示例
<a name="security_iam_service-with-iam-resource-based-policies-examples"></a>

要查看 Amazon EFS 基于资源的策略示例，请参阅[适用于 Amazon EFS 的基于资源的策略示例](security_iam_resource-based-policy-examples.md)。

## Amazon EFS 的策略操作
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**支持策略操作：**是

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

JSON 策略的 `Action` 元素描述可用于在策略中允许或拒绝访问的操作。在策略中包含操作以授予执行关联操作的权限。



有关 Amazon EFS 操作列表，请参阅《服务授权参考》中的 [Amazon Elastic File System 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticfilesystem.html#amazonelasticfilesystem-actions-as-permissions)**。

Amazon EFS 中的策略操作在操作前面使用以下前缀：

```
elasticfilesystem
```

要在单个语句中指定多项操作，请使用逗号将它们隔开。

```
"Action": [
      "elasticfilesystem:action1",
      "elasticfilesystem:action2"
         ]
```





要查看 Amazon EFS 基于身份的策略示例，请参阅[适用于 Amazon Elastic File System 的基于身份的策略示例](security_iam_id-based-policy-examples.md)。

## Amazon EFS 的策略资源
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**支持策略资源：**是

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

`Resource` JSON 策略元素指定要向其应用操作的一个或多个对象。作为最佳实践，请使用其 [Amazon 资源名称（ARN）](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)指定资源。对于不支持资源级权限的操作，请使用通配符 (\$1) 指示语句应用于所有资源。

```
"Resource": "*"
```

要查看 Amazon EFS 资源类型及其列表 ARNs，请参阅《*服务授权参考*》中的 [Amazon Elastic File System 定义的资源](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticfilesystem.html#amazonelasticfilesystem-resources-for-iam-policies)。要了解您可以使用哪些操作指定每个资源的 ARN，请参阅 [Amazon Elastic File System 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticfilesystem.html#amazonelasticfilesystem-actions-as-permissions)。





要查看 Amazon EFS 基于身份的策略示例，请参阅[适用于 Amazon Elastic File System 的基于身份的策略示例](security_iam_id-based-policy-examples.md)。

## Amazon EFS 的策略条件键
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**支持特定于服务的策略条件键：**是

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

`Condition` 元素根据定义的条件指定语句何时执行。您可以创建使用[条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)（例如，等于或小于）的条件表达式，以使策略中的条件与请求中的值相匹配。要查看所有 AWS 全局条件键，请参阅 *IAM 用户指南*中的[AWS 全局条件上下文密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

要查看 Amazon EFS 条件键列表，请参阅《服务授权参考》中的 [Amazon Elastic File System 的条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticfilesystem.html#amazonelasticfilesystem-policy-keys)**。要了解您可以对哪些操作和资源使用条件键，请参阅 [Amazon Elastic File System 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticfilesystem.html#amazonelasticfilesystem-actions-as-permissions)。

要查看 Amazon EFS 基于身份的策略示例，请参阅[适用于 Amazon Elastic File System 的基于身份的策略示例](security_iam_id-based-policy-examples.md)。

## ACLs 在 Amazon EFS 中
<a name="security_iam_service-with-iam-acls"></a>

**支持 ACLs：**否 

访问控制列表 (ACLs) 控制哪些委托人（账户成员、用户或角色）有权访问资源。 ACLs 与基于资源的策略类似，尽管它们不使用 JSON 策略文档格式。

## ABAC 与 Amazon EFS
<a name="security_iam_service-with-iam-tags"></a>

**支持 ABAC（策略中的标签）：**部分支持

基于属性的访问权限控制（ABAC）是一种授权策略，该策略基于称为标签的属性来定义权限。您可以将标签附加到 IAM 实体和 AWS 资源，然后设计 ABAC 策略以允许在委托人的标签与资源上的标签匹配时进行操作。

要基于标签控制访问，您需要使用 `aws:ResourceTag/key-name``aws:RequestTag/key-name` 或 `aws:TagKeys` 条件键在策略的[条件元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)中提供标签信息。

如果某个服务对于每种资源类型都支持所有这三个条件键，则对于该服务，该值为**是**。如果某个服务仅对于部分资源类型支持所有这三个条件键，则该值为**部分**。

有关 ABAC 的更多信息，请参阅《IAM 用户指南》**中的[使用 ABAC 授权定义权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)。要查看设置 ABAC 步骤的教程，请参阅《IAM 用户指南》**中的[使用基于属性的访问权限控制（ABAC）](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)。

## 将临时凭证用于 Amazon EFS
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**支持临时凭证：**是

临时证书提供对 AWS 资源的短期访问权限，并且是在您使用联合身份或切换角色时自动创建的。 AWS 建议您动态生成临时证书，而不是使用长期访问密钥。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)和[使用 IAM 的。AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)

## Amazon EFS 的跨服务主体权限
<a name="security_iam_service-with-iam-principal-permissions"></a>

**支持转发访问会话（FAS）：**是

 转发访问会话 (FAS) 使用调用主体的权限 AWS 服务，再加上 AWS 服务 向下游服务发出请求的请求。有关发出 FAS 请求时的策略详情，请参阅[转发访问会话](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)。

## Amazon EFS 的服务角色
<a name="security_iam_service-with-iam-roles-service"></a>

**支持服务角色：**是

 服务角色是由一项服务担任、代表您执行操作的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。IAM 管理员可以在 IAM 中创建、修改和删除服务角色。有关更多信息，请参阅《IAM 用户指南》**中的[创建向 AWS 服务委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

**警告**  
更改服务角色的权限可能会破坏 Amazon EFS 的功能。仅当 Amazon EFS 提供相关指导时才编辑服务角色。

## Amazon EFS 的服务相关角色
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**支持服务关联角色：**是

 服务相关角色是一种与服务相关联的 AWS 服务服务角色。服务可以代入代表您执行操作的角色。服务相关角色出现在您的中 AWS 账户 ，并且归服务所有。IAM 管理员可以查看但不能编辑服务关联角色的权限。

有关创建或管理 Amazon EFS 服务相关角色的详细信息，请参阅[对 Amazon EFS 使用服务相关角色](using-service-linked-roles.md)。

# 适用于 Amazon Elastic File System 的基于身份的策略示例
<a name="security_iam_id-based-policy-examples"></a>

默认情况下，用户和角色没有创建或修改 Amazon EFS 资源的权限。要授予用户对所需资源执行操作的权限，IAM 管理员可以创建 IAM 策略。

要了解如何使用这些示例 JSON 策略文档创建基于 IAM 身份的策略，请参阅《IAM 用户指南》**中的[创建 IAM 策略（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

有关 Amazon EFS 定义的操作和资源类型（包括每种资源类型的格式）的详细信息，请参阅《*服务授权参考*》中的 [Amazon Elastic File System 的操作、资源和条件密钥](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticfilesystem.html)。 ARNs 

**Topics**
+ [策略最佳实践](#security_iam_service-with-iam-policy-best-practices)
+ [使用 Amazon EFS 控制台](#security_iam_id-based-policy-examples-console)
+ [示例：允许用户查看他们自己的权限](#security_iam_id-based-policy-examples-view-own-permissions)
+ [示例：强制创建加密文件系统](#using-iam-to-enforce-encryption-at-rest)
+ [示例：强制创建未加密文件系统](#using-iam-to-enforce-unencrypted-file-systems)

## 策略最佳实践
<a name="security_iam_service-with-iam-policy-best-practices"></a>

基于身份的策略确定某个人是否可以创建、访问或删除您账户中的 Amazon EFS 资源。这些操作可能会使 AWS 账户产生成本。创建或编辑基于身份的策略时，请遵循以下指南和建议：
+ **开始使用 AWS 托管策略并转向最低权限权限** — 要开始向用户和工作负载授予权限，请使用为许多常见用例授予权限的*AWS 托管策略*。它们在你的版本中可用 AWS 账户。我们建议您通过定义针对您的用例的 AWS 客户托管策略来进一步减少权限。有关更多信息，请参阅《IAM 用户指南》**中的 [AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[工作职能的AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+ **应用最低权限**：在使用 IAM 策略设置权限时，请仅授予执行任务所需的权限。为此，您可以定义在特定条件下可以对特定资源执行的操作，也称为*最低权限许可*。有关使用 IAM 应用权限的更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的策略和权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ **使用 IAM 策略中的条件进一步限制访问权限**：您可以向策略添加条件来限制对操作和资源的访问。例如，您可以编写策略条件来指定必须使用 SSL 发送所有请求。如果服务操作是通过特定 AWS 服务的（例如）使用的，则也可以使用条件来授予对服务操作的访问权限 CloudFormation。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素：条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ **使用 IAM Access Analyzer 验证您的 IAM 策略，以确保权限的安全性和功能性**：IAM Access Analyzer 会验证新策略和现有策略，以确保策略符合 IAM 策略语言（JSON）和 IAM 最佳实践。IAM Access Analyzer 提供 100 多项策略检查和可操作的建议，以帮助您制定安全且功能性强的策略。有关更多信息，请参阅《IAM 用户指南》**中的[使用 IAM Access Analyzer 验证策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+ **需要多重身份验证 (MFA**)-如果 AWS 账户您的场景需要 IAM 用户或根用户，请启用 MFA 以提高安全性。若要在调用 API 操作时需要 MFA，请将 MFA 条件添加到您的策略中。有关更多信息，请参阅《IAM 用户指南》**中的[使用 MFA 保护 API 访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

有关 IAM 中的最佳实操的更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

## 使用 Amazon EFS 控制台
<a name="security_iam_id-based-policy-examples-console"></a>

要访问 Amazon Elastic File System 控制台，您必须具有一组最低权限。这些权限必须允许您列出和查看有关您的 Amazon EFS 资源的详细信息 AWS 账户。如果创建比必需的最低权限更为严格的基于身份的策略，对于附加了该策略的实体（用户或角色），控制台将无法按预期正常运行。

对于仅调用 AWS CLI 或 AWS API 的用户，您无需为其设置最低控制台权限。相反，只允许访问与其尝试执行的 API 操作相匹配的操作。

为确保用户和角色仍然可以使用 Amazon EFS 控制台，还需要将 Amazon EFS `AmazonElasticFileSystemReadOnlyAccess` AWS 托管策略附加到实体。有关更多信息，请参阅《IAM 用户指南》**中的[为用户添加权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)。

可在以下位置查看 `AmazonElasticFileSystemReadOnlyAccess` 和其他 Amazon EFS 托管式服务策略：[AWS 亚马逊 EFS 的托管策略](security-iam-awsmanpol.md)。

## 示例：允许用户查看他们自己的权限
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

该示例说明了您如何创建策略，以允许 IAM 用户查看附加到其用户身份的内联和托管策略。此策略包括在控制台上或使用 AWS CLI 或 AWS API 以编程方式完成此操作的权限。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

## 示例：强制创建加密文件系统
<a name="using-iam-to-enforce-encryption-at-rest"></a>

以下示例说明了一个基于身份的策略，该策略允许主体仅创建加密文件系统。

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "elasticfilesystem:CreateFileSystem",
            "Condition": {
                "Bool": {
                    "elasticfilesystem:Encrypted": "true"
                }
            },
            "Resource": "*"
        }
    ]
}
```

如果将此策略分配给尝试创建未加密文件系统的用户，请求将失败。无论用户使用的是、、 AWS API 还是 SDK AWS 管理控制台，他们都会看到类似于以下内容的消息： AWS CLI

```
User: arn:aws:iam::111122223333:user/username is not authorized to
      perform: elasticfilesystem:CreateFileSystem on the specified resource.
```

## 示例：强制创建未加密文件系统
<a name="using-iam-to-enforce-unencrypted-file-systems"></a>

以下示例说明了一个基于身份的策略，该策略允许主体仅创建未加密的文件系统。

```
{
      "Statement": [
        {            
            "Effect": "Allow",
            "Action": "elasticfilesystem:CreateFileSystem",
            "Condition": {
                "Bool": {
                    "elasticfilesystem:Encrypted": "false"
                }
            },
            "Resource": "*"
        }
    ]
}
```

如果将此策略分配给尝试创建已加密文件系统的用户，请求将失败。无论用户使用的是、、 AWS API 还是 SDK AWS 管理控制台，他们都会看到类似于以下内容的消息： AWS CLI

```
User: arn:aws:iam::111122223333:user/username is not authorized to 
      perform: elasticfilesystem:CreateFileSystem on the specified resource.
```

您还可以通过创建 AWS Organizations 服务控制策略 (SCP) 强制创建加密或未加密的 EFS 文件系统。有关中服务控制策略的更多信息 AWS Organizations，请参阅《*AWS Organizations 用户指南》*中的[服务控制策略](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html#orgs_manage_policies_scp)。







# 适用于 Amazon EFS 的基于资源的策略示例
<a name="security_iam_resource-based-policy-examples"></a>

在本节中，您可以找到为各种 Amazon EFS 操作授予或拒绝权限的示例文件系统策略。EFS 文件系统策略有 2 万个字符的限制。有关基于资源的策略的元素的信息，请参阅[Amazon EFS 基于资源的策略](security_iam_service-with-iam.md#security_iam_service-with-iam-resource-based-policies)。

**重要**  
如果您在文件系统策略中向单个 IAM 用户或角色授予权限，则不要在策略在文件系统上有效时删除或重新创建该用户或角色。如果这样做，该用户或角色将实际在文件系统中锁定，并且将无法访问该用户或角色。有关更多信息，请参阅《IAM 用户指南》**中的[指定主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying)。

有关如何创建系统策略的信息，请参阅[创建文件系统策略](create-file-system-policy.md)。

**Topics**
+ [示例：向特定 AWS 角色授予读写权限](#file-sys-policy-readonly)
+ [示例：授予只读访问权限](#file-sys-policy-readonly)
+ [示例：授予对 EFS 接入点的访问权限](#file-sys-policy-accessprofile-efs)

## 示例：向特定 AWS 角色授予读写权限
<a name="file-sys-policy-readonly"></a>

在此示例中，EFS 文件系统策略具有以下特征：
+ 效果是 `Allow`。
+  AWS 账户中的主体设置为 Testing\$1Role。
+ 操作设置为 `ClientMount`（读取）和 `ClientWrite`。
+ 授予权限的条件设置为 `AccessedViaMountTarget`。

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/Testing_Role"
            },
            "Action": [
                "elasticfilesystem:ClientWrite",
                "elasticfilesystem:ClientMount"
            ],
            "Resource": "arn:aws:elasticfilesystem:us-east-2:111122223333:file-system/fs-1234abcd",
            "Condition": {
                "Bool": {
                    "elasticfilesystem:AccessedViaMountTarget": "true"
                }
            }
        }
    ]
}
```

## 示例：授予只读访问权限
<a name="file-sys-policy-readonly"></a>

以下文件系统策略仅向 `EfsReadOnly` IAM 角色授予 `ClientMount` 或只读权限。

```
{
    "Id": "read-only-example-policy02",
    "Statement": [
        {
            "Sid": "efs-statement-example02",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/EfsReadOnly"
            },
            "Action": [
                "elasticfilesystem:ClientMount"
            ],
            "Resource": "arn:aws:elasticfilesystem:us-east-2:111122223333:file-system/fs-12345678"            
        }
    ]
}
```

要了解如何设置其他文件系统策略，包括拒绝对所有 IAM 主体（特定管理工作站除外）的根访问权限，请参阅[使用 IAM 授权为 NFS 客户端启用根挤压](accessing-fs-nfs-permissions.md#enable-root-squashing)。

## 示例：授予对 EFS 接入点的访问权限
<a name="file-sys-policy-accessprofile-efs"></a>

您可以使用 EFS 访问策略向 NFS 客户端提供 EFS 文件系统上基于文件的共享数据集的应用程序特定视图。您可以使用文件系统策略向访问点授予对文件系统的权限。

此文件策略示例使用条件元素向由其 ARN 标识的特定访问点授予对文件系统的完全访问权限。

有关使用 EFS 接入点的更多信息，请参阅[使用接入点工作](efs-access-points.md)。

```
{
    "Id": "access-point-example03",
    "Statement": [
        {
            "Sid": "access-point-statement-example03",
            "Effect": "Allow",
            "Principal": {"AWS": "arn:aws:iam::555555555555:role/EfsAccessPointFullAccess"},
            "Action": "elasticfilesystem:Client*",
            "Resource": "arn:aws:elasticfilesystem:us-east-2:111122223333:file-system/fs-12345678",
            "Condition": { 
                "StringEquals": {
                    "elasticfilesystem:AccessPointArn":"arn:aws:elasticfilesystem:us-east-2:555555555555:access-point/fsap-12345678" } 
            }            
        }
    ]
}
```

# AWS 亚马逊 EFS 的托管策略
<a name="security-iam-awsmanpol"></a>

 AWS 托管策略是由创建和管理的独立策略 AWS。 AWS 托管策略旨在为许多常见用例提供权限，以便您可以开始为用户、组和角色分配权限。

请记住， AWS 托管策略可能不会为您的特定用例授予最低权限权限，因为它们可供所有 AWS 客户使用。我们建议通过定义特定于使用案例的[客户管理型策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)来进一步减少权限。

您无法更改 AWS 托管策略中定义的权限。如果 AWS 更新 AWS 托管策略中定义的权限，则更新会影响该策略所关联的所有委托人身份（用户、组和角色）。 AWS 最有可能在启动新的 API 或现有服务可以使用新 AWS 服务 的 API 操作时更新 AWS 托管策略。

有关更多信息，请参阅《IAM 用户指南》**中的 [AWS 托管式策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

## AWS 托管策略： AWSServiceRoleForAmazonElasticFileSystem
<a name="security-iam-manspol-slr"></a>

Amazon EFS 使用名`AWSServiceRoleForAmazonElasticFileSystem`为的服务相关角色允许 Amazon EFS 代表您管理 AWS 资源。此角色信任 `elasticfilesystem.amazonaws.com` 服务来代入相关角色。有关更多信息，请参阅 [对 Amazon EFS 使用服务相关角色](using-service-linked-roles.md)。

## AWS 托管策略： AmazonElasticFileSystemFullAccess
<a name="security-iam-awsmanpol-AmazonElasticFileSystemFullAccess"></a>

您可以将 `AmazonElasticFileSystemFullAccess` 策略附加到 IAM 身份。

此策略授予管理权限，允许对 Amazon EFS 进行完全访问并通过访问相关 AWS 服务 AWS 管理控制台。

**权限详细信息**

该策略包含以下权限。
+ `elasticfilesystem` – 允许主体在 Amazon EFS 控制台中执行所有操作。它还允许委托人使用 AWS Backup创建 (`elasticfilesystem:Backup`) 和恢复 (`elasticfilesystem:Restore`) 备份。
+ `cloudwatch`— 允许委托人在 Amazon EFS 控制台中描述亚马逊 CloudWatch 文件系统指标和某个指标的警报。
+ `ec2`— 允许委托人在 Amazon EFS 控制台中创建、删除和描述网络接口，描述和修改网络接口属性，描述可用区、安全组、子网、虚拟私有云 (VPCs) 以及与 EFS 文件系统关联的 VPC 属性。
+ `kms`— 允许委托人列出 AWS Key Management Service (AWS KMS) 密钥的别名并在 Amazon EFS 控制台中描述 KMS 密钥。
+ `iam`— 授予创建服务关联角色的权限，该角色允许 Amazon EFS 代表用户管理 AWS 资源。
+ `iam:PassRole` - 授予将 IAM 角色传递至 Amazon EFS 的权限。

要查看此策略的权限，请参阅《AWS 托管式策略参考指南》中**的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonElasticFileSystemFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonElasticFileSystemFullAccess.html)。

## AWS 托管策略： AmazonElasticFileSystemReadOnlyAccess
<a name="security-iam-awsmanpol-AmazonElasticFileSystemReadOnlyAccess"></a>

您可以将 `AmazonElasticFileSystemReadOnlyAccess` 策略附加到 IAM 身份。

此政策授予通过对 Amazon EFS 的只读访问权限 AWS 管理控制台。

**权限详细信息**

该策略包含以下权限。




+ `elasticfilesystem` – 允许主体在 Amazon EFS 控制台中描述 Amazon EFS 文件系统的属性，包括账户首选项、备份和文件系统策略、生命周期配置、挂载目标及其安全组、标签和接入点。
+ `cloudwatch`— 允许委托人在 Amazon EFS 控制台中检索 CloudWatch 指标并描述指标警报。
+ `ec2`— 允许委托人在 Amazon EFS 控制台中查看可用区、网络接口及其属性、 VPCs 安全组、子网及其属性。
+ `kms`— 允许委托人在 Amazon EFS 控制台中列出 AWS KMS 密钥的别名。

要查看此策略的权限，请参阅《AWS 托管式策略参考指南》中**的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonElasticFileSystemReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonElasticFileSystemReadOnlyAccess.html)。

## AWS 托管策略： AmazonElasticFileSystemClientFullAccess
<a name="security-iam-awsmanpol-AmazonElasticFileSystemClientFullAccess"></a>

可以将 `AmazonElasticFileSystemClientFullAccess` 策略附加到 IAM 实体。

此策略授予客户端对 EFS 文件系统的读写访问权限。此策略支持 NFS 客户端挂载、读取和写入 EFS 文件系统。

要查看此策略的权限，请参阅《AWS 托管式策略参考指南》中**的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonElasticFileSystemClientFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonElasticFileSystemClientFullAccess.html)。

## AWS 托管策略： AmazonElasticFileSystemClientReadWriteAccess
<a name="security-iam-awsmanpol-AmazonElasticFileSystemClientReadWriteAccess"></a>

可以将 `AmazonElasticFileSystemClientReadWriteAccess` 策略附加到 IAM 实体。

此策略授予客户端对 EFS 文件系统的读写访问权限。此策略支持 NFS 客户端挂载、读取和写入 EFS 文件系统。

要查看此策略的权限，请参阅《AWS 托管式策略参考指南》中**的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonElasticFileSystemClientReadWriteAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonElasticFileSystemClientReadWriteAccess.html)。

## Amazon EFS 更新 AWS 了托管策略
<a name="security-iam-awsmanpol-updates"></a>

查看自该服务开始跟踪这些更改以来对 Amazon EFS AWS 托管策略的更新的详细信息。要获得有关此页面更改的自动提示，请订阅 Amazon EFS [文档历史记录](document-history.md) 页面上的 RSS 源。


| 更改 | 描述 | 日期 | 
| --- | --- | --- | 
| 更新现有策略 |  策略：[AmazonElasticFileSystemFullAccess](#security-iam-awsmanpol-AmazonElasticFileSystemFullAccess) Amazon EFS 添加了以下策略： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/efs/latest/ug/security-iam-awsmanpol.html)  | 2024 年 11 月 7 日 | 
| 更新现有策略 |  策略：[AmazonElasticFileSystemServiceRolePolicy](using-service-linked-roles.md#slr-permissions) Amazon EFS 添加了 `ReplicationRead` 和 `ReplicationWrite` 策略，授予读取和写入文件系统数据以进行复制的权限。  | 2024 年 11 月 7 日 | 
| 更新现有策略 | 策略：[AmazonElasticFileSystemReadOnlyAccess](#security-iam-awsmanpol-AmazonElasticFileSystemReadOnlyAccess)Amazon EFS 添加了 `ReplicationRead` 操作，授予读取文件系统数据以进行复制的权限。 | 2024 年 11 月 7 日 | 
|  更新现有策略  | 策略：[AmazonElasticFileSystemReadOnlyAccess](#security-iam-awsmanpol-AmazonElasticFileSystemReadOnlyAccess)Amazon EFS 新增了权限，允许源账户和目标账户访问文件系统以进行跨账户复制。 | 2024 年 8 月 7 日 | 
|  更新现有策略  | 策略：[AmazonElasticFileSystemFullAccess](#security-iam-awsmanpol-AmazonElasticFileSystemFullAccess)Amazon EFS 添加了一项新权限，以允许主体禁用和启用文件系统的保护。需要这些权限才能允许 Amazon EFS 复制到现有文件系统。 | 2023 年 11 月 27 日 | 
|  更新现有策略  |  策略：[AmazonElasticFileSystemServiceRolePolicy](using-service-linked-roles.md#slr-permissions) Amazon EFS 添加了新的权限，允许主体创建、描述和删除 Amazon EFS 副本，以及创建 Amazon EFS 文件系统。需要这些权限才能允许 Amazon EFS 代表用户管理文件系统复制配置。  | 2022 年 1 月 25 日 | 
|  更新现有策略  |  策略：[AmazonElasticFileSystemReadOnlyAccess](#security-iam-awsmanpol-AmazonElasticFileSystemReadOnlyAccess) Amazon EFS 添加了一项新权限，允许主体描述 Amazon EFS 复制。需要这些权限才能允许用户查看文件系统复制配置。  | 2022 年 1 月 25 日 | 
| 更新现有策略 |  策略：[AmazonElasticFileSystemFullAccess](#security-iam-awsmanpol-AmazonElasticFileSystemFullAccess) Amazon EFS 添加了新的权限，允许主体创建、描述和删除 Amazon EFS 复制。需要这些权限才能允许用户管理文件系统复制配置。  | 2022 年 1 月 25 日 | 
|  已开启跟踪策略  |  策略：[AmazonElasticFileSystemClientReadWriteAccess](#security-iam-awsmanpol-AmazonElasticFileSystemClientReadWriteAccess) 向 NFS 客户端授予对 Amazon EFS 文件系统的读写权限。  | 2022 年 1 月 3 日 | 
|  已开启跟踪策略  | 策略：[AmazonElasticFileSystemServiceRolePolicy](using-service-linked-roles.md#slr-permissions)Amazon EFS 的服务相关角色权限。 |  2021 年 10 月 8 日  | 
|  更新现有策略  |  策略：[AmazonElasticFileSystemFullAccess](#security-iam-awsmanpol-AmazonElasticFileSystemFullAccess) Amazon EFS 添加了新权限，允许主体修改和描述 Amazon EFS 账户首选项。需要这些权限才能允许用户在 Amazon EFS 控制台中查看和设置账户首选项设置。  | 2021 年 5 月 7 日 | 
|  对现有策略的更新  |  策略：[AmazonElasticFileSystemReadOnlyAccess](#security-iam-awsmanpol-AmazonElasticFileSystemReadOnlyAccess) Amazon EFS 添加了新权限，允许主体描述 Amazon EFS 账户首选项。需要这些权限才能允许用户在 Amazon EFS 控制台中查看账户首选项设置。  | 2021 年 5 月 7 日 | 
|  Amazon EFS 已开始跟踪更改  |  Amazon EFS 开始跟踪其 AWS 托管策略的变更。  | 2021 年 5 月 7 日 | 

# 将标签与 Amazon EFS 一起使用
<a name="using-tags-efs"></a>

可以使用标签来控制对 Amazon EFS 资源的访问，并实现基于属性的访问权限控制（ABAC）。有关更多信息，请参阅:
+ [标记 EFS 资源](manage-fs-tags.md)
+ [根据资源上的标签控制访问权限](#resource-tag-control)
+ [ABAC 有什么用 AWS？](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) 在 *IAM 用户指南*中

**注意**  
Amazon EFS 复制不支持将标签用于基于属性的访问权限控制（ABAC）。

要在创建期间对 Amazon EFS 资源应用标签，用户必须具有某些 AWS Identity and Access Management （IAM）权限。

## 在创建过程中授予标记资源的权限
<a name="supported-iam-actions-tagging"></a>

以下标签创建 Amazon EFS API 操作允许您在创建资源时指定标签。
+ `CreateAccessPoint`
+ `CreateFileSystem`

 为使用户能够在创建时为资源添加标签，他们必须具有使用创建该资源的操作（如 `elasticfilesystem:CreateAccessPoint` 或 `elasticfilesystem:CreateFileSystem`）的权限。如果在资源创建操作中指定了标签，则会对该操作 AWS 执行额外授权，以验证用户是否有权创建标签。`elasticfilesystem:TagResource`因此，用户还必须具有使用 `elasticfilesystem:TagResource` 操作的显式权限。

在 `elasticfilesystem:TagResource` 操作的 IAM 策略定义中，使用带有 `Condition` 条件键的 `elasticfilesystem:CreateAction` 元素，为创建资源的操作授予添加标签的权限。

**Example 策略：仅允许在创建时向文件系统添加标签**  
下面的示例策略允许用户创建文件系统，并在创建期间向文件系统应用标签。用户无权标记任何现有资源 (他们无法直接调用 `elasticfilesystem:TagResource` 操作)。  

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "elasticfilesystem:CreateFileSystem"
      ],
      "Resource": "arn:aws:elasticfilesystem:region:account-id:file-system/*"
    },
    {
      "Effect": "Allow",
      "Action": [
         "elasticfilesystem:TagResource"
      ],
      "Resource": "arn:aws:elasticfilesystem:region:account-id:file-system/*",
      "Condition": {
         "StringEquals": {
             "elasticfilesystem:CreateAction": "CreateFileSystem"
          }
       }
    }
  ]
}
```

## 使用标签控制对 Amazon EFS 资源的访问权限
<a name="restrict-efs-access-tags"></a>

要控制对 Amazon EFS 资源和操作的访问权限，您可以根据标签使用 IAM 策略。您可以使用两种方法提供此类控制：
+ 您可以根据这些资源上的标签控制对 Amazon EFS 资源的访问权限。
+ 您可以控制在 IAM 请求条件中传递哪些标签。

有关如何使用标签控制 AWS 资源访问的信息，请参阅 *IAM 用户指南*中的[使用标签控制访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)。

## 根据资源上的标签控制访问权限
<a name="resource-tag-control"></a>

要控制用户或角色可以对 Amazon EFS 资源执行的操作，您可以使用资源上的标签。例如，您可能希望根据文件系统资源上的标签的键/值对允许或拒绝对该资源执行特定的 API 操作。

**Example 策略：仅在使用特定标签时创建文件系统**  

只有当用户使用特定标签键值对标记文件系统时，以下示例策略才允许用户创建文件系统，在本示例中为 `key=Department`，`value=Finance`。

```
{
    "Effect": "Allow",
    "Action": [
        "elasticfilesystem:CreateFileSystem",
        "elasticfilesystem:TagResource"
    ],
    "Resource": "arn:aws:elasticfilesystem:region:account-id:file-system/*",
    "Condition": {
        "StringEquals": {
            "aws:RequestTag/Department": "Finance"
        }
    }
}
```

**Example 策略：删除带有特定标签的文件系统**  

以下示例策略只允许用户删除带有 `Department=Finance` 标签的文件系统。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticfilesystem:DeleteFileSystem"
            ],
            "Resource": "arn:aws:elasticfilesystem:us-east-1:111122223333:file-system/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Department": "Finance"
                }
            }
        }
    ]
}
```

------

# 对 Amazon EFS 使用服务相关角色
<a name="using-service-linked-roles"></a>

Amazon EFS 使用 AWS Identity and Access Management (IAM) [服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。Amazon EFS 服务相关角色是一种独特类型的 IAM 角色，它与 Amazon EFS 直接相关。预定义的 Amazon EFS 服务相关角色包括该服务 AWS 服务 代表您呼叫他人所需的权限。

服务相关角色可让您更轻松地设置 Amazon EFS，因为您不必手动添加必要的权限。Amazon EFS 定义了其服务相关角色的权限，并且仅 Amazon EFS 可以代入其角色。定义的权限包括信任策略和权限策略，以及不能附加到任何其他 IAM 实体的权限策略。

只有在先删除您的 Amazon EFS 文件系统后，才能删除 Amazon EFS 服务相关角色。这将保护您的 Amazon EFS 资源，因为您不会无意中删除对资源的访问权限。

服务相关角色允许通过 AWS CloudTrail查看所有 API 调用。这样便于满足监控和审核要求，因为您可以跟踪 Amazon EFS 代表您执行的所有操作。有关更多信息，请参阅 [EFS 服务相关角色的日志条目](logging-using-cloudtrail.md#efs-service-linked-role-ct)。

有关更多信息，请参阅*《IAM 用户指南》*中的[服务关联角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## Amazon EFS 的服务相关角色权限
<a name="slr-permissions"></a>

Amazon EFS 使用名**AWSServiceRoleForAmazonElasticFileSystem**为的服务相关角色允许 Amazon EFS 代表您的 EFS 文件系统调用和管理 AWS 资源。

 AWSServiceRoleForAmazonElasticFileSystem 服务相关角色信任代`elasticfilesystem.amazonaws.com`入该角色。

角色权限策略允许 Amazon EFS 完成策略定义 JSON 中包含的操作：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "backup-storage:MountCapsule",
                "ec2:CreateNetworkInterface",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeNetworkInterfaceAttribute",
                "ec2:ModifyNetworkInterfaceAttribute",
                "tag:GetResources"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:*:*:key/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "backup:CreateBackupVault",
                "backup:PutBackupVaultAccessPolicy"
            ],
            "Resource": [
                "arn:aws:backup:*:*:backup-vault:aws/efs/automatic-backup-vault"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "backup:CreateBackupPlan",
                "backup:CreateBackupSelection"
            ],
            "Resource": [
                "arn:aws:backup:*:*:backup-plan:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreateServiceLinkedRole"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:AWSServiceName": [
                        "backup.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::*:role/aws-service-role/backup.amazonaws.com/AWSServiceRoleForBackup"
            ],
            "Condition": {
                "StringLike": {
                    "iam:PassedToService": "backup.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "elasticfilesystem:DescribeFileSystems",
                "elasticfilesystem:CreateReplicationConfiguration",
                "elasticfilesystem:DescribeReplicationConfigurations",
                "elasticfilesystem:DeleteReplicationConfiguration",
                "elasticfilesystem:ReplicationRead",
                "elasticfilesystem:ReplicationWrite"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**注意**  
在创建静态加密的新 EFS 文件系统 AWS KMS 时，您必须手动配置 IAM 权限。要了解更多信息，请参阅[加密静态数据](encryption-at-rest.md)。

您必须配置权限，允许 IAM 实体（如用户、组或角色）创建、编辑或删除服务关联角色。有关更多信息，请参阅《IAM 用户指南》**中的[服务相关角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## 为 Amazon EFS 创建服务相关角色
<a name="create-slr"></a>

在大多数情况下，无需手动创建服务相关角色。当您在 AWS 管理控制台、或 AWS API 中为 EFS 文件系统创建挂载目标或复制配置时 AWS CLI，Amazon EFS 会为您创建服务相关角色。

此外，如果您手动删除此角色 service-linked-role，然后需要重新创建，则可以使用相同的过程在您的账户中重新创建该角色。当您为 EFS 文件系统创建挂载目标或复制配置时，Amazon EFS 将为您创建服务相关角色。

但是，如果 Amazon EFS 没有创建， service-linked-role或者如果您在 Amazon EFS 支持服务相关角色之前就开始使用，则可以手动创建服务相关角色。有关说明，请参阅《IAM 用户指南》**中的[创建服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html)。

## 为 Amazon EFS 编辑服务相关角色
<a name="edit-slr"></a>

Amazon EFS 不允许您编辑 `AWSServiceRoleForAmazonElasticFileSystem` 服务相关角色。创建服务关联角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。有关更多信息，请参阅《IAM 用户指南》**中的[更新服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-service-linked-role.html)。

## 删除 Amazon EFS 的服务相关角色
<a name="delete-slr"></a>

如果您不再需要使用某个需要服务相关角色的功能或服务，我们建议您删除该角色。这样您就没有未被主动监控或维护的未使用实体。但是，您必须先清除服务相关角色的资源，然后才能手动删除它。有关更多信息，请参阅 [清理资源并保护您的 AWS 账户](getting-started.md#gs-step-five-cleanup)。

**注意**  
如果当您尝试删除资源时 Amazon EFS 服务正在使用该角色，则删除操作可能会失败。如果发生这种情况，请等待几分钟后重试。

使用 IAM 控制台 AWS CLI、或 AWS API 删除 AWSServiceRoleForAmazonElasticFileSystem服务相关角色。有关更多信息，请参阅《IAM 用户指南》**中的[删除服务关联角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html#id_roles_manage_delete_slr)。

## Amazon EFS 服务相关角色支持的区域
<a name="regions-slr"></a>

Amazon EFS 支持在所有提供服务 AWS 区域 的地方使用与服务相关的角色。有关更多信息，请参阅*《AWS 一般参考 用户指南》*中的 [AWS 服务端点](https://docs.aws.amazon.com/general/latest/gr/rande.html)。

# Amazon Elastic File System 身份和访问问题排查
<a name="security_iam_troubleshoot"></a>

您可以使用以下信息，帮助诊断和修复在使用 Amazon EFS 和 IAM 时可能遇到的常见问题。

**Topics**
+ [我无权在 Amazon EFS 中执行操作](#security_iam_troubleshoot-no-permissions)
+ [我无权执行 iam：PassRole](#security_iam_troubleshoot-passrole)
+ [我想允许我以外的人访问我 AWS 账户 的 Amazon EFS 资源](#security_iam_troubleshoot-cross-account-access)

## 我无权在 Amazon EFS 中执行操作
<a name="security_iam_troubleshoot-no-permissions"></a>

如果您收到错误提示，指明您无权执行某个操作，则必须更新策略以允许执行该操作。

当 `mateojackson` IAM 用户尝试使用控制台查看有关虚构 `my-example-widget` 资源的详细信息，但不拥有虚构 `elasticfilesystem:GetWidget` 权限时，会发生以下示例错误。

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: elasticfilesystem:GetWidget on resource: my-example-widget
```

在此情况下，必须更新 `mateojackson` 用户的策略，以允许使用 `elasticfilesystem:GetWidget` 操作访问 `my-example-widget` 资源。

如果您需要帮助，请联系您的 AWS 管理员。您的管理员是提供登录凭证的人。

## 我无权执行 iam：PassRole
<a name="security_iam_troubleshoot-passrole"></a>

如果您收到一个错误，指明您无权执行 `iam:PassRole` 操作，则必须更新策略以允许您将角色传递给 Amazon EFS。

有些 AWS 服务 允许您将现有角色传递给该服务，而不是创建新的服务角色或服务相关角色。为此，您必须具有将角色传递到服务的权限。

当名为 `marymajor` 的 IAM 用户尝试使用控制台在 Amazon EFS 中执行操作时，会发生以下示例错误。但是，服务必须具有服务角色所授予的权限才可执行此操作。Mary 不具有将角色传递到服务的权限。

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

在这种情况下，必须更新 Mary 的策略以允许她执行 `iam:PassRole` 操作。

如果您需要帮助，请联系您的 AWS 管理员。您的管理员是提供登录凭证的人。

## 我想允许我以外的人访问我 AWS 账户 的 Amazon EFS 资源
<a name="security_iam_troubleshoot-cross-account-access"></a>

您可以创建一个角色，以便其他账户中的用户或您组织外的人员可以使用该角色来访问您的资源。您可以指定谁值得信赖，可以代入角色。对于支持基于资源的策略或访问控制列表 (ACLs) 的服务，您可以使用这些策略向人们授予访问您的资源的权限。

要了解更多信息，请参阅以下内容：
+ 要了解 Amazon EFS 是否支持这些功能，请参阅[Amazon Elastic File System 如何与 IAM 配合使用](security_iam_service-with-iam.md)。
+ 要了解如何提供对您拥有的资源的访问权限 AWS 账户 ，请参阅 [IAM 用户*指南中的向您拥有 AWS 账户 的另一个 IAM 用户*提供访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)权限。
+ 要了解如何向第三方提供对您的资源的访问[权限 AWS 账户，请参阅 *IAM 用户指南*中的向第三方提供](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)访问权限。 AWS 账户 
+ 要了解如何通过身份联合验证提供访问权限，请参阅《IAM 用户指南》**中的[为经过外部身份验证的用户（身份联合验证）提供访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)。
+ 要了解使用角色和基于资源的策略进行跨账户访问之间的差别，请参阅《IAM 用户指南》**中的 [IAM 中的跨账户资源访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

# 使用 IAM 控制文件系统访问
<a name="iam-access-control-nfs-efs"></a>

您可以使用 IAM 身份策略和资源策略，以针对云环境可扩展和优化的方式控制客户端对 Amazon EFS 资源的访问。通过使用 IAM，您可以允许客户端对文件系统执行特定操作，包括只读、写入和根访问。对 IAM 身份策略***或*文件系统资源策略中的操作的“允许”权限允许访问该操作。无需在身份策略*和*资源策略中*同时*授予此权限。

 NFS 客户端可以在连接到 EFS 文件系统时使用 IAM 角色标识自己。当客户端连接到文件系统时，Amazon EFS 会评估文件系统的 IAM 资源策略（称为文件系统策略）以及任何基于身份的 IAM 策略，以确定要授予的相应文件系统访问权限。

当您对 NFS 客户端使用 IAM 授权时，客户端连接和 IAM 授权决策将记录到 AWS CloudTrail。有关如何使用记录 Amazon EFS API 调用的更多信息 CloudTrail，请参阅[使用记录 Amazon EFS API 调用 AWS CloudTrail](logging-using-cloudtrail.md)。

**重要**  
必须使用 EFS 挂载帮助程序挂载 EFS 文件系统，才能使用 IAM 授权来控制客户端访问。有关更多信息，请参阅 [使用 IAM 授权挂载](mounting-IAM-option.md)。

## 默认 EFS 文件系统策略
<a name="default-filesystempolicy"></a>

默认 EFS 文件系统策略不使用 IAM 进行身份验证，它向可以使用挂载目标连接到文件系统的任何匿名客户端授予完全访问权限。每当用户配置的文件系统策略不生效时（包括在创建文件系统时），默认策略将生效。每当默认文件系统策略生效时，`DescribeFileSystemPolicy` API 操作都会返回 `PolicyNotFound` 响应。

## 客户端的 EFS 操作
<a name="efs-filesystempolicy-actions"></a>

您可以为使用文件系统策略访问文件系统的客户端指定以下操作。


| Action | 说明 | 
| --- | --- | 
|  `elasticfilesystem:ClientMount`  |  提供对文件系统的只读访问权限。  | 
|  `elasticfilesystem:ClientWrite`  |  提供对文件系统的写入权限。  | 
|  `elasticfilesystem:ClientRootAccess`  |  提供在访问文件系统时使用根用户的权限。  | 

## 客户端的 EFS 条件键
<a name="efs-condition-keys-for-nfs"></a>

要表示条件，您可以使用预定义的条件键。Amazon EFS 为 NFS 客户端提供了以下预定义的条件键。使用 IAM 控制来保护对 EFS 文件系统的访问时，不会强制执行任何其他条件键。


| EFS 条件键 | 说明 | 运算符 | 
| --- | --- | --- | 
| aws:SecureTransport |  使用此键可要求客户端在连接到 EFS 文件系统时使用 TLS。  |  布尔值  | 
| aws:SourceIp | 使用此键可将请求者的 IP 地址与您在策略中指定的 IP 地址进行比较。aws:SourceIp 条件键只能用于公有 IP 地址范围。 | 字符串 | 
| elasticfilesystem:AccessPointArn | 客户端正在连接到的 EFS 接入点的 ARN。 | 字符串 | 
| elasticfilesystem:AccessedViaMountTarget | 使用此键可防止未使用文件系统挂载目标的客户机访问 EFS 文件系统。 | 布尔值 | 

## 文件系统策略示例
<a name="file-system-policy-examples"></a>

要查看 Amazon EFS 文件系统策略的示例，请参阅[适用于 Amazon EFS 的基于资源的策略示例](security_iam_resource-based-policy-examples.md)。

# Amazon EFS 的合规性验证
<a name="EFS-compliance"></a>

要了解某个 AWS 服务是否在特定合规性计划范围内，请参阅[合规性计划范围内的 AWS 服务](https://aws.amazon.com/compliance/services-in-scope/)，然后选择您感兴趣的合规性计划。有关常规信息，请参阅 [AWS 合规性计划](https://aws.amazon.com/compliance/programs/)、、。

您可以使用 AWS Artifact 下载第三方审计报告。有关更多信息，请参阅[在 AWS Artifact 中下载报告](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)、。

您在使用 AWS 服务 时的合规性责任由您的数据的敏感性、您公司的合规性目标以及适用的法律法规决定。有关您在使用 AWS 服务时的合规责任的更多信息，请参阅 [AWS 安全性文档](https://docs.aws.amazon.com/security/)。

# Amazon EFS 中的韧性
<a name="disaster-recovery-resiliency"></a>

AWS 全球基础设施围绕 AWS 区域和可用区（AZ）构建。AWS 区域 提供多个在物理上独立且隔离的可用区，这些可用区与延迟率低、吞吐量高且冗余性高的网络连接在一起。利用可用区，您可以设计和操作在可用区之间无中断地自动实现失效转移的应用程序和数据库。与传统的单个或多个数据中心基础设施相比，可用区具有更高的可用性、容错性和可扩展性。

Amazon EFS 文件系统可灵活应对 AWS 区域中的一个或多个可用区故障。挂载目标本身设计为具有高可用性。在设计实现高可用性和失效转移到其它可用区的功能时，请务必注意，尽管在每个 AZ 中，您的挂载目标的 IP 地址和 DNS 都是静态的，但它们是由多个资源支持的冗余组件。有关更多信息，请参阅 [如何将 Amazon EFS 与 Amazon EC2 结合使用](how-it-works.md#how-it-works-ec2)。

有关 AWS 区域和可用区的更多信息，请参阅 [AWS 全球基础设施](https://aws.amazon.com/about-aws/global-infrastructure/)。

# 控制 NFS 客户端对 EFS 文件系统的网络访问
<a name="NFS-access-control-efs"></a>

您可以使用网络层安全性和 EFS 文件系统策略控制 NFS 客户端对 Amazon EFS 文件系统的访问。您可以使用 Amazon EC2 提供的网络层安全机制，例如 VPC 安全组规则和网络 ACLs。您还可以使用 AWS IAM 通过 EFS 文件系统策略和基于身份的策略来控制 NFS 访问权限。

**Topics**
+ [使用 VPC 安全组](network-access.md)
+ [使用 Amazon EFS 中的接口 VPC 端点](efs-vpc-endpoints.md)

# 使用 VPC 安全组
<a name="network-access"></a>

使用 Amazon EFS 时，需要为 EC2 实例指定 VPC 安全组，并为与文件系统关联的 EFS 挂载目标指定安全组。安全组将充当防火墙，您添加的规则将定义流量。在[入门练习](getting-started.md)中，您在启动 EFS 实例时创建了一个安全组。然后，您将另一个安全组与 EFS 挂载目标相关联（即，您的默认 VPC 的默认安全组）。这种方法适用于入门练习。但对于生产系统，应设置具有用于 Amazon EFS 的最低权限的安全组。

您可以为您的 EFS 文件系统授予入站和出站访问权限。为此，您添加一些规则，以支持 EFS 实例使用网络文件系统（NFS）端口通过挂载目标连接到 EFS 文件系统。
+ 每个挂载文件系统的 EC2 实例都必须有一个安全组，其规则应支持在 **NFS 端口 2049** 上对挂载目标进行出站访问。
+ EFS 挂载目标需要有一个安全组，其规则应支持从待挂载文件系统的每个 EC2 实例通过 NFS 端口 2049 进行入站访问。

下表显示了所需的特定安全组规则：


| 安全组 | 规则类型 | 协议 | 端口： | 源/目标 | 
| --- | --- | --- | --- | --- | 
| EC2 实例 | 出站 | TCP | 2049 | 挂载目标安全组 | 
| 挂载目标 | 入站 | TCP | 2049 | EC2 实例安全组 | 

## 使用 Amazon EFS 的源端口
<a name="source-ports"></a>

为了支持各种不同的 NFS 客户端，Amazon EFS 允许来自任何源端口的连接。如果您要求仅授权的用户可以访问 Amazon EFS，我们建议您使用以下客户端防火墙规则。使用 SSH 连接到文件系统并运行以下命令：

```
iptables -I OUTPUT 1 -m owner --uid-owner 1-4294967294 -m tcp -p tcp --dport 2049 -j DROP
```

该命令在 OUTPUT 链 (`-I OUTPUT 1`) 开头插入新的规则。该规则禁止任何未授权的非内核进程（`-m owner --uid-owner 1-4294967294`）打开到 NFS 端口 2049（`-m tcp -p tcp –dport 2049`）的连接。

## 网络访问的安全注意事项
<a name="sg-information"></a>

NFS 4.1 (NFSv4.1) 版本的客户机只有在能够与文件系统挂载目标之一的 NFS 端口（TCP 端口 2049）建立网络连接时才能装载文件系统。同样， NFSv4.1 客户端只有在能够建立网络连接的情况下才能在访问文件系统时声明用户和组 ID。

能否使此网络连接由以下各因素共同决定：
+ **由挂载目标的 VPC 提供的网络隔离** – 文件系统挂载目标不能具有关联的公有 IP 地址。可挂载文件系统的唯一目标包括：
  + 本地 VPC 中的 Amazon EC2 实例
  + 已连接的 EC2 实例 VPCs
  + 使用 AWS Direct Connect 和 AWS Virtual Private Network (VPN) 连接到 Amazon VPC 的本地服务器
+ **客户端和挂载目标的 VPC 子网的网络访问控制列表 (ACLs)，用于从挂载目标子网外部进行访问** — 要挂载文件系统，客户端必须能够与挂载目标的 NFS 端口 2049 建立 TCP 连接并接收返回流量。
+ **客户端和挂载目标的 VPC 安全组的规则（用于所有访问）** – 要使 EC2 实例能够挂载文件系统，以下安全组规则必须生效：
  +  文件系统必须具有一个挂载目标，其网络接口具有的安全组的规则支持在 NFS 端口 2049 上具有来自实例的入站连接。您可以按 IP 地址（CIDR 范围）或安全组启用入站连接。挂载目标网络接口上的入站 NFS 端口的安全组规则来源是文件系统访问控制的关键要素。文件系统挂载目标的网络接口不使用 NFS 端口 2049 以外的入站规则以及任何出站规则。
  +  挂载实例必须具有一个网络接口，其安全组规则支持建立到文件系统的某个挂载目标上的 NFS 端口 2049 的出站连接。您可以按 IP 地址（CIDR 范围）或安全组启用出站连接。

有关更多信息，请参阅 [管理挂载目标](accessing-fs.md)。

## 创建安全组
<a name="security-group-create"></a>

**为 EC2 实例和 EFS 挂载目标创建安全组**

以下是为 Amazon EFS 创建安全组时要执行的一般步骤。有关创建安全组的说明，请参阅《Amazon VPC 用户指南**》中的[创建安全组](https://docs.aws.amazon.com/vpc/latest/userguide/creating-security-groups.html)。

1. 对于 EC2 实例，请使用以下规则创建安全组：
   + 入站规则，支持在**端口 22** 上使用 Secure Shell（SSH）从您的 IP 地址或网络进行入站访问。或者，限制**源**地址以提高安全性。
   + 出站规则，支持通过 NFS 端口 2049 对挂载目标安全组进行出站访问。将挂载目标安全组识别为目标。

1. 对于 EFS 挂载目标，请使用以下规则创建安全组：
   + 入站规则，支持通过 NFS 端口 2049 从 EC2 安全组进行访问。将 EC2 安全组识别为源。
**注意**  
您不需要添加出站规则，因为默认出站规则支持所有出站流量。

# 使用 Amazon EFS 中的接口 VPC 端点
<a name="efs-vpc-endpoints"></a>

要在虚拟私有云（VPC）与 Amazon EFS API 之间建立专用连接，可以创建接口 VPC 端点。端点提供与 Amazon EFS API 的安全连接，无需互联网网关、NAT 实例或虚拟专用网络（VPN）连接。有关更多信息，请参阅 *Amazon VPC 用户指南中的使用接口 VPC* [终端节点访问 AWS 服务](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)。

接口 VPC 终端节点由 AWS PrivateLink该功能提供支持，该功能允许使用私有 IP 地址在 AWS 服务之间进行私有通信。要使用 AWS PrivateLink，请使用亚马逊 VPC 控制台、API 或 CLI 在您的 VPC 中为 Amazon EFS 创建接口 VPC 终端节点。这样做会使用为 Amazon EFS API 请求提供服务的私有 IP 地址在您的子网中创建一个弹性网络接口。您还可以 VPCs 使用 Site-to-Site VPN、 Direct Connect或 VPC 对等从本地环境或其他环境访问 VPC 终端节点。有关更多信息，请参阅《Amazon VPC 用户指南》**中的[使用 AWS PrivateLink将 VPC 连接到服务](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-overview.html)。

## 为 Amazon EFS 创建接口端点
<a name="create-vpce-efs"></a>

要为 Amazon EFS 创建接口 VPC 端点，请执行以下操作之一：
+ `com.amazonaws.region.elasticfilesystem` – 为 Amazon EFS API 操作创建端点。
+ **`com.amazonaws.region.elasticfilesystem-fips`** – 为 Amazon EFS API 创建符合[美国联邦信息处理标准（FIPS）140-2](https://aws.amazon.com/compliance/fips/) 的端点。

有关 Amazon EFS 端点的完整列表，请参阅《Amazon Web Services 一般参考》中的 [Amazon Elastic File System 的端点和配额](https://docs.aws.amazon.com/general/latest/gr/elasticfilesystem.html)**。

有关如何创建接口终端节点的更多信息，请参阅 *Amazon VPC 用户指南中的使用接口 VPC* [终端节点访问 AWS 服务](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)。

## 为 Amazon EFS 创建 VPC 端点策略
<a name="create-vpce-policy-efs"></a>

要控制对 Amazon EFS API 的访问权限，您可以将 AWS Identity and Access Management (IAM) 策略附加到您的 VPC 终端节点。此策略指定以下内容：
+ 可执行操作的主体。
+ 可执行的操作。
+ 可对其执行操作的资源。

有关更多信息，请参阅《*Amazon VPC 用户指南*》中的[使用端点策略控制对 VPC 端点的访问](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

以下示例显示了一个 VPC 终端节点策略，该策略拒绝所有人通过终端节点创建 EFS 文件系统的权限。示例策略还授予所有人执行所有其他操作的权限。

```
{
   "Statement": [
        {
            "Action": "*",
            "Effect": "Allow",
            "Resource": "*",
            "Principal": "*"
        },
        {
            "Action": "elasticfilesystem:CreateFileSystem",
            "Effect": "Deny",
            "Resource": "*",
            "Principal": "*"
        }
    ]
}
```

# 网络文件系统（NFS）级别用户、组和权限
<a name="accessing-fs-nfs-permissions"></a>

创建文件系统后，默认情况下，只有根用户 (UID 0) 具有读取、写入和执行权限。为了让其他用户也能修改文件系统，根用户必须明确授予他们访问权限。您可以使用访问点自动创建非根用户可从中写入的目录。有关更多信息，请参阅 [使用接入点工作](efs-access-points.md)。

EFS 文件系统对象具有关联的 Unix 风格模式。此模式值定义了对该对象执行操作的权限。熟悉 Unix 风格系统的用户可以轻松了解 Amazon EFS 在这些权限方面的行为。

此外，在 Unix 风格的系统上，用户和组被映射到数字标识符，Amazon EFS 使用这些标识符来表示文件所有权。对于 Amazon EFS，文件系统对象（即文件、目录等）由单个所有者和单个组拥有。当用户尝试访问文件系统对象时 IDs ，Amazon EFS 使用映射的数字来检查权限。

**注意**  
NFS 协议支持每个用户最多 16 个组 IDs (GIDs)，任何其他组 GIDs 都将从 NFS 客户端请求中截断。有关更多信息，请参阅 [拒绝访问 NFS 文件系统上允许的文件](troubleshooting-efs-general.md#nfs-16-group-limit)。

下面，您可以找到权限示例以及有关 Amazon EFS 的 NFS 权限注意事项的讨论。

**Topics**
+ [文件和目录权限](user-and-group-permissions.md)
+ [EFS 文件系统使用案例和权限示例](#accessing-fs-nfs-permissions-ex-scenarios)
+ [文件系统中文件和目录的用户和组 ID 权限](#accessing-fs-nfs-permissions-uid-gid)
+ [无根挤压](#accessing-fs-nfs-permissions-root-user)
+ [权限缓存](#accessing-fs-nfs-permissions-caching)
+ [更改文件系统对象所有权](#accessing-fs-nfs-permissions-chown-restricted)
+ [EFS 接入点](#accessing-fs-nfs-permissions-access-points)

# 文件和目录权限
<a name="user-and-group-permissions"></a>

除非被 EFS 接入点覆盖，否则 EFS 文件系统中的文件和目录支持基于挂载 NFSv4 .1 客户端声明的用户和组 ID 的标准 Unix 样式的读取、写入和执行权限。 有关更多信息，请参阅 [网络文件系统（NFS）级别用户、组和权限](accessing-fs-nfs-permissions.md)。

**注意**  
默认情况下，这一层访问控制取决于对 NFSv4 .1 客户端的用户和组 ID 的信任。您可以使用 AWS Identity and Access Management (IAM) 基于资源的策略和身份策略对 NFS 客户端进行授权，并提供只读、写入和根访问权限。您可以使用 EFS 访问点覆盖 NFS 客户端提供的操作系统用户和组标识信息。有关更多信息，请参阅[使用 IAM 控制文件系统访问](iam-access-control-nfs-efs.md)和[创建接入点](create-access-point.md)。

文件和目录的读取、写入和执行权限的一个示例是，Alice 可能有权在文件系统上的个人目录 `/alice` 中读取和写入所需的任何文件。不过，在本示例中，不允许 Alice 在同一文件系统上的 Mark 个人目录 `/mark` 中读取或写入任何文件。允许 Alice 和 Mark 读取共享目录 `/share` 中的文件，但不能在其中写入文件。

## EFS 文件系统使用案例和权限示例
<a name="accessing-fs-nfs-permissions-ex-scenarios"></a>

创建 EFS 文件系统并在 VPC 中创建该文件系统的挂载目标后，您可以将远程文件系统本地挂载到您的 Amazon EC2 实例上。`mount` 命令可以挂载文件系统中的任何目录。不过，在您首次创建文件系统时，只有 `/` 处的一个根目录。根用户和根组拥有挂载的目录。

以下 `mount` 命令将由文件系统 DNS 名称标识的 Amazon EFS 文件系统的根目录挂载到 `/efs-mount-point` 本地目录中。

```
sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.efs.aws-region.amazonaws.com:/ efs-mount-point
```

初始权限模式可授予以下权限：
+ 对所有者*根*目录的 `read-write-execute` 权限
+ 对组*根*目录的 `read-execute` 权限 
+ 对其他目录的 `read-execute` 权限

只有根用户可以修改此目录。根用户还可以向其他用户授予对此目录的写入权限。例如：
+ 创建可写的每用户子目录。有关 step-by-step说明，请参阅[教程：创建可写的每用户子目录](accessing-fs-nfs-permissions-per-user-subdirs.md)。
+ 支持用户写入 EFS 文件系统根目录。具有根用户权限的用户可以向其他用户授予访问该文件系统的权限。
  + 要将 EFS 文件系统所有权更改为非*根*用户和组，请使用以下命令：

    ```
    $ sudo chown user:group /EFSroot
    ```
  + 要更改文件系统的权限使其更加宽松，请使用以下命令：

    ```
    $ sudo chmod 777 /EFSroot
    ```

    此命令向安装了文件系统的所有 EC2 实例上的所有用户授予 read-write-execute权限。

## 文件系统中文件和目录的用户和组 ID 权限
<a name="accessing-fs-nfs-permissions-uid-gid"></a>

EFS 文件系统中的文件和目录支持基于用户 ID 和组的标准 UNIX 式读取、写入和执行权限。 IDs当 NFS 客户端在不使用访问点的情况下挂载 EFS 文件系统时，客户端提供的用户 ID 和组 ID 将受信任。您可以使用 EFS 接入点来覆盖 NFS 客户端 IDs 使用的用户 ID 和组。当用户尝试访问文件和目录时，Amazon EFS 会检查其用户 IDs 和群组， IDs 以验证每个用户是否有权访问这些对象。Amazon EFS 还使用它们 IDs 来指明用户创建的新文件和目录的所有者和群组所有者。Amazon EFS 不会检查用户或组的名称，它仅使用数字标识符。

**注意**  
在 EC2 实例上创建用户时，可为用户分配任何数字用户 ID (UID) 和组 ID (GID)。在 Linux 系统上，数字用户 IDs 是在`/etc/passwd`文件中设置的。数字组 IDs 在`/etc/group`文件中。这些文件定义名称与 ID 之间的映射。在 EC2 实例之外，Amazon EFS 不对这些实例执行任何身份验证 IDs，包括根 ID 为 0。

如果用户从两个不同的 EC2 实例访问 EFS 文件系统，根据用户的 UID 在这些实例上是相同还是不同，您会看到如下所示的不同行为：
+ 如果两个 EC2 实例上的用户 ID 相同，Amazon EFS 会将其视为指明同一用户，而不考虑他们使用的 EC2 实例。从两个 EC2 实例访问文件系统的用户体验相同。
+ 如果两个 EC2 实例上的用户 ID 不相同，则 Amazon EFS 会将其视为不同的用户。从两个不同的 EC2 实例访问 EFS 文件系统的用户体验不相同。
+ 如果不同 EC2 实例上的两个不同用户共享一个 ID，则 Amazon EFS 会将其视为同一个用户。

您可以考虑以统一方式管理 EC2 实例间的用户标识映射。用户可以使用 `id` 命令检查其数字 ID。

```
$ id 

uid=502(joe) gid=502(joe) groups=502(joe)
```

### 关闭 ID 映射器
<a name="accessing-fs-nfs-permissions-id-mapper"></a>

操作系统中的 NFS 实用程序包括一个名为 ID 映射器的守护程序，用于管理用户名和之间的映射。 IDs在 Amazon Linux 中，该守护程序称为 `rpc.idmapd`，在 Ubuntu 中称为 `idmapd`。它能将用户和组 ID 转换为名称，以及反向转换。但是，Amazon EFS 仅处理数字 ID。我们建议您在 EC2 实例上关闭此进程。在 Amazon Linux 上，ID 映射器通常处于禁用状态，且不启用它。要关闭 ID 映射器，请使用如下所示的命令。

```
$  service rpcidmapd status
$  sudo service rpcidmapd stop
```

## 无根挤压
<a name="accessing-fs-nfs-permissions-root-user"></a>

默认情况下，EFS 文件系统上禁用根挤压。Amazon EFS 的行为与 `no_root_squash` 的 Linux NFS 服务器类似。如果用户或组 ID 为 0，Amazon EFS 会将该用户视为 `root` 用户，并绕过权限检查（允许访问和修改所有文件系统对象）。当 AWS Identity and Access Management (AWS IAM) 身份或资源策略不允许访问`ClientRootAccess`操作时，可以在客户端连接上启用根压缩。当根挤压处于启用状态时，根用户将被转换为在 NFS 服务器上具有有限权限的用户。

有关更多信息，请参阅 [使用 IAM 控制文件系统访问](iam-access-control-nfs-efs.md)。

### 使用 IAM 授权为 NFS 客户端启用根挤压
<a name="enable-root-squashing"></a>

您可以将 Amazon EFS 配置为阻止除单个管理工作站之外的所有 AWS 委托人以 root 权限访问您的 EFS 文件系统。可以通过为网络文件系统（NFS）客户端配置 AWS Identity and Access Management （IAM）授权来执行此操作。

为此，需要配置两个 IAM 权限策略，如下所示：
+ 创建 EFS 文件系统策略，该策略明确允许对文件系统进行读取和写入访问，并隐式拒绝根访问。
+ 使用 EC2 实例配置文件将 IAM 身份分配给需要对文件系统进行根访问的 Amazon EC2 管理工作站。有关 Amazon EC2 实例配置文件的更多信息，请参阅《AWS Identity and Access Management 用户指南》**中的[使用实例配置文件](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)。
+ 将`AmazonElasticFileSystemClientFullAccess` AWS 托管策略分配给管理工作站的 IAM 角色。有关 Amazon EFS AWS 托管策略的更多信息，请参阅[Amazon EFS 的身份和访问管理](security-iam.md)。

要使用 IAM 授权为 NFS 客户端启用根挤压，请使用以下过程。

**防止对文件系统进行根访问**

1. 打开 Amazon Elastic File System 控制台，网址为[https://console.aws.amazon.com/efs/](https://console.aws.amazon.com/efs/)。

1. 选择**文件系统**。

1. 从“文件系统”页面中选择要启用根挤压的文件系统。

1. 在文件系统详细信息页面上，选择**文件系统策略**，然后选择**编辑**。此时将显示 **File system policy (文件系统策略)** 页面。

1. 在**策略选项**下，选择**默认阻止根访问\$1**。策略 JSON 对象将显示在**策略编辑器**中。

1. 选择 **Save (保存)** 以保存文件系统策略。

非匿名客户端可以通过基于身份的策略获得对文件系统的根访问权限。将 `AmazonElasticFileSystemClientFullAccess` 托管的策略附加到工作站的角色时，IAM 会根据工作站的身份策略授予对工作站的根访问权限。

**从管理工作站启用根访问权限**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 为 Amazon EC2 创建一个名为 `EFS-client-root-access` 的角色。IAM 会创建一个与您创建的 EC2 角色同名的实例配置文件。

1. 将 AWS 托管策略`AmazonElasticFileSystemClientFullAccess`分配给您创建的 EC2 角色。本策略的内容如下所示。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "elasticfilesystem:ClientMount",
                   "elasticfilesystem:ClientRootAccess",
                   "elasticfilesystem:ClientWrite",
                   "elasticfilesystem:DescribeMountTargets"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 将实例配置文件附加到您用作管理工作站的 EC2 实例，如下所述。有关更多信息，请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》**中的[将 IAM 角色附加到实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role)。

   1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

   1. 在导航窗格中，选择 **Instances (实例)**。

   1. 选择实例。对于 **Actions (操作)**，选择 **Instance Settings (实例设置)**，然后选择 **Attach/Replace IAM role (附加/替换 IAM 角色)**。

   1. 选择您在第一步中创建的 IAM 角色 `EFS-client-root-access`，然后选择 **Apply (应用)**。

1. 在管理工作站上安装 EFS 挂载帮助程序。有关 EFS 挂载助手挂载帮助程序和 amazon-efs-utils软件包的更多信息，请参阅[安装 Amazon EFS 客户端](using-amazon-efs-utils.md)。

1. 通过使用带 `iam` 挂载选项的以下命令，在管理工作站上挂载 EFS 文件系统。

   ```
   $ sudo mount -t efs -o tls,iam file-system-id:/ efs-mount-point
   ```

   您可以将 Amazon EC2 实例配置为通过 IAM 授权自动挂载文件系统。有关使用 IAM 授权挂载 EFS 文件系统的更多信息，请参阅[使用 IAM 授权挂载](mounting-IAM-option.md)。

## 权限缓存
<a name="accessing-fs-nfs-permissions-caching"></a>

Amazon EFS 会将文件权限缓存一小段时间。因此，可能会有一个短暂的窗口，最近被吊销访问权限的用户仍然可以访问该对象。

## 更改文件系统对象所有权
<a name="accessing-fs-nfs-permissions-chown-restricted"></a>

Amazon EFS 强制实施 POSIX `chown_restricted` 属性。这意味着只有根用户可以更改文件系统对象的所有者。root 用户或所有者用户可以更改文件系统对象的所有者组。但是，除非用户是 root 用户，否则该组只能更改为所有者用户所属的组。

## EFS 接入点
<a name="accessing-fs-nfs-permissions-access-points"></a>

*访问点* 将操作系统用户、组和文件系统路径应用于使用访问点发出的任何文件系统请求。访问点的操作系统用户和组覆盖 NFS 客户端提供的任何身份信息。文件系统路径作为访问点的根目录向客户端公开。此方法可确保每个应用程序在访问共享的基于文件的数据集时始终使用正确的操作系统身份和正确的目录。使用访问点的应用程序只能访问其自己的目录及之下目录中的数据。有关接入点的更多信息，请参阅 [使用接入点工作](efs-access-points.md)。

# 使用接入点工作
<a name="efs-access-points"></a>

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

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

您可以使用 AWS 管理控制台、 AWS Command Line Interface (AWS CLI) 和 Amazon EFS API 为现有 EFS 文件系统创建接入点。有关创建接入点的 step-by-step步骤，请参阅[创建接入点](create-access-point.md)。

## 接入点可与挂载目标配合使用
<a name="accesspoints-and-mount-targets"></a>

使用接入点之前，必须在 VPC 中至少创建一个挂载目标。挂载目标提供与 EFS 文件系统的网络连接，而接入点则提供访问控制和特定于应用程序的入口点。

接入点继承挂载目标的可用区放置。
+ 安全组是在挂载目标级别应用的，而不是在接入点级别应用的。
+ 在有挂载目标的所有可用区中都可以使用接入点。
+ IAM 条件密钥 `elasticfilesystem:AccessedViaMountTarget` 可确保仅通过挂载目标访问文件系统，这适用于直接挂载和接入点挂载。

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

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

有关使用访问点挂载文件系统的更多信息，请参阅[使用 EFS 接入点进行挂载](mounting-access-points.md)。

**Topics**
+ [接入点可与挂载目标配合使用](#accesspoints-and-mount-targets)
+ [使用接入点强制执行用户身份](enforce-identity-access-points.md)
+ [使用接入点强制执行根目录](enforce-root-directory-access-point.md)
+ [在 IAM 策略中使用接入点](access-points-iam-policy.md)

# 使用接入点强制执行用户身份
<a name="enforce-identity-access-points"></a>

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

其中，您将提供以下内容：
+ 用户 ID – 用户的数字 POSIX 用户 ID。
+ 组 ID – 用户的数字 POSIX 组 ID。
+ 次要组 IDs -次要组的可选列表 IDs。

启用用户强制后，Amazon EFS 会将 NFS 客户端的用户和组 IDs 替换为在接入点上为所有文件系统操作配置的身份。用户强制执行还将执行以下操作：
+ 新文件和目录的所有者和组设置为访问点的用户 ID 和组 ID。
+ EFS 在评估文件系统权限时会考虑接入点 IDs 的用户 ID、组 ID 和辅助组。EFS 会忽略 NFS 客户端。 IDs

**重要**  
强制执行用户身份受 `ClientRootAccess` IAM 权限的约束。  
例如，在某些情况下，您可能会将访问点用户 ID 和/或组 ID 配置为根 ID（即，将 UID 和/或 GID 设置为 0）。在此类情况下，您必须向 NFS 客户端授予 `ClientRootAccess` IAM 权限。

# 使用接入点强制执行根目录
<a name="enforce-root-directory-access-point"></a>

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

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

在访问点上指定根目录时，该目录将成为挂载该访问点的 NFS 客户端的文件系统的根目录。例如，假设访问点的根目录为 `/data`。在此情况下，使用访问点挂载 `fs-12345678:/` 与不使用访问点挂载 `fs-12345678:/data` 具有相同的效果。

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

## 为接入点创建根目录
<a name="create-root-directory-access-point"></a>

如果文件系统上没有接入点的根目录路径，则 Amazon EFS 会自动创建具有指定所有权和权限的根目录。如果在创建时未指定目录所有权和权限，Amazon EFS 将不会创建根目录。利用此方法，可以为特定用户或应用程序预置文件系统访问权限，而无需从 Linux 主机挂载文件系统。要创建根目录，在创建接入点时，必须使用以下属性配置根目录所有权和权限：
+ `OwnerUid` – 要用作根目录拥有者的数字 POSIX 用户 ID。
+ `OwnerGiD` – 要用作根目录拥有者组的数字 POSIX 组 ID。
+ 权限 – 目录的 Unix 模式。一个常见配置是 755。确保为接入点用户设置了执行位，使得他们能够执行装载操作。此配置向目录拥有者授予在目录中输入、列出和写入新文件的权限。它向所有其他用户授予输入和列出文件的权限。有关使用 Unix 文件和目录模式的更多信息，请参阅[网络文件系统（NFS）级别用户、组和权限](accessing-fs-nfs-permissions.md)。

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

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

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

## 接入点根目录的安全模型
<a name="root-directory-security-access-point"></a>

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

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

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

# 在 IAM 策略中使用接入点
<a name="access-points-iam-policy"></a>

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

以下是一个文件系统策略示例，该策略允许 IAM 角色 `app1` 使用访问点 `fsap-01234567` 来访问文件系统。该策略还允许 `app2` 通过访问点使用文件系统 `fsap-89abcdef`。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "MyFileSystemPolicy",
    "Statement": [
        {
            "Sid": "App1Access",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::111122223333:role/app1" },
            "Action": [
                "elasticfilesystem:ClientMount",
                "elasticfilesystem:ClientWrite"
            ],
            "Resource": "arn:aws:elasticfilesystem:us-east-1:111122223333:file-system/*",
            "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"
            ],
            "Resource": "arn:aws:elasticfilesystem:us-east-1:111122223333:file-system/*",
            "Condition": {
                "StringEquals": {
                    "elasticfilesystem:AccessPointArn" : "arn:aws:elasticfilesystem:us-east-1:222233334444:access-point/fsap-89abcdef"
                }
            }
        }
    ]
}
```

------

# 屏蔽对 EFS 文件系统的公共访问权限
<a name="access-control-block-public-access"></a>

Amazon EFS 屏蔽公共访问权限功能提供设置来帮助您管理对 EFS 文件系统的公共访问。默认情况下，新的 EFS 文件系统不允许公共访问。但是，您可以修改文件系统策略以允许公有访问。

**重要**  
启用“屏蔽公共访问权限”可防止通过直接附加到文件系统的资源策略来授予公共访问权限，有助于保护您的资源。除了启用“屏蔽公共访问权限”之外，还要仔细检查以下策略，来确认它们不会授予公共访问权限：  
附加到关联 AWS 委托人（例如，IAM 角色）的基于身份的策略
附加到关联资源的基于 AWS 资源的策略（例如，AWS Key Management Service (KMS) 密钥）

**Topics**
+ [使用以下方式阻止公众访问 AWS Transfer Family](#block-efs-public-access-with-transferfamily)
+ [“公有”的含义](#what-is-a-public-policy)

## 使用以下方式阻止公众访问 AWS Transfer Family
<a name="block-efs-public-access-with-transferfamily"></a>

当您将 Amazon EFS 与配合使用时 AWS Transfer Family，如果文件系统允许公开访问，则从属于与文件系统不同的账户的 Transfer Family 服务器收到的文件系统访问请求将被阻止。Amazon EFS 会评估文件系统的 IAM 策略，如果策略是公有的，则会阻止相关请求。要允许 AWS Transfer Family 访问您的文件系统，请更新您的文件系统策略，使其不被视为公开。

**注意**  
对于在 2021 年 1 月 6 日之前创建的 EFS 文件系统且策略允许公开访问的，默认情况下会禁用在 Amazon EFS 中使用 Tran AWS 账户 sfer Family。要允许使用 Transfer Family 访问您的文件系统，请联系 AWS 支持部门。

## “公有”的含义
<a name="what-is-a-public-policy"></a>

在评估文件系统是否允许公有访问时，Amazon EFS 假设文件系统策略是公有的。然后对文件系统策略进行评估，以确定它是否符合非公有条件。当文件系统策略仅向以下一个或多个对象的固定值（不包含通配符的值）授予访问权限时，才会将该策略视为非公有：
+  AWS 委托人、用户、角色或服务主体（例如，`aws:PrincipalOrgID`）
+ `aws:SourceArn`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:SourceOwner`
+ `aws:SourceAccount`
+ `elasticfilesystem:AccessedViaMountTarget`
+ `aws:userid, outside the pattern "AROLEID:*"`

根据这些规则，以下示例策略被视为公有。

------
#### [ JSON ]

****  

```
{  
    "Version":"2012-10-17",		 	 	 
    "Id": "efs-policy-wizard-15ad9567-2546-4bbb-8168-5541b6fc0e55",
    "Statement": [
        {
            "Sid": "efs-statement-14a7191c-9401-40e7-a388-6af6cfb7dd9c",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "elasticfilesystem:ClientMount",
                "elasticfilesystem:ClientWrite",
                "elasticfilesystem:ClientRootAccess"
            ],
            "Resource": "arn:aws:elasticfilesystem:us-east-1:111122223333:file-system/*"
            }
     ]
}
```

------

您可以使用设置为 True 的 EFS 条件键 `elasticfilesystem:AccessedViaMountTarget` 将此文件系统策略设为非公有。您可以使用 `elasticfilesystem:AccessedViaMountTarget` 允许对通过文件系统挂载目标访问 EFS 文件系统的客户端执行指定的 EFS 操作。以下非公有策略使用设置为 True 的 `elasticfilesystem:AccessedViaMountTarget` 条件键。

------
#### [ JSON ]

****  

```
{  
    "Version":"2012-10-17",		 	 	 
    "Id": "efs-policy-wizard-15ad9567-2546-4bbb-8168-5541b6fc0e55",
    "Statement": [
        {
            "Sid": "efs-statement-14a7191c-9401-40e7-a388-6af6cfb7dd9c",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "elasticfilesystem:ClientMount",
                "elasticfilesystem:ClientWrite",
                "elasticfilesystem:ClientRootAccess"
            ],
            "Resource": "arn:aws:elasticfilesystem:us-east-1:111122223333:file-system/*",
            "Condition": {
                "Bool": {
                    "elasticfilesystem:AccessedViaMountTarget": "true"
                }
            }
        }
    ]
}
```

------

有关 Amazon EFS 条件键的更多信息，请参阅[客户端的 EFS 条件键](iam-access-control-nfs-efs.md#efs-condition-keys-for-nfs)。有关创建文件系统策略的更多信息，请参阅[创建文件系统策略](create-file-system-policy.md)。

# Amazon EFS 网络隔离
<a name="network-isolation"></a>

作为一项托管式服务，Amazon Elastic File System 受 AWS 全球网络安全保护。有关 AWS 安全服务以及 AWS 如何保护基础设施的信息，请参阅 [AWS 云安全性](https://aws.amazon.com/security/)。要按照基础设施安全最佳实践设计您的 AWS 环境，请参阅《安全性支柱 AWS Well‐Architected Framework》**中的[基础设施保护](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)。

可以使用 AWS 发布的 API 调用通过网络访问 Amazon EFS。客户端必须支持以下内容：
+ 传输层安全性协议（TLS）。我们要求使用 TLS 1.2，建议使用 TLS 1.3。
+ 具有完全向前保密（PFS）的密码套件，例如 DHE（临时 Diffie-Hellman）或 ECDHE（临时椭圆曲线 Diffie-Hellman）。大多数现代系统（如 Java 7 及更高版本）都支持这些模式。

可从任何网络位置调用这些 API，但 Amazon EFS 的确支持基于资源的访问策略，其中可以包含基于源 IP 地址的限制。还可以使用 Amazon EFS 策略来控制来自特定 Amazon Virtual Private Cloud（Amazon VPC）端点或特定 VPC 的访问。事实上，这仅将对给定 Amazon EFS 资源的网络访问与 AWS 网络中的特定 VPC 隔离开。