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

使用客户密钥管理进行静态加密

注意

本页适用于Atlas Infinite 和Atlas Core。

您可以通过启用使用客户托管密钥的数据库级静态加密,为数据再增加一个安全层。您拥有并控制存储在云提供商的KMS中的加密密钥。要学习;了解Atlas如何静态数据以及可用密钥类型有何不同,请参阅Atlas静态加密概述。

通过密钥管理配置静态加密会对 Atlas 项目产生额外费用。要了解更多信息,请参阅高级安全。

注意

MongoDB Atlas责任共担模型定义了MongoDB及其客户在维护安全和弹性数据环境方面的互补职责。在此框架下, MongoDB管理根本的平台的安全性和操作完整性,而客户则负责其特定部署的配置、管理和数据策略。有关安全性和卓越运营之间所有权的详细划分,请参阅责任共担模型。

要强制在项目中的所有集群和专用搜索部署上启用静态加密的客户管理密钥,请使用Atlas 资源策略。您可以使用资源策略在创建或更改集群或搜索部署之前要求使用 CMK。

重要

该功能在弹性集群中不可用

Flex 集群目前不支持此功能。要了解更多信息,请参阅 Atlas Flex 限制。

为 Atlas 项目配置静态加密时,您可以使用以下一个或多个客户密钥管理提供商:

注意

Atlas Infinite 公共预览版的一些限制应用于客户密钥管理。有关完整列表,请参阅公共预览限制。

在公共预览版中, Atlas仅支持通过 AWS KMS在Atlas Infinite 上托管客户密钥。不支持Azure Key Vault和 Google Cloud KMS 。当Atlas Infinite集群使用客户管理的密钥时,您可以在创建它的项目中恢复快照;不支持跨项目和跨组织恢复。

为 Atlas 项目配置至少一个密钥管理提供商后,您可以为需要加密的每个 Atlas 集群启用客户密钥管理。密钥管理提供商无需与集群云服务提供商匹配。

在Atlas Infinite集群上,您可以在默认加密和客户管理的密钥之间双向迁移。 Atlas Infinite 将迁移视为密钥轮换:您的集群保持可用,并且以前的密钥保持有效,直到迁移完成。要学习;了解更多信息,请参阅Atlas无限加密。

注意

当您启用或禁用客户密钥管理时, Atlas会执行初始同步以重新加密您的集群数据。它还会在集群上重建MongoDB Search 和MongoDB Vector Search 索引。

或者,对于仅在Azure区域部署 M10 或更大Atlas集群的项目,您可以使用Atlas Administration API在 AKV 中自动创建Azure Private Link,使Atlas能够通过Azure的专用网络接口与 AKV 安全地通信。要学习;了解详情,请参阅使用Azure Key Vault管理客户数密钥。

如果您的KMS提供商不可用,这不会禁用仍在运行的集群。如果您决定重新启动此类集群,且其密钥已撤销, Atlas会禁用该集群。

要学习;了解加密建议,包括数据分类级别和要使用的加密类型,请参阅Atlas架构中心的Atlas数据加密建议。

注意

对于使用客户管理的密钥进行静态加密的集群, Atlas数据验证需要对KMS的额外的访问权限才能解密数据。要学习;了解更多信息,请参阅数据验证KMS用法。

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

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

使用密钥管理进行静态加密需要有效的密钥管理提供商凭证和加密密钥。要提供这些详细信息并启用客户密钥管理:

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

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

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

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

    显示“高级”页面。

2
3

您可以选择启用对 搜索节点上所有数据的加密。您也可以稍后启用此功能。

如要了解更多信息,请参阅启用搜索节点的客户密钥管理。

4
5
6

要了解更多信息,请参阅允许从 Atlas 控制平面访问。

根据KMS配置,您可能需要将以下IP地址添加到KMS访问权限列表,这样Atlas才能与KMS通信:

  • Atlas控制平面出站IP地址

  • Atlas 集群节点的公共IP地址(数据平面)

要启用 Atlas 和 KMS 之间的通信:

1

API 端点在 CIDR 中返回按云提供商和区域分类的出入 Atlas 控制平面 IP 地址的列表。要了解更多信息,请参阅使用 AWS、Azure 和 GCP 管理客户密钥的先决条件。

2

有关详细信息,请参阅使用 AWS、Azure 和 GCP 管理客户密钥的先决条件。

在使用客户数密钥管理配置 Atlas 后,对于包含需要加密数据的每个 Atlas 集群,您都需要启用客户数密钥管理。

注意

您必须拥有 Project Owner 角色才能为该项目中的集群启用客户密钥管理。

