Docs 菜单
Docs 主页
/
MongoDB Atlas
/ /

使用 Azure 密钥保管库管理客户密钥

在此页面上

  • 使用 Azure Key Vault 启用客户管理的密钥
  • 例子
  • 必需的访问权限
  • 先决条件
  • 为项目启用客户托管密钥
  • 为 Atlas 集群启用客户密钥管理
  • 禁用项目的客户管理密钥
  • 撤销对加密密钥的访问权限
  • 警报
  • 轮换 Azure 密钥标识符
  • MongoDB 主密钥 - MongoDB 责任
  • 轮换 Azure 密钥 ID - 您的责任
  • 先决条件
  • 步骤
  • 警报
  • 中断期间的 Azure Key Vault 故障转移
  • 相关主题

注意

  • 此功能不适用于 M0 免费集群、M2M5 集群。如需了解更多信息,请参阅 Atlas M0(免费集群)、M2 和 M5 限制

  • 无服务器实例目前不支持此功能。要了解更多信息,请参阅无服务器实例限制

您可以使用 Azure Key Vault (AKV) 中的客户托管密钥 (CMK) 进一步加密 Atlas 中的静态数据。

Atlas 使用您的 Azure Key Vault CMK来加密和解密 MongoDB 主密钥。这些 MongoDB 主密钥用于加密集群数据库文件和云提供商快照。要详细了解 Atlas 如何使用CMK进行加密,请参阅使用 Azure Key Vault 启用客户管理的密钥。

当您使用自己的云提供商KMS时,Atlas 每90天自动轮换 MongoDB 主密钥。这些密钥滚动轮换,并且该过程不需要重写数据。

本页介绍在您的 Atlas 项目中使用 AKV 配置客户密钥管理。

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

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

Customer-Managed Key (CMK)

客户管理的密钥是你在 Azure Key Vault 中创建、拥有和管理的加密密钥。您可以在 Azure Key Vault 中创建 CMK ,并在 项目 级别将其连接到 Atlas。要了解有关 Azure Key Vault 中使用的 CMK 的更多信息,请参阅 Azure 文档

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

MongoDB Master Key

Atlas 集群中的每个节点都会创建一个 MongoDB 主密钥。 MongoDB 主密钥是 MongoDB Server 用于通过WiredTiger 存储引擎加密文件的加密密钥。 Atlas 在本地保存密钥的加密副本。

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

Per-Database Encryption Key

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

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

请考虑以下针对三节点副本集的加密层次结构。 Atlas 使用 Azure Key Vault 中的CMK为集群中的每个节点加密唯一的 MongoDB 主密钥。每个节点还包含三个数据库,每个数据库都使用每个数据库唯一的加密密钥进行加密。当集群启动时,Atlas 使用 Azure Key Vault 中的CMK解密 MongoDB 主密钥,并将其提供给 MongoDB Server。

注意

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

使用 AKV 和 Atlas 的 CMK 工作流程示意图
点击放大

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

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

要使用 Azure Key Vault 为 MongoDB 项目启用客户管理的密钥,您必须:

  • 拥有 Active Directory 租户的Tenant ID(租户 ID)(或 Directory ID(目录 ID))。

  • 针对与“活动目录”租户关联的 Azure 应用程序设置 Client ID(或 Application ID)和未过期应用程序 Password

  • 具有包含密钥保管库的Azure Resource GroupResource Group名称。

  • 有一个被分配 Azure key Vault Reader 角色的 Active Directory Application

  • 拥有 Azure Key Vault 的Subscription IDKey Vault Name。确保 Key Vault 资源组与指定给 Resource Group的资源组名称匹配。

    Key Vault 必须具备以下访问策略:

    • 关键管理操作

      • GET

    • 加密操作

      • ENCRYPT

      • DECRYPT

  • 具有指定 Azure Key Vault 中密钥的Key Identifier

    Atlas 在为 Atlas 项目中的集群启用静态加密时使用这些资源。考虑创建专用于 Atlas 项目的 Azure 应用程序、资源组和密钥保管库。

    要了解如何配置引用的 Azure 组件,请参阅 Azure 文档。

  • 为了帮助用户轻松创建或更改集群,您可以允许从公共位置访问密钥。如要缩小密钥范围并降低风险,请使用 TLS 和身份验证等控制措施。

  • 要限制访问已定义的 IP 范围,请 允许访问 Atlas IP 地址 和集群节点的公共 IP 地址。

    • 确保 Atlas 可以与您的密钥保管库通信。为避免连接中断,请在节点 IP 地址变更时更新配置。例如,您可能需要更新入站访问规则

    • 如果限制对密钥保管库的访问,则当 IP 地址发生更改时,会产生更大的复杂性。例如,当您创建或更新集群时,必须向任何新 IP 地址授予 Azure 密钥保管库的访问权限。当您删除集群或删除节点时,您应该实施删除 IP 地址和密钥的进程。

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

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

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

  3. 单击侧边栏中的 Advanced(支持)。

2
3
4
客户 ID
输入 Azure 应用程序的 Client ID(或Application ID)。
租户 ID
输入 Active Directory 租户的 Tenant ID(或 Directory ID)。
密钥
输入其中一个未过期的应用程序 Passwords
Azure 环境
选择 Active Directory 租户所在的 Azure 云。
5
订阅 ID
输入密钥保管库的 Subscription ID(订阅 ID)。
资源组名称
输入密钥保管库的 Resource Group(订阅 ID)。
Key Vault 名称
输入密钥保管库的名称。
6
密钥标识符

输入在密钥库中创建的密钥的完整 URL

重要

密钥标识符必须以完整的 Azure 通用格式 提供

