

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

# 使用服务器端加密的 Amazon S3 桶
<a name="s3-server-side-encryption-support"></a>

 FSx for Lustre 支持 Amazon S3 存储桶，这些存储桶使用服务器端 S3-managed 加密，SSE-S3密钥 () AWS KMS keys 和存储在 () 中。 AWS Key Management Service SSE-KMS

如果您希望 Amazon FSx 在写入 S3 存储桶时对数据进行加密，则需要将 S3 存储桶的默认加密设置为或 SSE-S3 。 SSE-KMS有关更多信息，请参阅*《Amazon S3 用户指南》*中的[配置原定设置加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-bucket-encryption.html)。将文件写入您的 S3 桶时，Amazon FSx 将遵循您的 S3 存储桶的原定设置加密策略。

默认情况下，Amazon FSx 支持使用加密的 S3 存储桶。 SSE-S3如果您想将您的 Amazon FSx 文件系统链接到使用 SSE-KMS 加密的 S3 存储桶，则需要在客户托管密钥策略中添加声明，允许 Amazon FSx 使用您的 KMS 密钥加密和解密 S3 存储桶中的对象。

以下语句允许特定的 Amazon FSx 文件系统加密和解密特定 S3 存储桶的对象。{{bucket\_name}}

```
{
    "Sid": "Allow access through S3 for the FSx SLR to use the KMS key on the objects in the given S3 bucket",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::{{aws_account_id}}:role/aws-service-role/s3.data-source.lustre.fsx.amazonaws.com/AWSServiceRoleForFSxS3Access_{{fsx_file_system_id}}"
    },
    "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "kms:CallerAccount": "{{aws_account_id}}",
            "kms:ViaService": "s3.{{bucket-region}}.amazonaws.com"
        },
        "StringLike": {
            "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::{{bucket_name}}/*"
        }
    }
}
```

**注意**  
 如果您使用带 CMK 的 KMS 在启用了 S3 桶密钥的情况下加密您的 S3 桶，请将 `EncryptionContext` 设置为桶 ARN，而不是对象 ARN，如下例所示：  

```
"StringLike": {
    "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::{{bucket_name}}"
}
```

以下策略声明允许您的账户中的所有 Amazon FSx 文件系统链接到特定的 S3 桶。

```
{
      "Sid": "Allow access through S3 for the FSx SLR to use the KMS key on the objects in the given S3 bucket",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "s3.{{bucket-region}}.amazonaws.com",
          "kms:CallerAccount": "{{aws_account_id}}"
        },
        "StringLike": {
            "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::{{bucket_name}}/*"
        },
        "ArnLike": {
          "aws:PrincipalArn": "arn:{{aws_partition}}:iam::{{aws_account_id}}:role/aws-service-role/s3.data-source.lustre.fsx.amazonaws.com/AWSServiceRoleForFSxS3Access_fs-*"
        }
      }
}
```

## 在不同的 VPC AWS 账户 或共享 VPC 中访问服务器端加密的 Amazon S3 存储桶
<a name="s3-server-side-cross-account-support"></a>

创建链接到加密 Amazon S3 桶的 FSx for Lustre 文件系统后，您必须授权 `AWSServiceRoleForFSxS3Access_{{fs-01234567890}}` 服务关联角色（SLR）访问用于加密 S3 桶的 KMS 密钥，然后才能从链接的 S3 桶读取或写入数据。您可以使用已拥有 KMS 密钥权限的 IAM 角色。

**注意**  
此 IAM 角色必须位于创建 FSx for Lustre 文件系统的账户（与 S3 SLR 同一个账户）中，而不是 KMS 存储桶所属的账户 key/S3中。

您可以使用 IAM 角色调用以下 AWS KMS API 为 S3 SLR 创建授权，以便 SLR 获得对 S3 对象的权限。要查找与您的 SLR 关联的 ARN，请使用您的文件系统 ID 作为搜索字符串来搜索您的 IAM 角色。

```
$ aws kms create-grant --region {{fs_account_region}} \
      --key-id arn:aws:kms:{{s3_bucket_account_region}}:{{s3_bucket_account}}:key/{{key_id}} \
      --grantee-principal arn:aws:iam::{{fs_account_id}}:role/aws-service-role/s3.data-source.lustre.fsx.amazonaws.com/AWSServiceRoleForFSxS3Access_{{file-system-id}} \
      --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"
```

有关服务关联角色的更多信息，请参阅[使用适用于 Amazon 的服务相关角色 FSx](using-service-linked-roles.md)。