对于新集群:

1

在集群配置表中,将 Manage your own encryption keys 设置切换为 Yes。

2
  1. 单击 Review Changes(连接)。

  2. 查看更改,然后单击 Apply Changes 以部署集群。

3

根据密钥管理配置,您可能需要将 Atlas 集群节点 IP 地址添加到云提供商 KMS 访问列表, 以便集群与 KMS 通信。 要启用集群与 KMS 之间的通信,请执行以下操作:

  1. 向 ipAddresses 端点发送 GET 请求。returnAllIpAddresses API 端点返回新集群节点的 IP 地址列表,类似于以下内容:

    {
    "groupId": "xxx", // ObjectId
    "services": {
    "clusters": [
    {
    "clusterName": "Cluster0",
    "inbound": [
    "3.92.113.229",
    "3.208.110.31",
    "107.22.44.69"
    ],
    "outbound": [
    "3.92.113.229",
    "3.208.110.31",
    "107.22.44.69"
    ]
    }
    ]
    }
    }
  2. 将返回的 IP 地址添加到云提供商的 IP 访问列表。 您必须修改 IP 访问列表,再执行预配计划回滚。 在预配计划从 IP 访问限制回滚之前,集群最多尝试预配三天。

    有关详细信息,请参阅使用 AWS、Azure 和 GCP 管理客户密钥的先决条件。

    注意

    如需更多时间更新 IP 访问列表,可以:

    • 在无静态加密的情况下预配集群,然后在更新 IP 访问列表后 启用集群。

    • 在云提供商的密钥管理服务上配置更具包容性的 IP 访问列表, 通过静态加密启动集群,然后修改 IP 访问列表。

对于现有群组:

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

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

  3. 在侧边栏中,单击 Database 标题下的 Clusters。

会显示集群页面。

2

对于包含要加密的数据的集群,请单击 ,然后选择 Edit Configuration。

3
  1. 展开 Additional Settings 面板。

  2. 将 Manage your own encryption keys 设置切换为 Yes。

  3. 验证您的集群的 Require Private Networking 设置的状态。

    如果您在项目级别为Atlas配置了使用集合扫描 (通过专用网络)进行静态加密,则状态为 Active。如果您尚未为项目配置任何私有端点连接,则状态为 Inactive。

4
  1. 单击 Review Changes(连接)。

  2. 查看更改,然后单击 Apply Changes 以更新集群。

在为您的项目配置客户数密钥管理时,您还可以为搜索节点启用客户数密钥管理加密。这可确保您的 MongoDB Search 和 MongoDB 向量搜索 工作负载(包括索引)通过客户数托管的密钥完全加密。

此功能适用于所有KMS提供商。

如要使用客户管理密钥对搜索节点启用数据加密:

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

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

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

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

    显示“高级”页面。

2

如果您尚未配置客户密钥管理,请按照通过客户密钥管理配置 Atlas 中的步骤进行操作。

否则,请单击 Encryption at Rest using your Key Management 旁边的 Edit 按钮。

3
4

在项目级别启用搜索节点数据加密后,当您使用搜索节点为任何新的或现有的集群配置集群加密 时, Atlas 会在集群级别启用它。Atlas 使用客户管理密钥对搜索节点进行加密,并重建所有搜索索引。这个过程的长短取决于索引的大小和数量。

注意

如果您在项目级别禁用客户密钥管理,或者如果您的客户管理密钥变得无效,Atlas 将暂停您的集群并删除搜索节点,使数据库查询不可用。

当您重新启用客户数密钥管理或修复密钥配置时,Atlas 会取消暂停集群,预配新的搜索节点并执行初始同步。初始同步完成后,搜索功能将恢复。

1

您可以向 M10+ 集群添加可选举节点或增加分片集群中的分片数量。

2

根据密钥管理配置,您可能需要将 Atlas 集群节点 IP 地址添加到云提供商 KMS 访问列表, 以便集群与 KMS 通信。 要启用集群与 KMS 之间的通信,请执行以下操作:

  1. 向 ipAddresses 端点发送 GET 请求。此 returnAllIpAddresses API 端点会返回新集群节点或分片的 IP 地址列表,类似于以下内容:

    {
    "groupId": "xxx", // ObjectId
    "services": {
    "clusters": [
    {
    "clusterName": "Cluster0",
    "inbound": [
    "3.92.113.229",
    "3.208.110.31",
    "107.22.44.69"
    ], // List<String>
    "outbound": [
    "3.92.113.229",
    "3.208.110.31",
    "107.22.44.69"
    ]
    }
    ]
    }
    }
  2. 将返回的 IP 地址添加到云提供商的 IP 访问列表。 您必须修改 IP 访问列表,再执行预配计划回滚。 在预配计划从 IP 访问限制回滚之前,集群最多尝试预配三天。

    有关详细信息,请参阅使用 AWS、Azure 和 GCP 管理客户密钥的先决条件。

