

# S3 Files 如何与 IAM 结合使用
<a name="s3-files-security-iam"></a>

本页介绍 AWS Identity and Access Management（IAM）如何与 S3 Files 结合使用，以及如何使用 IAM 策略来控制对文件系统的访问。

S3 Files 使用 IAM 进行两种不同类型的访问控制：
+ **API 访问**：控制谁可以创建、管理和删除 S3 Files 资源，例如文件系统、挂载目标和接入点。还可以使用附加到 IAM 用户、组或角色的基于身份的策略控制此访问。
+ **客户端访问**：控制客户端（您挂载的计算资源）在连接后可以对文件系统执行的操作，例如以根用户身份读取、写入或访问文件。您可以组合使用基于资源的策略、基于身份的策略、接入点和 POSIX 权限来控制此访问。

通过使用 IAM，您可以允许客户端对文件系统执行特定操作，包括只读、写入和根访问。对 IAM 身份策略或文件系统资源策略中的操作的“允许”权限允许访问该操作。无需在身份策略和资源策略中同时授予此权限。

您在关联的 S3 存储桶上的 S3 存储桶策略还控制从您的计算资源和文件系统对 S3 存储桶进行的访问。还必须确保源存储桶的存储桶策略不会拒绝来自您的计算资源或文件系统的访问。有关更多详细信息，请参阅 [Amazon S3 的存储桶策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)。

## 基于身份的策略
<a name="s3-files-security-iam-identity-based"></a>

基于身份的策略是您附加到 IAM 用户、组或角色的 JSON 策略。您可以通过编写自定义策略或附加 AWS 托管式策略来提供这些权限。有关 API 访问和客户端访问的可用托管式策略的更多信息，请参阅 [Amazon S3 Files 的 AWS 托管式策略](s3-files-security-iam-awsmanpol.md)。

S3 Files 还通过支持客户端直接从源 S3 存储桶读取文件数据，从而优化读取性能。在计算资源上挂载 S3 文件系统时，必须向计算资源的 IAM 角色添加内联策略，以授予从指定的 S3 存储桶读取对象的权限。挂载助手使用这些权限来读取 S3 数据。有关此策略的更多详细信息，请参阅[用于将文件系统附加到 AWS 计算资源的 IAM 角色](s3-files-prereq-policies.md#s3-files-prereq-iam-compute-role)。

## 基于资源的策略
<a name="s3-files-security-iam-resource-based"></a>

文件系统策略是一种基于 IAM 资源的策略，您可以直接附加到文件系统以控制客户端访问。您可以使用文件系统策略来授予或拒绝客户端执行诸如挂载、写入和根访问等操作的权限。

文件系统要么具有一个空（默认）的文件系统策略，要么只有一个显式策略。S3 文件系统策略有 20000 个字符的限制。有关创建和管理文件系统策略的信息，请参阅[创建文件系统策略](s3-files-file-system-policies-creating.md)。

## 客户端的 S3 Files 操作
<a name="s3-files-security-iam-client-actions"></a>

您可以在文件系统策略中指定以下操作来控制客户端访问：


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

## 客户端的 S3 Files 条件键
<a name="s3-files-security-iam-condition-keys"></a>

您可以在文件系统策略的 `Condition` 元素中使用以下条件键来进一步完善访问控制：


| 条件键 | 说明 | 运算符 | 
| --- | --- | --- | 
| s3files:AccessPointArn | 客户端正在连接的 S3 Files 接入点的 ARN。 | 字符串 | 

## 文件系统策略示例
<a name="s3-files-security-iam-policy-examples"></a>

### 示例：授予只读访问权限
<a name="s3-files-security-iam-policy-example-readonly"></a>

以下文件系统策略仅向 `ReadOnly` IAM 角色授予 `ClientMount`（只读）权限。将 {{111122223333}} 替换为您的 AWS 账户 ID。

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}:role/ReadOnly"
            },
            "Action": [
                "s3files:ClientMount"
            ]
        }
    ]
}
```

### 示例：向 S3 接入点授予访问权限
<a name="s3-files-security-iam-policy-example-accesspoint"></a>

以下文件系统策略使用条件元素来向特定接入点授予在通过指定的接入点进行挂载时对文件系统的完全访问权限。将接入点 ARN 和账户 ID 替换为您的值。有关更多信息，请参阅 [为 S3 文件系统创建接入点](s3-files-access-points-creating.md)。

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{555555555555}}:role/S3FilesAccessPointFullAccess"
            },
            "Action": [
                "s3files:Client*"
            ],
            "Condition": {
                "StringEquals": {
                    "s3files:AccessPointArn": "arn:{{partition}}:s3files:{{region}}:{{account-id}}:file-system/{{fs-1234567890}}/access-point/{{fsap-0987654321}}"
                }
            }
        }
    ]
}
```

## POSIX 权限
<a name="s3-files-security-iam-posix"></a>

IAM 授权成功后，S3 Files 将在文件和目录级别强制执行标准 POSIX（Unix 样式）权限。POSIX 权限基于与每个文件和目录关联的用户 ID（UID）、组 ID（GID）和权限位（读取、写入、执行）来控制访问。接入点可以为所有请求强制使用特定的 POSIX 用户身份，从而简化共享数据集的访问管理。有关更多信息，请参阅 [为 S3 文件系统创建接入点](s3-files-access-points-creating.md)。

## 安全组
<a name="s3-files-security-iam-security-groups"></a>

安全组充当网络级防火墙，用于控制计算资源和文件系统的挂载目标之间的流量。有关配置安全组以开始使用 S3 Files 的详细信息，请参阅[安全组](s3-files-prereq-policies.md#s3-files-prereq-security-groups)。