对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

通过 AWS KMS 管理客户密钥

您可以配置Atlas项目,使用Amazon Web Services IAM角色访问Amazon Web Services KMS密钥,实现静态加密。为项目启用静态加密时,可以使用现有角色或创建新角色。

注意

The MongoDB Atlas Shared Responsibility Model defines the complementary duties of MongoDB and its customers in maintaining a secure and resilient data environment. Under this framework, MongoDB manages the security and operational integrity of the underlying platform, while customers are responsible for the configuration, management, and data policies of their specific deployments. For a detailed breakdown of ownership across security and operational excellence, see Shared Responsibility Model.

本页介绍了如何在 Atlas 项目上为基于角色的访问权限配置客户密钥管理。您还可以在 AWS KMS 中设置 AWS PrivateLink,确保 Atlas 和 AWS KMS 之间的所有流量都通过 AWS 的专用网络接口进行。

如果您尚未为新的或现有的 Atlas 项目启用静态加密,请按照为项目启用对加密密钥的基于角色的访问中的步骤为您的 Atlas 项目启用静态加密。如果您已经为 Atlas 项目启用了静态加密,并配置了对加密密钥的基于凭证的访问权限,请按照项目切换到对加密密钥的基于角色的访问权限中的步骤,切换到对加密密钥的基于角色的访问权限。

注意

Atlas Infinite

Atlas Infinite in public preview supports customer-managed keys through AWS KMS. To learn how encryption at rest works for Atlas Infinite, see Atlas Infinite Encryption.

您必须先为 Atlas 项目配置客户密钥管理,然后才能在该项目中的集群上启用它。

要配置客户密钥管理,您必须拥有对项目的 Project Owner 访问权限。

拥有 Organization Owner 访问权限的用户必须将自己作为 Project Owner 添加到项目中。

Atlas中的客户数密钥管理遵循称为信封加密的进程。此进程通过使用一个密钥加密另一个密钥来创建多层加密。为了启用客户密钥管理, Atlas使用以下加密密钥:

Customer-Managed Key (CMK)

Customer-managed keys are encryption keys that you create, own, and manage in AWS KMS. You create the CMK in AWS KMS and connect it to Atlas at the Project level. To learn more about the CMKs used in AWS KMS, see AWS KMS Documentation.

Atlas 仅使用此密钥来加密 MongoDB 主密钥。

MongoDB Master Key

Atlas 集群中的每个节点都会创建一个MongoDB主密钥。 MongoDB主密钥是MongoDB Server用于加密每数据库加密密钥的加密密钥。 Atlas在本地保存密钥的加密副本。

此密钥使用 CMK 加密,并对每个数据库的加密密钥进行加密。

Per-Database Encryption Key

Atlas 集群中的每个节点还会为集群中的每个数据库创建一个加密密钥。Atlas 使用这些密钥,通过 WiredTiger 读取和写入数据,WiredTiger 还对这些密钥进行加密和存储。

此密钥使用 MongoDB 主密钥加密。

下面是一个三节点副本集的加密层次结构。Atlas 使用 AWS KMS 中的 CMK 为集群中的每个节点加密唯一的 MongoDB 主密钥。每个节点还包含三个数据库,每个数据库都使用每个数据库唯一的加密密钥进行加密。当集群启动时,Atlas 使用 AWS KMS 中的客户主密钥解密 MongoDB 主密钥,并将其提供给 MongoDB Server。

注意

如果您撤销 Atlas 对客户主密钥的访问权限,Atlas 就会关闭集群中的节点,并且在您恢复对客户主密钥的访问权限之前,您无法访问数据。

使用 AWS KMS 和 Atlas 的 CMK 工作流程图

注意

此功能不适用于以下任何部署:

  • 免费集群

  • Flex 集群

要学习;了解更多信息,请参阅限制。

当您使用自己的云提供商 KMS 时,Atlas 会自动轮换 MongoDB 主密钥,至少每 90 天。如果您已配置维护窗口,您的密钥轮换将在 维护窗口 期间开始。推迟维护(手动或自动)可能会导致密钥轮换超过 90 天的时间限制。密钥滚动轮换,并且该过程不需要重写数据。

Atlas 不会自动轮换用于 AWS 提供的静态加密的 AWS CMK。