https://{keyvault-name}.vault.azure.net/{object-type}/{object-name}/{object-version}
7

在加密过程中,Atlas 会在 Atlas 控制台中显示横幅。

为项目启用客户管理的密钥后,您必须为包含要加密的数据的每个 Atlas 集群启用客户密钥管理。

注意

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

对于新集群,请在创建集群时将管理自己的加密密钥设置切换为 Yes(是)。

对于现有群组:

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

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

  3. 如果 Clusters(数据库部署)页面尚未出现,请单击侧边栏中的 Database(数据库)。

2

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

  1. ipAddresses端点发送 GET 请求。 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 访问列表。有关更多信息,请参阅使用AWSAzureGCP管理客户密钥的先决条件。

3

对于包含要加密的数据的集群,单击省略号 ...,然后选择 Edit Configuration

4
  1. 展开 Additional Settings 面板。

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

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

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

您必须在项目中的每个集群上禁用客户密钥管理,然后才能禁用该项目的功能。

重要

在禁用 Atlas 项目中的客户密钥管理之前,请禁用或删除 Atlas 项目中任何集群所使用的任何 AKV 密钥。如果 Atlas 无法访问 AKV 密钥,则任何通过此密钥加密的数据都将无法访问。

您可以从 AKV 中撤销 Atlas 对加密密钥的访问权限。撤销对加密密钥的访问权限时,Atlas 会自动暂停您的集群,除非您的 AKV IP 访问列表限制 Atlas 管控平面。

要允许自动暂停集群,您必须:

  • 禁用 AKV 的 IP 访问列表

  • 支持从 Atlas 控制面访问 AKV

注意

MongoDB 随着时间的推移添加了新的 Atlas 控制平台 IP 地址。您必须保持 IP 访问列表及时更新,以便在为 AKV 使用 IP 访问列表时允许集群自动暂停。

如果您在撤消对加密密钥的访问权限时,AKV 的 IP 访问列表限制从 Atlas 控制平台进行访问,则必须手动暂停集群才能撤消 Atlas 的访问权限。

为项目配置客户密钥管理后,Atlas 会自动创建 encryption key rotation alert

要重置此警报,请轮换您的 Azure 密钥标识符。

注意

当您使用自己的云提供商KMS时,Atlas 每90天自动轮换 MongoDB 主密钥。这些密钥滚动轮换,并且该过程不需要重写数据。

Atlas 不会自动轮换用于 Azure Key Vault 的密钥标识符。

当您为 Atlas 项目 启用静态加密时, Atlas 会自动创建一个 来提醒您默认每 天轮换 Azureencryption key rotation alert 密钥标识符。90

您可以 轮换 您自己将 CMK 存储在 Azure Key Vault 中,或将 Azure Key Vault 配置为自动轮换密钥。如果配置 自动轮换 在 Azure Key Vault 中,默认轮换时间段约为365 天。

您如果已在 Azure 密钥保管库中设置自动轮换,并且不希望收到每 90 天轮换 Azure 密钥标识符的 Atlas 警报,则可以将默认警报期限修改为大于 365 天。

您必须在与 Atlas 项目关联的 Azure 密钥保管库中创建一个新密钥。

以下步骤记录了如何通过在 Atlas 中指定新的密钥标识符来轮换 Atlas 项目“密钥标识符”。

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

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

  3. 单击侧边栏中的 Advanced(支持)。

2
3
  1. 如果 Azure Key Vault 选择器尚未激活,请单击 Azure Key Vault

  2. 如果 Encryption Key 选择器尚未激活,请单击 Encryption Key

  3. Key Identifier(密钥标识符)字段中输入 Azure 密钥标识符。

    包括新加密密钥标识符的完整 URL。 例如:

    https://mykeyvault.vault.azure.net/keys/AtlasKMSKey/a241124e3d364e9eb99fbd3e11124b23

    重要

    加密密钥必须属于为该项目配置的密钥保管库。单击 Key Vault 部分可查看当前为项目配置的密钥保管库。

  4. 单击 Update Credentials(连接)。

在密钥标识符轮换过程中,Atlas 在 Atlas 用户界面中显示横幅。在部署更改之前,请删除或禁用原始密钥标识符。

如果集群使用备份您的集群,请不要删除或禁用原始密钥标识符,直到您验证没有快照使用该密钥进行加密。

Atlas 系统会在此程序完成后重置 encryption key rotation alert 警报。

在区域中断期间,您的 Azure KMS 区域可能不可用。如果发生这种情况,Azure 会自动将传入的 KMS 请求路由到预先分配的从节点区域。要了解详情,请参阅 Azure Key Vault 故障转移 区域对。

如果两个区域均已关闭,您可以手动将密钥迁移到区域配对之外的区域。要了解更多信息,请参阅 跨区域移动密钥保管库。

注意

如果启用了使用客户密钥管理进行静态加密,就可以在中断期间至少一个节点仍然可用的情况下执行加密和解密操作。

  • 如需在部署 Atlas 集群时使用“密钥管理”启用“静态加密”,请参阅“管理加密密钥”。

  • 如需使用“密钥管理”对现有 Atlas 集群启用“静态加密”,请参阅“启用静态加密”。

  • 如需进一步了解如何在 Atlas 中使用“密钥管理”进行静态加密,请参阅“使用客户密钥管理进行静态加密”。

  • 要了解有关 MongoDB 静态加密的更多信息,请参阅 MongoDB 服务器文档中的静态加密

  • 要了解有关使用云备份进行静态加密的更多信息,请参阅存储引擎和云备份加密

← 通过 AWS KMS 管理客户密钥