Atlas 验证 KMS 配置:

如果存在以下情况之一,Atlas 将在下次计划的有效性检查中关闭所有 mongod 和 mongos 进程:

  • 您的密钥管理提供程序档案将变为无效

  • 有人删除或禁用您的加密密钥

如果 Atlas 无法连接到密钥管理提供商,或者 Atlas 检测到可能的误报,则 Atlas 不会关闭进程。默认情况下,所有新项目都会启用 Encryption at Rest KMS network access denied 警报,用于通知任何 KMS 网络访问故障。您可以配置警报设置。

如果 Atlas 关闭集群,则会发生以下事件:

  • Atlas 向 Project Owner 发送一封电子邮件,列出所有受影响的集群。

  • Clusters 页面反映 Atlas 由于静态加密设置无效而禁用了您的集群。

您无法在已禁用的集群上读取或写入数据。您可以提交对已禁用集群的更新,例如磁盘和实例大小更改。一旦有人恢复您的加密密钥,Atlas 就会处理这些更改。Atlas 会继续执行维护并应用安全补丁。已禁用的集群会保留您的所有数据,因此仍会继续计费。

注意

虚拟机电源

当集群被禁用时,Atlas 不会停止集群正在运行的虚拟机 (VM)。Atlas 可能会执行重启服务器的修补程序,但 VM 电源不会循环。

要重新获得数据访问权限:

“重试”按钮位于 Atlas Advanced Security 设置中“客户主密钥 ID”字段的右侧

更新配置后,点击 Try Again 进行验证。如果您不这样做,Atlas 将在下一次预定检查时进行验证。Atlas 确定您的配置有效后,所有 mongod 和 mongos 进程都会重启。

警告

如果您的密钥已删除,请恢复该密钥,以重新获得对集群的访问权限。在没有有效密钥的情况下,您无法使用客户密钥管理更改密钥或禁用静态加密。

要恢复已删除的密钥,请参阅密钥管理提供商的文档:

对于使用客户管理的密钥进行静态加密的集群, Atlas数据验证需要额外的KMS访问权限,以便在验证检查期间解密数据。

所有项目默认启用数据验证。如果额外的 KMS 费用、请求或安全考虑不符合您的要求,您可以选择退出。

启用数据验证后,验证实例会向KMS发出更多请求,以加密集群中的数据。

请求量:

Atlas 在验证过程中,每小时为每个副本集节点发出一个解密请求。具有七天验证窗口的标准三节点副本集会生成大约 500 个更多的 KMS 请求。

估计费用:

对于大多数集群,验证相关的 KMS 费用可忽略不计。有关当前定价,请参阅云提供商的文档。

安全注意事项:

  • 验证实例在 KMS 额外的 Atlas 审核日志中显示为额外主体。

  • 如果您对KMS使用IP白名单,则可能需要将验证实例IP范围添加到白名单。

  • 验证实例使用与集群节点相同的客户数托管密钥。

有关验证实例 IP 范围的当前列表,请联系 MongoDB 支持。

大多数KMS配置不需要对数据验证进行额外的IP白名单更改。但是,如果您的KMS使用基于IP 的访问权限控制(示例,具有防火墙限制的Azure Key Vault ),则必须将验证实例IP范围添加到允许列表中。否则,验证将失败。

要为KMS配置IP白名单:

AWS KMS通常允许按 IAM角色访问权限。如果您的 IAM 策略允许Atlas角色,则无需为验证实例进行额外的IP白名单配置。

Azure Key Vault 通常使用严格的 IP 允许列表。如果验证失败并且出现 KMS 访问错误,请将 Atlas 验证 IP 范围添加到 Azure Key Vault 网络规则中。

  1. 在 Azure 门户中,导航到您的 Key Vault。

  2. 从左侧菜单中选择 Networking。

  3. 在 Firewalls and virtual networks 下,添加 Atlas 验证 IP 范围。

  4. 单击 Save(连接)。

Google Cloud KMS通常允许通过服务帐户访问权限。如果您的 IAM 策略允许Atlas服务帐户,则无需为验证实例进行额外的IP白名单配置。

要了解有关数据验证的更多信息,请参阅 集群一致性的数据验证。