使用服务器端加密的 Amazon S3 桶 - FSx for Lustre

使用服务器端加密的 Amazon S3 桶

FSx for Lustre 支持 Amazon S3 桶,这些桶使用通过 S3 托管密钥(SSE-S3)和 AWS Key Management Service 中存储的 AWS KMS keys 进行的服务器端加密。

如果您希望 Amazon FSx 在写入您的 S3 桶时对数据进行加密,您需要将 S3 桶上的默认加密设置为 SSE-S3 或 SSE-KMS。有关更多信息,请参阅《Amazon S3 用户指南》中的配置原定设置加密。将文件写入您的 S3 桶时,Amazon FSx 将遵循您的 S3 存储桶的原定设置加密策略。

默认情况下,Amazon FSx 支持使用 SSE-S3 加密的 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:CallerAccount": "aws_account_id", "kms:ViaService": "s3.bucket-region.amazonaws.com" }, "StringLike": { "aws:userid": "*:FSx", "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket_name/*" } } }

以不同的 AWS 账户 或从共享 VPC 访问服务器端加密 Amazon S3 存储桶

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

注意

此 IAM 角色必须位于 FSx for Lustre 文件系统的创建账户(与 S3 SLR 相同的账户),而不是 KMS 密钥/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 的服务相关角色