

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

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

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

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

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

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

```
{
    "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 Amazon Web Services 账户 或共享 VPC 中访问服务器端加密的 Amazon S3 存储桶
<a name="s3-server-side-cross-account-support"></a>

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

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

您可以使用 IAM 角色调用以下 Amazon 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)。