[mongo] [security] 9.1 安全基本及安全措施

举报
dber 发表于 2021/01/27 11:18:41 2021/01/27
【摘要】 参考文档:MongoDB provides various features, such as authentication, access control, encryption, to secure your MongoDB deployments. Some key security features include:Authentication Authorization TLS/S...

参考文档:

MongoDB provides various features, such as authentication, access control, encryption, to secure your MongoDB deployments. Some key security features include:

Authentication Authorization TLS/SSL

Authentication

SCRAM

x.509

Role-Based Access Control

Enable Access Control

Manage Users and Roles

TLS/SSL (Transport Encryption)

Configure mongod and mongos for TLS/SSL

TLS/SSL Configuration for Clients

Enterprise Only Encryption  

Kerberos Authentication

LDAP Proxy Authentication

Encryption at Rest

Auditing

Client-Side Field Level Encryption  

Security Checklist

MongoDB also provides the Security Checklist for a list of recommended actions to protect a MongoDB deployment.


安全措施

本文档提供了应实施的安全措施列表,以保护MongoDB安装。该列表并非详尽无遗。

实施前检查清单/注意事项

➤启用访问控制并强制执行身份验证

 

启用访问控制并指定身份验证机制。您可以使用MongoDB的SCRAM或x.509身份验证机制,也可以与现有的Kerberos / LDAP设施集成。身份验证要求所有客户端和服务器在连接到系统之前都必须提供有效的凭据。

请参阅身份验证和 启用访问控制

➤配置基于角色的访问控制

 

首先创建一个用户管理员,然后创建更多的用户。为访问系统的每个使用者/应用程序创建一个唯一的MongoDB用户。


遵循最小权限原则。创建角色,以定义一组用户所需的准确访问权限。创建用户,并仅为其分配执行操作所需的角色。用户可以是个人或客户应用程序。

建议:

用户可以在跨数据库之间拥有权限。如果用户需要在多个数据库上的权限,请使用授予相应数据库权限的角色创建一个用户,而不是在不同的数据库中多次创建该用户。

请参阅基于角色的访问控制Role-Based Access Control)和 管理用户和角色

➤加密通信(TLS / SSL)

 

将MongoDB配置为对所有传入和传出连接使用TLS/SSL。使用TLS/SSL加密MongoDB部署的mongod和mongos组件之间以及所有应用程序和MongoDB之间的通信。

从版本4.0开始,MongoDB使用本机TLS/SSL OS库:

Windows Secure Channel(Schannel)
Linux/BSD OpenSSL
macOS Secure Transport

注意

从版本4.0开始,MongoDB在可用TLS 1.1+的系统上禁用对TLS 1.0加密的支持。有关更多详细信息,请参阅禁用TLS 1.0

请参阅为TLS / SSL配置mongod和mongos

➤加密和保护数据

  从MongoDB Enterprise 3.2开始,您可以使用WiredTiger存储引擎“静态加密”存储层中的数据
  如果您不使用WiredTiger的静态加密,MongoDB数据应该在每个主机上使用文件系统、设备或物理加密(例如dm crypt)进行加密。使用文件系统权限保护MongoDB数据。MongoDB数据包括数据文件、配置文件、审计日志和密钥文件。
 

将日志收集到日志存储区。这些日志包含DB身份验证尝试,包括源IP地址。

➤限制网络泄露

 

确保MongoDB在受信任的网络环境中运行,并配置防火墙或安全组来控制MongoDB实例的入站和出站流量。

只允许受信任的客户端访问MongoDB实例所在的网络接口和端口。例如,使用IP白名单允许从受信任的IP地址进行访问(请参阅)

注意

从MongoDB 3.6开始,MongoDB二进制文件、mongod和mongos默认绑定到localhost。从MongoDB版本2.6到3.4,默认情况下,只有来自官方MongoDB RPM(Red Hat、CentOS、Fedora Linux和衍生工具)和DEB(Debian、Ubuntu和衍生工具)包的二进制文件才会绑定到localhost。要了解有关此更改的更多信息,请参阅 Localhost Binding Compatibility Changes

扩展:

  禁用ssh root访问。

➤审核系统活动

 

跟踪对数据库配置和数据的访问和更改。 MongoDB Enterprise 包含系统审核工具,该工具可以记录MongoDB实例上的系统事件(例如,用户操作,连接事件)。这些审核记录可以进行检测分析,并允许管理员验证适当的控制措施。可设置过滤器以记录特定事件,例如身份验证。

请参阅 AuditingConfigure Auditing

➤用专用用户运行mongodb

 

使用专用的操作系统用户帐户运行MongoDB进程。确保该帐户具有访问数据的权限,但没有不必要的权限。

有关运行MongoDB的更多信息,请参阅Install MongoDB 

➤使用安全配置选项运行

  MongoDB的支持JavaScript代码对于某些服务器端操作的执行:mapReduce$where, $accumulator,和$function。如果不使用这些操作,请使用--noscripting命令行上的选项禁用服务器端脚本。
  启用输入验证。默认情况下,MongoDB通过该net.wireObjectCheck设置启用输入验证。这样可以确保mongod实例存储的所有文档 都是有效的BSON

➤《安全实施指南》(如果适用)

  《安全技术实施指南》(STIG)包含美国国防部内部署的安全指南。MongoDB Inc.可根据需要提供其STIG。请索取更多信息。

➤考虑安全标准合规性

  对于需要符合HIPAA或PCI-DSS要求的应用程序,请参考MongoDB安全参考架构, 以了解更多有关如何使用关键安全功能来构建兼容的应用程序基础结构的信息。

定期/正在进行的生产检查

  定期检查MongoDB产品CVE并升级您的产品。
  请咨询MongoDB生命周期终止日期并升级您的MongoDB安装。通常,尝试保持最新版本。
 

确保您的信息安全管理系统策略和过程扩展到MongoDB安装,包括执行以下操作:

  • 定期将修补程序应用于计算机并查看准则。
  • 查看策略/过程更改,尤其是对网络规则的更改,以防止MongoDB意外暴露于Internet。
  • 查看MongoDB数据库用户并定期轮换他们。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。