Q19 — AWS SAA-C03 第17章
第 19/89 题 | ← 返回第17章
Q1319. 一家软件即服务 (SaaS) 公司使用 Amazon S3 运行多租户数据湖。每个租户的数据都存储在 S3 存储桶中独立的路径里。该数据湖支持为每个租户自定义加密。该公司希望允许租户使用自己的密钥仅加密部分数据。其余数据将使用服务器端加密,采用 Amazon S3 管理的密钥 (SSE-S3)。该公司需要设置持续的数据复制,将使用导入密钥加密的对象复制到另一个 AWS 区域中的 S3 存储桶。哪种解决方案能够满足这些要求?
- A. 为每个租户的数据使用 S3 前缀。使用 AWS KMS 密钥(SSE-KMS)进行服务器端加密。使用标签设置基于标签的跨区域复制 (CRR) 到另一个 S3 存储桶。
- B. 为每个租户的数据使用 S3 前缀。使用客户提供的密钥进行服务器端加密 (SSE-C)。设置基于前缀的跨区域复制 (CRR) 到另一个 S3 存储桶。
- C. 为每个租户的数据使用 S3 前缀。使用基于 AWS KMS 密钥的服务器端加密(SSE-KMS)。设置基于前缀的跨区域复制 (CRR) 到另一个 S3 存储桶。 ✓
- D. 为每个租户创建一个单独的 S3 存储桶。使用客户提供的密钥进行服务器端加密 (SSE-C)。设置存储桶级别的跨区域复制 (CRR)。
正确答案: C. 为每个租户的数据使用 S3 前缀。使用基于 AWS KMS 密钥的服务器端加密(SSE-KMS)。设置基于前缀的跨区域复制 (CRR) 到另一个 S3 存储桶。
解析
符合要求的正确解决方案是:C. 为每个租户的数据使用 S3 前缀。使用基于 AWS KMS 密钥的服务器端加密 (SSE-KMS)。设置基于前缀的跨区域复制 (CRR) 到另一个 S3 存储桶。为什么选项 C 正确:使用 S3 前缀实现多租户隔离使用 S3 前缀(例如 tenant-a/、tenant-b/)可以在单个存储桶内实现租户数据的逻辑隔离,同时避免管理多个存储桶的复杂性(如选项 D 所示)。支持租户管理密钥(SSE-KMS 与客户管理的 CMK):SSE-KMS 同时支持 AWS 管理的密钥(SSE-S3 的替代方案)和客户管理的 KMS 密钥 (CMK)。租户可以使用自己的 AWS KMS 客户管理密钥 (CMK) 来加密其数据的一个子集(通过 IAM 策略或 S3 对象加密设置)。其余数据可以使用 SSE-S3(默认)或使用 AWS 管理的密钥的 SSE-KMS(如果没有提供租户特定的密钥)。对于导入的密钥,基于前缀的跨区域复制 (CRR) 需要 SSE-KMS 来进行 CRR,因为当涉及加密密钥时(与不支持复制的 SSE-C 不同)。通过设置基于前缀的 CRR,只有特定前缀中的对象(例如,使用租户提供的 CMK 加密的对象)才会复制到目标存储桶。如果 CMK 已复制(使用 AWS KMS 多区域密钥或手动复制),AWS KMS 会自动处理跨区域的密钥同步。其他选项为何错误:A. 使用 S3 前缀 + SSE-KMS + 基于标签的 CRR基于标签的 CRR 不适用于此,因为要求仅复制使用租户提供的密钥加密的对象,而不是基于任意标签的对象。对于这种使用场景,基于前缀的 CRR 更精确。B. 使用 S3 前缀 + SSE-C + 基于前缀的 CRRSSE-C(客户提供的密钥)不支持跨区域复制 (CRR),因为 AWS 不存储或管理客户提供的密钥,因此无法进行复制。由于目标存储桶在没有原始密钥的情况下无法解密对象,复制过程将会失败。D. 创建单独的 S3 存储桶 + SSE-C + 存储桶级 CRR为每个租户管理单独的存储桶不具备可扩展性,并且会增加运营开销(监控、权限、成本)。SSE-C 仍然不支持 CRR,因此这种方法无法满足复制要求。方案C的实施步骤:使用 S3 前缀整理数据使用如下前缀来构建存储桶:s3://data-lake-bucket/tenant-a/encrypted-data/s3://data-lake-bucket/tenant-a/default-data/s3://data-lake-bucket/tenant-b/encrypted-data/配置 SSE-KMS 以使用客户管理的 CMK(可选)租户可以提供其 AWS KMS CMK(或者公司可以代表租户创建 CMK)。对于需要租户管理加密的对象,请在 S3 PUT 请求中或通过存储桶策略指定 CMK:JSON{“版本”:“2012-10-17”,“陈述”:[{“效果”:“允许”,“主要的”:””,“操作”: ["s3:PutObject"],"资源": ["arn:aws:s3:::data-lake-bucket/tenant-a/encrypted-data/"], "条件": {"StringEquals": {"s3:x-amz-server-side-encryption": "aws:kms","s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-1:123456789012:key/ abcd1234-5678-90ef-ghij-klmnopqrstuv"}}}]}设置基于前缀的 CRR转到 S3 存储桶管理复制添加规则。选择“基于前缀”,并指定类似 tenant-a/encrypted-data/ 的路径。选择其他区域的目标存储桶。在“加密配置”下,选择“AWS KMS”,并指定一个复制的 CMK(或者让 AWS 创建一个)。如果使用租户提供的 CMK,请确保将其复制到目标区域(通过 AWS KMS 多区域密钥或手动复制)。验证复制使用租户的 CMK 将测试对象上传到 tenant-a/encrypted-data/ 目录。检查目标存储桶中是否存在具有相同加密设置的复制对象。关键考虑因素:KMS密钥复制如果使用租户提供的 CMK,则必须将其复制到目标区域(通过 AWS KMS 多区域密钥或手动密钥导出/导入)。或者,为每个区域使用单独的 CMK,并相应地更新 IAM 策略。成本优化CRR 会在目标区域产生存储成本和复制请求成本。在目标存储桶中使用 S3 智能分层可以降低长期存储成本。安全与合规确保复制操作使用最小权限的 IAM 角色(仅允许必要的 S3 和 KMS 操作)。在两个存储桶中启用 S3 版本控制和 MFA 删除功能,以保护数据。结论:选项 C 是最佳选择,因为: