您可以使用Azure Key Vault (AKV) 中的客户托管密钥 ( 集合扫描 ) 进一步加密Atlas中的静态数据。本页介绍如何在Atlas项目以及该项目中的集群上使用 AKV 配置客户密钥管理。
先决条件
要使用 AKV 为MongoDB项目启用客户管理的密钥,您必须:
- 使用 M10 或更大的集群。
拥有Azure帐户和 Key Vault凭证,以及 AKV 中加密密钥的密钥标识符。
对于该帐户,您必须拥有客户端 ID、租户 ID 和密钥。要了解无密钥选项,请参阅使用 Azure Key Vault 管理客户数密钥(无密钥)。
对于 Key Vault,您必须拥有订阅ID、资源组名称 和 Key Vault 名称。
要学习;了解如何配置这些Azure组件,请参阅Azure文档。
Atlas 在为 Atlas 项目中的集群启用静态加密时使用这些资源。
为了帮助用户轻松创建或更改集群,您可以允许从公共位置访问密钥。如要缩小密钥范围并降低风险,请使用 TLS 和身份验证等控制措施。
要限制对定义的IP范围的访问权限,请允许从Atlas IP地址和集群节点的公共IP地址访问权限。
确保Atlas可以与 AKV 通信。为避免连接中断,请在节点IP地址发生变化时更新配置。示例,您可能需要更新入站访问权限规则。
如果限制对 AKV 的访问权限,则当IP地址发生变化时,会产生更大的复杂性。示例,当您创建或更新集群时,您必须在 AKV 中向所有新IP地址授予访问权限。
添加Atlas控制平面的传出IP地址。要学习;了解如何使用Atlas Administration API检索传出IP地址,请参阅获取Atlas控制平面IP地址或使用列出控制平面IP地址API操作。
如果您的 App registrations 使用条件访问权限策略(这种情况并不常见),则必须允许来自Atlas控制平面IP地址的请求和集群节点的公共IP地址,以进行应用注册。这仅用于应用注册,不用于密钥保管库访问权限。
警告
当您将AKV访问权限限制为特定IP范围时, Atlas在预配之前不会知道节点的出站IP解决。新添加的节点最初没有AKV连接, KMS操作会失败,直到您手动将节点的IP地址添加到防火墙。这种连接间隙可能会导致节点初创企业和灾难恢复模拟停止或失败。
对于执行区域服务中断模拟、扩展、拓扑结构更改或多区域故障转移的工作负载,请改为通过私有端点配置Azure Key Vault 。私有端点消除了IP解决依赖,确保KMS访问权限不间断。
为项目启用客户托管密钥
您必须为项目启用集合扫描 ,然后才能在该项目中的集群上启用CMK。 您可以通过Atlas用户界面和Atlas Administration API为项目启用集合扫描 。
配置身份验证方法。
Atlas支持两种 AKV身份验证方法:
服务主体(推荐):使用 Atlas 托管的特定于您的项目的服务主体对 AKV 进行身份验证(无密钥身份验证)。要学习;了解详情,请参阅使用Azure Key Vault (无密钥)管理客户数密钥。
静态档案:提供客户管理的凭证(此处介绍)。
输入您的 Account Credentials。
客户 ID | 输入Azure应用程序的 Client ID(或 Application ID)。确保您已为 Active Directory Application 分配必要的访问权限。要学习;了解更多信息,请参阅所需的访问权限。 |
租户 ID | 输入 Active Directory 租户的 Tenant ID(或 Directory ID)。 |
密钥 | 输入与 Active Directory 租户关联的应用程序的未过期客户端密钥之一。 |
Azure 环境 | 选择 Active Directory 租户所在的 Azure 云。 |
输入 Key Vault Credentials。
订阅 ID | 输入密钥保管库的 Subscription ID(订阅 ID)。 |
资源组名称 | 输入包含密钥保管库的Azure Resource Group的Resource Group名称。 |
Key Vault 名称 | 输入密钥保管库的名称。确保密钥保管库具有必要的访问策略。要学习;了解更多信息,请参阅所需的访问权限。 |
(可选)配置与 AKV 的私有端点连接。
要学习;了解更多信息,请参阅为项目启用和设置私有端点连接
向 encryptionAtRest 端点发送 PATCH请求。
注意
此 curl 命令使用服务帐户访问权限令牌 ( OAuth 2.0 ) 而不是API密钥进行身份验证。要学习;了解更多信息,请参阅Atlas Administration API入门。
例子
curl --header "Authorization: Bearer {ACCESS-TOKEN}" \ --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管理的密钥启用和配置静态加密的请求,请向 encryptionAtRest 端点发送 GET请求。
例子
curl --header "Authorization: Bearer {ACCESS-TOKEN}" \ --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 } }
在响应中,如果您的项目已成功启用使用集合扫描的静态加密,则enabled为true 。 您可以设立私有网络,确保Atlas和 Key Vault 之间的所有流量都通过Azure的私有网络接口进行。 要学习;了解更多信息,请参阅为项目启用和设置私有端点连接。
为 Atlas 集群启用客户密钥管理
为项目启用客户管理的密钥后,您必须为包含要加密的数据的每个Atlas 集群启用客户密钥管理。
注意
您必须拥有 Project Owner 角色才能为该项目中的集群启用客户密钥管理。
对于新集群,请在创建集群时将管理自己的加密密钥设置切换为 Yes(是)。
对于现有群组:
在Atlas中,转到项目的 Clusters 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在侧边栏中,单击 Database 标题下的 Clusters。
会显示集群页面。
禁用项目的客户管理密钥
您必须在项目中的每个集群上禁用客户密钥管理,然后才能禁用该项目的功能。
警告
在禁用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 的访问权限。
轮换 Azure 密钥标识符
开始之前,请学习;了解关于轮换Azure密钥标识符。
您必须在与Atlas项目关联的 AKV 中创建新密钥。以下过程介绍如何通过在Atlas中指定新的密钥标识符来轮换Atlas项目密钥标识符。
更新 Azure 档案。
如果 Azure Key Vault 选择器尚未激活,请单击 Azure Key Vault 。
如果 Encryption Key 选择器尚未激活,请单击 Encryption Key 。
在 Key Identifier(密钥标识符)字段中输入 Azure 密钥标识符。
包含新加密密钥标识符的完整URL 。示例:
https://mykeyvault.vault.azure.net/keys/AtlasKMSKey/a241124e3d364e9eb99fbd3e11124b23 重要
加密密钥必须属于为该项目配置的密钥保管库。单击 Key Vault 部分可查看当前为项目配置的密钥保管库。
单击 Update Credentials(连接)。
在密钥标识符轮换过程中,Atlas 在 Atlas 用户界面中显示横幅。在部署更改之前,请勿删除或禁用原始密钥标识符。
如果集群使用备份集群,在您验证没有快照使用过原始密钥密钥进行加密之前,请勿删除或禁用原始密钥标识符。
相关主题
如需在部署 Atlas 集群时使用“密钥管理”启用“静态加密”,请参阅“管理加密密钥”。
如需使用“密钥管理”对现有 Atlas 集群启用“静态加密”,请参阅“启用静态加密”。
如需进一步了解如何在 Atlas 中使用“密钥管理”进行静态加密,请参阅“使用客户密钥管理进行静态加密”。
要了解有关使用云备份进行静态加密的更多信息,请参阅存储引擎和云备份加密。
要启用搜索节点的客户密钥管理,请参阅启用搜索节点数据加密。