S3 Vectors 中的数据保护和加密
注意
适用于 Amazon Simple Storage Service 的 Amazon S3 Vectors 为预览版,可能会发生变化。
Amazon S3 Vectors 为向量数据提供 99.999999999%(11 个 9)的耐久性,从而确保可满足向量存储需求的卓越可靠性。这种耐久性由 Amazon S3 久经考验的基础设施提供支持,这一基础设施旨在维护数据完整性和可用性,即使面对硬件故障或其它中断也不例外。
S3 Vectors 中的数据保护包括多层安全控制措施,旨在保护静态和传输中的向量数据。
默认情况下,Amazon S3 Vectors 向量存储桶中的所有新向量都使用具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)。当您创建使用 SSE-S3 加密的向量存储桶时,对该存储桶的所有后续操作都会自动使用加密。
S3 Vectors 还与 AWS Key Management Service(KMS)集成以提供灵活的加密密钥管理选项,同时可让您选择客户自主管理型密钥进行权限控制和审计。
为 Amazon S3 向量存储桶设置服务器端加密行为
S3 Vectors 中的加密配置是在创建向量存储桶时指定的基本安全设置。这种设计可确保从创建的那一刻起,就对存储在存储桶中的所有向量数据进行加密。加密配置适用于存储桶内的所有向量、向量索引和元数据,同时为向量存储桶中的整个向量数据集提供一致的保护。
重要
创建向量存储桶后,无法更改向量存储桶的加密设置。在存储桶创建过程中,必须仔细考虑加密要求,包括合规性要求、密钥管理偏好以及与现有安全基础设施的集成。
SSE-S3 或 SSE-KMS 加密类型在向量存储桶级别设置,并适用于存储桶内的所有向量索引和向量。无法针对存储桶中的各个索引更改为不同的加密设置。加密配置不仅适用于向量数据本身,还适用于所有关联的元数据。
使用 SSE-S3 加密
具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)为向量存储桶提供一种简单有效的加密解决方案,其中 AWS 管理加密过程的所有方面。这种加密方法使用 AES-256
加密,旨在以最小的运营开销提供强大的安全性,同时为组织提供坚实的加密功能,并消除管理加密密钥的复杂性。
使用 SSE-S3,Amazon S3 可以自动处理加密密钥的生成、轮换和管理。SSE-S3 提供强大的安全性,无需额外的配置或持续的管理。加密和解密过程由该服务自动处理,除了标准的 S3 Vectors 定价外,使用 SSE-S3 加密无需支付任何额外费用。
使用 SSE-KMS 加密
具有 AWS Key Management Service 密钥的服务器端加密(SSE-KMS)可增强对加密密钥的控制,并支持对密钥使用情况进行详细的审计日记记录。这种加密方法非常适合具有严格合规性要求的组织、需要实施自定义密钥轮换策略的组织,或者需要对数据访问具有详细的审计跟踪记录的环境。
SSE-KMS 支持您使用客户自主管理型密钥(CMK)对向量数据进行加密。客户自主管理型密钥提供最高级别的控制,支持您通过 AWS CloudTrail 定义密钥策略、启用或禁用密钥以及监控密钥使用情况。这种控制级别使得 SSE-KMS 特别适合受监管的行业或具有特定数据治理要求的组织。
将 SSE-KMS 与客户自主管理型密钥结合使用时,您可以完全控制谁可以使用这些密钥来加密和解密数据。可以创建详细的密钥策略,来指定哪些用户、角色或服务可以访问密钥。
SSE-KMS 的重要注意事项
-
KMS 密钥格式要求:S3 Vectors 要求您使用完整的 Amazon 资源名称(ARN)格式指定 KMS 密钥。不支持密钥 ID 或密钥别名。
-
服务主体权限:当您将客户自主管理型密钥与 S3 Vectors 结合使用时,必须显式向 S3 Vectors 服务主体授予使用 KMS 密钥的权限。这一要求可确保该服务可以代表您加密和解密您的数据。需要访问权限的服务主体为
indexing.s3vectors.amazonaws.com
。
示例:S3 Vectors 的 KMS 密钥策略
要将客户自主管理型 KMS 密钥与 S3 Vectors 结合使用,必须更新密钥策略以包括 S3 Vectors 服务主体的权限。以下是一个全面的密钥策略示例。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowS3VectorsServicePrincipal", "Effect": "Allow", "Principal": { "Service": "indexing.s3vectors.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3vectors:
:
aws-region
123456789012
:bucket/*" }, "StringEquals": { "aws:SourceAccount": "123456789012
" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": ["aws:s3vectors:arn", "aws:s3vectors:resource-id"] } } }, { "Sid": "AllowApplicationAccess", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam:123456789012
:role/VectorApplicationRole", "arn:aws:iam:123456789012
:user/DataScientist" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "s3vectors..amazonaws.com" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": ["aws:s3vectors:arn", "aws:s3vectors:resource-id"] } } } ] }
aws-region
-
所需的 KMS 权限:
-
S3 Vectors 服务主体权限:
-
kms:Decrypt
:客户自主管理型密钥的 S3 Vectors 服务主体 (indexing.s3vectors.amazonaws.com
) 在后台操作中维护和优化索引所需
-
-
IAM 主体权限:
-
kms:Decrypt
:所有向量级别的操作(PutVectors、GetVectors、QueryVectors、DeleteVectors、ListVectors)所需 -
kms:GenerateDataKey
:使用客户自主管理型密钥创建向量存储桶所需
-
-
-
跨账户访问注意事项:使用 SSE-KMS 实现跨账户访问模式时,必须确保 KMS 密钥策略支持其它账户中的相应主体进行访问。密钥 ARN 格式在跨账户场景中变得尤为重要,因为无论从何种账户上下文中访问密钥,这一格式都能提供对密钥的明确引用。