作为最佳实践,当您为 Atlas 项目启用静态加密时,Atlas 会创建一个 alert 来提醒您在默认情况下每 90 天轮换一次 AWS CMK。您可以配置该警报的时间段。

You can rotate your AWS CMK yourself or configure your AWS KMS instance to automatically rotate your CMK. If you configure automatic AWS CMK rotation, the default time period for rotation is approximately 365 days.

如果您已在 AWS 中设置自动 客户主密钥 轮换,并且不希望收到每90 天轮换一次 客户主密钥 的 Atlas 警报,则可以将默认警报期限 修改 为大于365 天或 禁用 警报。

本页面介绍如何在 Atlas 中创建新密钥和更新 CMK ID,以轮换 Atlas 项目 CMK。与 AWS KMS 自动 CMK 轮换相比,这种密钥轮换方法支持对轮换周期进行更精细的控制。

重要

采用静态加密的云备份

For clusters using Encryption at Rest and Back Up Your Cluster, Atlas uses the project's CMK and AWS IAM user credentials at the time of the snapshot to automatically encrypt the snapshot data files. This is an additional layer of encryption on the existing encryption applied to all Atlas storage and snapshot volumes.

Atlas 不会在轮换后使用新的客户主密钥重新加密快照。在检查项目中每个启用备份的集群是否有任何快照仍在使用该 CMK 之前,请勿删除旧 CMK。Atlas 会根据备份计划、保留和按需快照删除备份。在 Atlas 根据给定的 CMK 删除所有快照后,您可以安全地删除该 CMK。

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。

  2. 如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。

  3. 在侧边栏中,单击 Security 标题下的 Database & Network Access。

  4. 在侧边栏中,单击 Advanced。

    显示“高级”页面。

2
3
  1. 输入以下信息:

    字段
    操作

    AWS IAM role

    选择已有权访问 KMS 密钥的现有 AWS IAM 角色,或使用以下权限授权新角色并授予此角色访问 KMS 密钥的权限:

    要学习;了解更多信息,请参阅对项目加密密钥进行基于角色的访问。

    Customer Master Key ID

    输入您的 AWS 客户主密钥 ID。

    Customer Master Key Region

    选择创建 AWS CMK 的 AWS 区域。

    Atlas 仅列出支持 AWS KMS 的 AWS 区域。

  2. 单击 Save(连接)。

在 CMK 轮换过程中,Atlas 会在 Atlas 控制台中显示横幅。在部署更改之前,请勿删除或禁用 CMK。

区域服务中断期间,您的 AWS KMS 区域可能不可用。如果启用了使用客户密钥管理进行静态加密,就可以在至少一个节点仍然可用的情况下执行加密和解密操作。但是如果所有节点都不可用,就无法执行加密操作。如果节点在服务中断期间重新启动,则该节点将不可用。

如需将不可用节点恢复至正常状态,可以将当前的 AWS KMS 区域重新配置为可用区域。要更改 KMS 区域,您的 AWS KMS 密钥必须是多区域密钥。如需创建多区域密钥,请参阅 AWS 文档。

注意

您无法将单地区钥转换为多地区密钥。

要重新配置 AWS KMS 区域,请在 Atlas 中完成以下步骤:

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。

  2. 如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。

  3. 在侧边栏中,单击 Security 标题下的 Database & Network Access。

  4. 在侧边栏中,单击 Advanced。

    显示“高级”页面。

2
3

为确保 Atlas 不会重新加密您的数据,请验证 AWS IAM role 和 Customer Master Key ID 是否反映您的现有档案。

4

选择您已为其配置多地区密钥的另一个 AWS 区域。

5

您可以通过公共网络或 AWS PrivateLink 使用来自 AWS KMS 的客户主密钥 (CMK)。要了解更多信息,请查看以下内容:

By default, MongoDB and search processes run on the same nodes. With this architecture, customer-managed encryption applies to your database data, but it does not apply to search indexes.

启用专用搜索节点后,搜索进程将在单独的节点上运行。这允许您启用搜索节点数据加密,以便您可以使用相同的客户托管密钥对数据库数据和搜索索引进行加密,以实现全面的加密覆盖范围。

在公开预览期间,Atlas Infinite 集群集群不支持专用搜索节点。

注意

Database nodes and Search Nodes use different encryption methods with the same customer-managed keys. Database nodes use the WiredTiger Encrypted Storage Engine, while Search Nodes use encryption at the disk level.