Docs 菜单
Docs 主页
/
MongoDB Atlas
/ / /

使用Azure Key Vault通过公共网络管理客户数密钥

在此页面上

  • 先决条件
  • 为项目启用客户托管密钥
  • 为 Atlas 集群启用客户密钥管理
  • 禁用项目的客户管理密钥
  • 撤销对加密密钥的访问权限
  • 轮换 Azure 密钥标识符
  • 相关主题

注意

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

  • 无服务器实例

  • M0 集群

  • M2/M5 集群

  • Flex 集群

要学习;了解详情,请参阅 限制。

您可以使用Azure Key Vault (AKV) 中的客户托管密钥 ( 集合扫描 ) 进一步加密Atlas中的静态静态数据。 本页介绍如何在您的Atlas项目以及该项目中的集群上使用 AKV配置客户密钥管理。

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

  • 使用 M10 或更大的集群。

  • 拥有Azure帐户和 Key Vault凭证,以及AKV中加密密钥的密钥标识符。

    • 对于该帐户,您必须拥有客户端ID、租户ID和密钥。

    • 对于 Key Vault,您必须拥有订阅ID、资源组名称 和 Key Vault 名称。

    要学习;了解如何配置这些Azure组件,请参阅 Azure文档。

    Atlas 在为 Atlas 项目中的集群启用静态加密时使用这些资源。

  • 如果您的App registrations 使用条件访问权限策略,则必须允许来自Atlas控制平面IP地址的请求。您无需启用对密钥保管库的公共访问权限。

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

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

    • 确保Atlas可以与 AKV 通信。为避免连接中断,请在节点IP地址发生变化时更新配置。示例,您可能需要更新入站访问权限规则。

    • 如果限制对 AKV 的访问权限,则当IP地址发生变化时,会产生更大的复杂性。示例,当您创建或更新集群时,您必须在 AKV 中向所有新IP地址授予访问权限。

您必须为项目启用集合扫描 ,然后才能在该项目中的集群上启用CMK。 您可以通过Atlas用户界面和Atlas Administration API为项目启用集合扫描

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

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

  3. 在侧边栏中,单击 Security 标题下的 Advanced

    显示“高级”页面。

2
3
4

客户 ID

输入Azure应用程序的Client ID (或Application ID )。 必须为Active Directory Application Azure key Vault Reader分配 角色。

租户 ID

输入 Active Directory 租户的 Tenant ID(或 Directory ID)。

密钥

输入与 Active Directory 租户关联的应用程序的未过期客户端密钥之一。

Azure 环境

选择 Active Directory 租户所在的 Azure 云。

5

订阅 ID

输入密钥保管库的 Subscription ID(订阅 ID)。

资源组名称

输入包含密钥保管库的Azure Resource GroupResource Group名称。

Key Vault 名称

输入密钥保管库的名称。 密钥保管库资源群组必须与Resource Group匹配,并且密钥保管库必须具有以下访问策略:

  • 关键管理操作

  • GET

  • 加密操作:

    • ENCRYPT

    • DECRYPT

注意

启用并设立指向 AKV 的私有端点连接后,您无法在此处修改凭证档案。

6

密钥标识符

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

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

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

要学习;了解更多信息,请参阅为项目启用和设置私有端点连接

8

如果使用Atlas Administration API配置Atlas使用Azure Private Link与AKV通信,以确保Atlas和 Key Vault 之间的所有流量都通过Azure的专用网络接口进行,则Atlas会将Require Private Networking状态设置为Active 。 如果状态为Inactive ,并且您希望Atlas使用 AKV 的私有端点连接,则可以选择完成 为项目启用和设置私有端点连接 的步骤。

注意

可请求“使用AKV通过私有端点进行静态加密”功能。 要为您的Atlas部署请求此功能,请联系您的客户经理。

9

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

1

例子

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \
--header "Accept: application/vnd.atlas.2024-05-30+json" \
--header "Content-Type: application/vnd.atlas.2024-05-30+json" \
--request PATCH "https://cloud.mongodb.com/api/atlas/v2/groups/66c9e8f1dd6c9960802420e9/encryptionAtRest" \
--data '
{
"azureKeyVault": {
"azureEnvironment": "AZURE",
"clientID": "b054a9ff-b60a-4cb6-8df6-20726eaefce6",
"enabled": true,
"keyIdentifier": "https://test-tf-export.vault.azure.net/keys/test/78b9134f9bc94fda8027a32b4715bf3f",
"keyVaultName": "test-tf-export",
"resourceGroupName": "test-tf-export",
"secret": "",
"subscriptionID": "009774e0-124f-4a69-83e0-ca8cd8acb4e2",
"tenantID": "1f6ef922-9303-402a-bae2-cc68810b023c"
}
}'

注意

启用并设立与 AKV 的私有端点连接后,无法修改以下设置:

  • keyVaultName

  • resourceGroupName

  • subscriptionID

2

要验证使用您通过AKV管理的密钥启用和配置静态加密的请求,请向encryptionAtRest端点发送GET请求。

例子

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \
--header "Accept: application/vnd.atlas.2024-05-30+json" \
--header "Content-Type: application/vnd.atlas.2024-05-30+json" \
--include \
--request GET "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/encryptionAtRest"
{
"azureKeyVault": {
"azureEnvironment": "AZURE",
"clientID": "632ff709-32a8-48a3-8224-30d2386fadaf",
"enabled": true,
"keyIdentifier": "https://EXAMPLEKeyVault.vault.azure.net/keys/EXAMPLEKey/d891821e3d364e9eb88fbd3d11807b86",
"keyVaultName": "string",
"requirePrivateNetworking": false,
"resourceGroupName": "string",
"subscriptionID": "a39012fb-d604-4cd1-8841-77f705f3e6d5",
"tenantID": "ee46317d-36a3-4472-a3dd-6549e901da0b",
"valid": true
}
}

在响应中,如果您的项目已成功启用使用集合扫描的静态加密,则enabledtrue 。 您可以设立私有网络,确保Atlas和 Key Vault 之间的所有流量都通过Azure的私有网络接口进行。 要学习;了解更多信息,请参阅为项目启用和设置私有端点连接。

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

注意

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

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

对于现有群组:

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

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

  3. 如果尚未出现,请单击侧边栏中的 Clusters(集群)。

    会显示集群页面。

2

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

3
  1. 展开 Additional Settings 面板。

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

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

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

4
  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 的访问权限。

注意

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

  • 无服务器实例

  • M0 集群

  • M2/M5 集群

  • Flex 集群

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

开始之前,请学习;了解关于轮换Azure密钥标识符。

您必须在与Atlas项目关联的 AKV 中创建新密钥。以下过程介绍如何通过在Atlas中指定新的密钥标识符来轮换Atlas项目密钥标识符。

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

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

  3. 在侧边栏中,单击 Security 标题下的 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 用户界面中显示横幅。在部署更改之前,请删除或禁用原始密钥标识符。

如果集群使用备份集群,在您验证没有快照使用过原始密钥密钥进行加密之前,请删除或禁用原始密钥标识符。

后退

Azure Key Vault