Mongodb生产安全清单

但愿看完本章,能帮你增强数据的安全性,没有最安全,只有更安全

看到群里有小伙伴发的截图,赶忙写了这篇文章,但愿能帮助到你们。
Mongodb生产安全清单数据库

数据库安全清单

一、启用访问控制并强制执行身份验证
 安全

启用访问控制并指定身份验证机制。可使用MongoDB的SCRAM或x.509身份验证机制,也能够与现有的Kerberos / LDAP基础结构集成。身份验证要求全部客户端和服务器在链接到系统以前都必须提供有效的凭据。服务器

二、配置基于角色的访问控制
 网络

首先建立一个用户管理员,而后建立其余用户。为访问系统的每一个人/应用程序建立一个惟一的MongoDB用户。
遵循最小特权原则。建立角色,以定义一组用户所需的确切访问权限。而后建立用户,并仅为其分配执行操做所需的角色。用户能够是我的或客户端应用程序。
用户能够在不一样的数据库之间拥有特权。若是用户须要对多个数据库的特权,请建立一个具备授予适用数据库特权的角色的单个用户,而不是在不一样的数据库中屡次建立该用户。ide

三、加密通讯(TLS / SSL)
 
配置MongoDB以对全部传入和传出链接使用TLS / SSL。使用TLS / SSL加密MongoDB部署的mongod和mongos组件之间以及全部应用程序和MongoDB之间的通讯。工具

从版本4.0开始,MongoDB使用本机TLS / SSL OS库:
Windows安全通道(Schannel)
Linux / BSD OpenSSL
macOS安全传输加密

从版本4.0开始,MongoDB在可用TLS 1.1+的系统上禁用对TLS 1.0加密的支持。操作系统

四、加密和保护数据命令行

从MongoDB Enterprise 3.2开始,可使用WiredTiger存储引擎的本机静态加密来加密存储层中的数据。
 不使用WiredTiger的加密功能,则应在每一个主机上使用文件系统,设备或物理加密(例如dm-crypt)对MongoDB数据进行加密。使用文件系统权限保护MongoDB数据。 MongoDB数据包括数据文件,配置文件,审核日志和密钥文件。
 将日志收集到中央日志存储中。这些日志包含DB身份验证尝试,包括源IP地址。日志

五、网络限制
 
确保MongoDB在受信任的网络环境中运行,并配置防火墙或安全组以控制MongoDB实例的入站和出站流量。
仅容许受信任的客户端访问可以使用MongoDB实例的网络接口和端口。例如,使用IP白名单来容许从受信任的IP地址进行访问。

能够网络和配置强化:
net.bindIp配置设置
security.clusterIpSourceWhitelist配置设置
authentication限制,用于指定每用户IP白名单
 禁用直接SSH访问

六、系统访问审计

企业版支持:
跟踪对数据库配置和数据的访问和更改。 MongoDB Enterprise包含系统审核工具,能够记录MongoDB实例上的系统事件(例如,用户操做,链接事件)。这些审核记录能够进行法医分析,并容许管理员验证适当的控制措施。您能够设置过滤器以记录特定事件,例如身份验证事件。

七、用专用用户运行MongoDB
 

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

八、使用安全配置选项运行MongoDB

MongoDB支持对某些服务器端操做执行JavaScript代码:mapReduce和$ where。若是不使用这些操做,请在命令行上使用--noscripting选项禁用服务器端脚本。
 保持输入验证启用。默认状况下,MongoDB经过net.wireObjectCheck设置启用输入验证。这样能够确保mongod实例存储的全部文档都是有效的BSON。

Mongodb生产安全清单

生产环境中咱们该怎么作呢?

一、数据库

bind_ip 绑定具体的内网ip
修改默认监听端口
开启身份认证,启用访问控制,使用强密码
数据库用户开放最小权限
若是是老版本:关闭掉http接口(net.http.enabled = False)和关闭掉Rest API接口(net.http.RESTInterfaceEnabled=False)

二、系统网络

开启网络防火墙
若是是云主机可使用安全组和Iptables
只容许内网访问
不使用root用户启动,普通用户启动

三、加密和审计

程序访问密码加密传输加密开启审计功能

相关文章
相关标签/搜索