Azure Cosmos DB for MongoDB 是一种完全托管NoSQL数据库服务,可用于使用熟悉的 Azure MongoDB 存储 API 来存储、管理和查询大量键/值数据。 尽管Azure Cosmos DB提供内置安全功能来保护数据,但必须遵循最佳做法来进一步增强帐户、数据和网络配置的安全性。
本文提供有关如何最好地保护用于 MongoDB 部署的Azure Cosmos DB的指导。
网络安全
- 禁用公共网络访问,并且仅使用专用终结点:使用将网络访问限制到 Azure 中部署的虚拟网络的配置来部署 Azure Cosmos DB for NoSQL。 该帐户通过配置的特定子网公开。 然后,为整个帐户禁用公用网络访问,并为连接到该帐户的服务专门使用专用终结点。 有关详细信息,请参阅 配置虚拟网络访问 并从 专用终结点配置访问权限。
- 为实现网络隔离启用网络安全边界 (NSP):使用 NSP 通过定义网络边界来限制对 Azure Cosmos DB 帐户的访问,并将其与公共互联网访问隔离开来。 有关详细信息,请参阅 配置网络安全外围。
身份管理
- 使用托管标识从其他 Azure 服务访问你的帐户:通过使用 Microsoft Entra ID 中自动管理的标识,无需再管理凭据。 使用托管标识从其他 Azure 服务安全地访问 Azure Cosmos DB,而无需在代码中嵌入凭据。 有关详细信息,请参阅 Azure 资源的托管标识。
- 使用Azure控制平面基于角色的访问控制来管理帐户数据库和容器: Azure应用基于角色的访问控制以定义用于管理Azure Cosmos DB帐户、数据库和容器的精细权限。 此控件可确保只有经过授权的用户或服务才能执行管理作。 有关详细信息,请参阅授予控制平面访问权限。
- 使用本机数据平面基于角色的访问控制来查询、创建和访问容器中的项:实现基于数据平面角色的访问控制,以强制对Azure Cosmos DB容器中的项进行查询、创建和访问的最低特权访问。 此控制措施有助于保障您的数据操作。 有关详细信息,请参阅 授予数据平面访问权限。
- 分离用于数据和控制平面访问的Azure标识:对数据平面和控制平面操作使用不同的Azure标识,以减少特权升级的风险,并确保更好的访问控制。 这种分离通过限制每个标识的范围来提高安全性。
运输安全
- 使用和强制实施传输层安全性 (TLS) 1.3 实现传输安全性: 使用最新的加密协议强制实施 TLS 1.3 来保护传输中的数据,以确保更强加密并提高性能。 有关详细信息,请参阅 最低 TLS 强制要求。
数据加密
- 使用服务管理的密钥或客户管理的密钥(CMK):加密静态数据或动态数据: 通过在静态和传输中加密敏感数据来保护敏感数据。 为简单起见,使用服务管理的密钥或 CMK 可以更好地控制加密。 有关详细信息,请参阅配置客户管理的密钥。
- 使用 Always Encrypted 通过客户端加密保护数据:确保在将敏感数据发送到 Azure Cosmos DB 之前,已在客户端完成加密。 使用 Always Encrypted 实现额外的安全层。 有关详细信息,请参阅 Always Encrypted。