注意
您可以使用Azure Key Vault (AKV) 中的客户托管密钥 ( 集合扫描 ) 进一步加密Atlas中的静态静态数据。 您还可以将 AKV的所有流量配置为使用Azure Private Link。
本页介绍如何使用Atlas Administration API在AKV中自动设立Azure Private Link,确保Atlas和AKV之间的所有流量都通过Azure的专用网络接口进行。
Considerations
在通过私有端点使用AKV启用静态加密之前,请查看以下使用案例、优势、限制和先决条件。
用例(Use Case)
假设您的Atlas部署在单个云服务提供商上。 现在,您要求对AKV的所有访问权限都通过云提供商的私有网络基础架构进行。 本页将引导您完成为Atlas项目启用私有端点连接的步骤。
收益分析
您可以使用Atlas管理API,允许Atlas使用私有端点配置AKV静态加密。这样,流向AKV的所有流量都可以通过一设立私有端点,避免将AKV暴露给公共互联网或公共IP地址。它无需维护允许的IP地址,同时通过将所有AKV流量保持在Azure的专用网络内来增强数据安全性。
限制
Atlas不支持通过私有端点使用集合扫描对多云部署进行静态加密。如果您在具有多云集群的现有项目中通过 Azure Private Link 使用 CMK 启用静态加密,Atlas 会禁用项目中的多云集群。
对于处于
INACTIVE状态的项目, Atlas不支持通过私有端点使用集合扫描进行静态加密。设立与 AKV 的私有端点连接后,您将无法修改Key Vault Name Subscription IDResource Group NameAKV 的 、 或 ,但仍可轮换Microsoft Azure密钥标识符。要修改这些值,必须先删除所有私有端点连接。
多区域集群
如果您使用的是多区域集群,则必须在部署集群的每个地区中为 AKV 创建私有端点。
先决条件
要使用AKV为MongoDB项目启用客户管理的密钥,您必须:
使用 M10 或更大的集群。
拥有Azure帐户和 Key Vault凭证,以及AKV中加密密钥的密钥标识符。
对于该帐户,您必须拥有客户端ID、租户ID和密钥。
对于 Key Vault,您必须拥有订阅ID、资源组名称 和 Key Vault 名称。
要学习;了解如何配置这些Azure组件,请参阅Azure文档。
Atlas 在为 Atlas 项目中的集群启用静态加密时使用这些资源。
如果您的 App registrations 使用条件访问权限策略(这种情况并不常见),则必须允许来自Atlas控制平面IP地址的请求和集群节点的公共IP地址,以进行应用注册。这仅用于应用注册,不用于密钥保管库访问权限。
注意
您必须在 Azure 订阅资源提供程序下注册 Microsoft.Network 。要学习;了解详情,请参阅Azure文档。
步骤
为项目启用客户托管密钥
您必须为项目启用集合扫描 ,然后才能在该项目中的集群上启用CMK。 您可以通过Atlas用户界面和Atlas Administration API为项目启用集合扫描 。
AtlasGoAdvanced在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
#.在侧边栏中,单击 Security 标题下的 Database & Network Access。
在侧边栏中,单击 Advanced。
显示“高级”页面。
请输入您的 Account Credentials(激活码)。
客户 ID | 输入Azure应用程序的 Client ID(或 Application ID)。确保您已为 Active Directory Application 分配必要的访问权限。要学习;了解更多信息,请参阅所需的访问权限。 |
租户 ID | 输入 Active Directory 租户的 Tenant ID(或 Directory ID)。 |
密钥 | 输入与 Active Directory 租户关联的应用程序的未过期客户端密钥之一。 |
Azure 环境 | 选择 Active Directory 租户所在的 Azure 云。 |
输入 Encryption Key(密钥保管库凭证)。
密钥标识符 | 输入在密钥库中创建的密钥的完整 URL。 重要提示:密钥标识符必须以完整的Azure通用格式提供: |
(可选)配置与 AKV 的私有端点连接。
要学习;了解更多信息,请参阅为项目启用和设置私有端点连接
验证网络设置。
如果使用Atlas Administration API配置Atlas使用Azure Private Link与AKV通信,以确保Atlas和 Key Vault 之间的所有流量都通过Azure的专用网络接口进行,则Atlas会将Require Private Networking状态设置为Active 。 如果状态为Inactive ,并且您希望Atlas使用 AKV 的私有端点连接,则可以选择完成 为项目启用和设置私有端点连接 的步骤。
向 encryptionAtRest 端点发送 PATCH请求。
例子
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 的私有端点连接后,无法修改以下设置:
keyVaultNameresourceGroupNamesubscriptionID
验证项目的使用集合扫描的静态加密配置。
要验证使用您通过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 } }
在响应中,如果您的项目已成功启用使用集合扫描的静态加密,则enabled为true 。 您可以设立私有网络,确保Atlas和 Key Vault 之间的所有流量都通过Azure的私有网络接口进行。 要学习;了解更多信息,请参阅为项目启用和设置私有端点连接。
为项目启用和设置私有端点连接
您可以使用Atlas用户界面和Atlas Administration API启用和设立私有端点。要启用私有网络并在 AKV 中设立私有端点,您必须执行以下操作:
完成为项目启用客户管理密钥的步骤。
要学习;了解更多信息,请参阅为项目启用客户管理的密钥。
批准私有端点。
您可以使用Azure用户界面、CLI或 Terraform 批准私有端点连接。
批准后, Atlas会自动迁移您启用了客户托管密钥的所有集群(包括允许使用公共互联网连接的现有集群),以仅使用私有端点连接。在迁移集群以使用私有端点连接后,您可以选择禁用对 AKV 的公共互联网访问权限。默认下,Azure上的所有新Atlas集群将仅使用活动的私有端点连接。Atlas仅在私有端点获批的区域为现有集群部署额外节点。
批准私有端点后, Atlas最多可能需要三分钟才能反映私有端点的当前状态。对于每个地区中的私有端点,Approve Endpoints 页面显示每个私有端点的状态。要学习;了解更多信息,请参阅查看私有端点及其状态。
启用专用网络。
向端点发送PATCH请求,设立requirePrivateNetworking标志值设置为true 。
例子
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/vnd.atlas.2023-01-01+json" \ --header "Content-Type: application/vnd.atlas.2023-01-01+json" \ --include \ --request PATCH "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/encryptionAtRest/" \ --data ' { "azureKeyVault": { "azureEnvironment": "AZURE", "clientID": "632ff709-32a8-48a3-8224-30d2386fadaf", "enabled": true, "keyIdentifier": "https://EXAMPLEKeyVault.vault.azure.net/keys/EXAMPLEKey/d891821e3d364e9eb88fbd3d11807b86", "keyVaultName": "string", "requirePrivateNetworking": true, "resourceGroupName": "string", "secret": "string", "subscriptionID": "a39012fb-d604-4cd1-8841-77f705f3e6d5", "tenantID": "ee46317d-36a3-4472-a3dd-6549e901da0b" } }'
创建私有端点。
向您希望Atlas创建私有端点的 Azure POST地区 端点 发送 请求。您必须为希望Atlas创建私有端点的每个地区发送单独的请求。
重要
如果您使用的是多区域集群,则必须在部署集群的每个地区中为 AKV 创建私有端点。
例子
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/vnd.atlas.2023-01-01+json" \ --header "Content-Type: application/vnd.atlas.2023-01-01+json" \ --include \ --request POST "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/encryptionAtRest/AZURE/privateEndpoints" \ --data ' { "regionName": "US_CENTRAL" }'
批准私有端点后,将应用以下限制:
Atlas仅在私有端点获批的地区创建所有新集群。
Atlas仅在私有端点获批的区域为现有集群部署额外节点。
检查请求的状态。
要检查私有端点的状态,请向encryptionAtRest端点发送GET请求。
例子
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/vnd.atlas.2023-01-01+json" \ --header "Content-Type: application/vnd.atlas.2023-01-01+json" \ --include \ --request GET "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/encryptionAtRest/AZURE/privateEndpoints"
{ "links": [ { "href": "https://cloud.mongodb.com/api/atlas", "rel": "self" } ], "results": [ { "cloudProvider": "AZURE", "errorMessage": "string", "id": "24-hexadecimal-digit-string", "regionName": "string", "status": "INITIATING", "privateEndpointConnectionName": "string" } ], "totalCount": 0 }
批准私有端点后, Atlas最多可能需要三分钟才能反映私有端点的当前状态。 私有端点可能处于以下状态之一:
INITATING | 指示Atlas进程创建私有端点。 |
PENDING_ACCEPTANCE | 表示私有端点尚未获得批准。 您必须接受私有端点才能允许Atlas使用它。 |
活跃的 | 表示私有端点已获批准, Atlas可以或正在使用它。 |
PENDING_RECREATION | 表示私有端点被拒绝或删除, Atlas进程同一地区创建新的私有端点。 |
已失败 | 表示创建私有端点失败。 |
删除 | 表示Atlas进程删除私有端点。 |
为项目启用使用 集合扫描 的静态加密(通过专用网络)后,您可以为项目中的每个Atlas 集群启用使用 集合扫描 的静态 加密 。
为 Atlas 集群启用客户密钥管理
为项目启用客户管理的密钥后,您必须为包含要加密的数据的每个Atlas 集群启用客户密钥管理。 如果您为Atlas项目配置了私有端点连接, Atlas会自动迁移您已启用客户托管密钥的所有集群(包括允许使用公共互联网连接的现有集群),以仅使用私有端点连接。
注意
您必须拥有 Project Owner 角色才能为该项目中的集群启用客户密钥管理。
对于新集群,请在创建集群时将“管理自己的加密密钥”设置切换为Yes (如果尚未启用)。
对于现有群组:
AtlasGoClusters在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在侧边栏中,单击 Database 标题下的 Clusters。
会显示集群页面。
禁用项目的客户管理密钥
要为项目禁用集合扫描 ,必须先删除与项目关联的所有私有端点,无论其状态如何。如果您尝试为与活动私有端点关联的项目禁用集合扫描 , Atlas会显示错误。
删除项目的所有私有端点后,必须先禁用项目中每个集群的客户密钥管理,然后再禁用项目的功能。
警告
在禁用Atlas项目中的客户密钥管理之前,请勿禁用或删除Atlas项目中的任何集群使用的任何AKV密钥。 如果Atlas无法访问权限AKV密钥,则任何经该密钥加密的数据都将无法访问。
为项目创建新端点
为项目启用并设置私有端点连接后,您可以随时从Atlas用户界面和Atlas Administration API添加其他端点。
AtlasGoAdvanced在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
#.在侧边栏中,单击 Security 标题下的 Database & Network Access。
在侧边栏中,单击 Advanced。
显示“高级”页面。
批准私有端点。
您必须批准 AKV 中的每个端点才能使用私有端点。您可以使用Azure用户界面、CLI或 Terraform 批准私有端点连接。
对于每个地区中的私有端点,Approve Endpoints 页面显示每个私有端点的状态。批准私有端点后, Atlas最多可能需要三分钟才能反映私有端点的当前状态。要学习;了解有关私有端点状态的更多信息,请参阅查看私有端点及其状态。
创建私有端点。
向您希望Atlas创建私有端点的 Azure POST地区 端点 发送 请求。您必须为希望Atlas创建私有端点的每个地区发送单独的请求。
例子
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/vnd.atlas.2023-01-01+json" \ --header "Content-Type: application/vnd.atlas.2023-01-01+json" \ --include \ --request POST "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/encryptionAtRest/AZURE/privateEndpoints" \ --data ' { "regionName": "US_CENTRAL" }'
检查请求的状态。
要检查私有端点的状态,请向encryptionAtRest端点发送GET请求。
例子
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/vnd.atlas.2023-01-01+json" \ --header "Content-Type: application/vnd.atlas.2023-01-01+json" \ --include \ --request GET "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/encryptionAtRest/AZURE/privateEndpoints"
{ "links": [ { "href": "https://cloud.mongodb.com/api/atlas", "rel": "self" } ], "results": [ { "cloudProvider": "AZURE", "errorMessage": "string", "id": "24-hexadecimal-digit-string", "regionName": "string", "status": "INITIATING", "privateEndpointConnectionName": "string" } ], "totalCount": 0 }
批准私有端点后, Atlas最多可能需要三分钟才能反映私有端点的当前状态。 私有端点可能处于以下状态之一:
INITATING | 指示Atlas进程创建私有端点。 |
PENDING_ACCEPTANCE | 表示私有端点尚未获得批准。 您必须接受私有端点才能允许Atlas使用它。 |
活跃的 | 表示私有端点已获批准, Atlas可以或正在使用它。 |
PENDING_RECREATION | 表示私有端点被拒绝或删除, Atlas进程同一地区创建新的私有端点。 |
已失败 | 表示创建私有端点失败。 |
删除 | 表示Atlas进程删除私有端点。 |
拒绝或删除私有端点连接
您可以从Atlas用户界面和Atlas Administration API删除私有端点连接。
AtlasGoAdvanced在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
#.在侧边栏中,单击 Security 标题下的 Database & Network Access。
在侧边栏中,单击 Advanced。
显示“高级”页面。
要删除私有端点,请向Atlas Administration API 端点发送 DELETE请求,并指定项目的ID和要删除的私有端点的 ID。您可以通过向Atlas Administration API “为一个提供商端点返回一个私有端点服务”发送 GET请求检索要删除的私有端点的ID 。
例子
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/vnd.atlas.2024-10-23+json" \\ or a different version of the Atlas Admin API --header "Content-Type: application/json" \ --include \ --request DELETE "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/encryptionAtRest/AZURE/privateEndpoints/{endpointId}" \ --data ' { "cloudProvider": "AZURE", "regions": [ "string" ] }'
删除私有端点时,在Atlas删除私有端点时,私有端点会转换为 DELETING 状态。
如果您从Azure用户界面中删除或拒绝活动的私有端点, Atlas会自动尝试在同一地区中重新创建新的私有端点。您可以从Atlas用户界面和Atlas Administration API检查私有端点的状态。要学习;了解更多信息,请参阅查看私有端点及其状态。
当Atlas尝试创建新的私有端点时,您拒绝或删除的私有端点的状态将转换为PENDING_RECREATION ,并且Atlas尝试创建的新端点处于INITIATING状态。 创建新的私有端点后,必须予以批准。
查看私有端点及其状态
您可以从Atlas用户界面和Atlas Administration API查看各个区域中的私有端点及其状态。
AtlasGoAdvanced在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
#.在侧边栏中,单击 Security 标题下的 Database & Network Access。
在侧边栏中,单击 Advanced。
显示“高级”页面。
每个私有端点均可处于以下状态之一:
待批准 | 表示私有端点尚未获得批准。 您必须接受私有端点才能允许Atlas使用它。 |
活跃的 | 表示私有端点已获批准, Atlas可以或正在使用它。 |
已失败 | 表示创建私有端点失败。 |
您可以从Atlas AdministrationGET API查看私有端点及其状态,方法是向Atlas Administration APIencryptionAtRest 获取所有端点或获取一个端点发送 请求,为此,您必须在路径。
例子
返回一个项目的所有私有端点
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/vnd.atlas.2024-10-23+json" \\ or a different version of the Atlas Admin API --header "Content-Type: application/json" \ --include \ --request GET "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/encryptionAtRest/AZURE/privateEndpoints/"
每个私有端点均可处于以下状态之一:
INITATING | 指示Atlas进程创建私有端点。 |
PENDING_ACCEPTANCE | 表示私有端点尚未获得批准。 您必须接受私有端点才能允许Atlas使用它。 |
活跃的 | 表示私有端点已获批准, Atlas可以或正在使用它。 |
PENDING_RECREATION | 表示私有端点被拒绝或删除, Atlas进程同一地区创建新的私有端点。 |
已失败 | 表示创建私有端点失败。 |
删除 | 表示Atlas进程删除私有端点。 |
禁用项目的私有端点连接
要禁用项目的私有端点连接,必须首先删除与项目关联的所有私有端点,无论其状态如何。如果项目与活动的私有端点关联, Atlas不会禁用项目的私有端点连接。
删除项目的所有私有端点后,您可以使用Atlas用户界面和Atlas Administration API禁用项目的私有端点连接。
AtlasGoAdvanced在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
#.在侧边栏中,单击 Security 标题下的 Database & Network Access。
在侧边栏中,单击 Advanced。
显示“高级”页面。
要禁用私有端点连接,请向端点发送 PATCH请求,并将 requirePrivateNetworking 布尔标志值设立为 false。
例子
{ "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", "secret": "string", "subscriptionID": "a39012fb-d604-4cd1-8841-77f705f3e6d5", "tenantID": "ee46317d-36a3-4472-a3dd-6549e901da0b" } }
撤销对加密密钥的访问权限
您可以从AKV中撤销 Atlas 对加密密钥的访问权限,以冻结您的数据。 当您撤销对加密密钥的访问权限时, Atlas会自动暂停您的集群。
轮换 Azure 密钥标识符
注意
开始之前,请学习;了解关于轮换Azure密钥标识符。
您必须在与Atlas项目关联的AKV中创建新密钥。 以下过程介绍如何通过在Atlas中指定新的密钥标识符来轮换Atlas项目密钥标识符。
AtlasGoAdvanced在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
#.在侧边栏中,单击 Security 标题下的 Database & Network Access。
在侧边栏中,单击 Advanced。
显示“高级”页面。
更新 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 中使用“密钥管理”进行静态加密,请参阅“使用客户密钥管理进行静态加密”。
要了解有关 MongoDB 静态加密的更多信息,请参阅 MongoDB Server 文档中的静态加密。
要了解有关使用云备份进行静态加密的更多信息,请参阅存储引擎和云备份加密。
要启用搜索节点的客户密钥管理,请参阅启用搜索节点数据加密。