MongoDB的认证

身居漏室,心系天下

认证是验证客户端的身份的过程。当启用时,MongoDB要求的所有客户端提供凭据来访问MongoDB的数据库。默认情况下,MongoDB的不需要验证。MongoDB的支持多种认证机制或方法,客户端可以用它来验证他们的身份。这些机制允许MongoDB的集成到现有的认证系统你的环境可用。MongoDB的默认身份验证方法是一种挑战和响应机制。MongoDB中也支持X509证书验证,LDAP代理身份验证和Kerberos身份验证。

MongoDB的要求对所有客户端的身份验证,包括在部署MongoDB的所有组件之间的连接。

认证是由不同的授权,这就决定了客户端的对资源和操作的访问。

一、验证机制和凭据存储
MongoDB的支持多种认证机制,以适应现有部署并使用现有的身份验证基础结构。要声明一个特定的身份验证机制,使用authenticationMechanisms参数。有关详细信息,请参阅启用客户端访问控制。

MongoDB-CR认证

MongoDB-CR是通过密码验证用户身份的质询-响应机制。MongoDB-CR在MongoDB默认启用不设置身份验证一个机制,在authenticationMechanisms参数。你也可以明确应用MongoDB-CR设置它作为authenticationMechanisms的值。当您启用的MongoDB-CR身份验证使用权限设置,MongoDB使用存储在admin数据库的system.users集合的凭据。


当您启用的ongoDB-CR认证使用的密钥文件的设置,你必须存储在每个mongod或mongos实例的密钥文件。 MongoDB使用作为存储在每个实例的密钥文件。请参阅生生成一个密钥文件的说明生成密钥文件。

X.509证书验证


MongoDB的支持使用X.509证书的验证与安全SSL连接。

为了验证服务器,客户端可以使用X.509证书代替用户名和密码。请参阅使用X.509的客户端身份验证的更多信息。

对于会员的身份验证,分片集群和副本集的成员可以使用X.509证书,而不是密钥文件。请参阅使用X.509的副本套装/分片群集成员身份验证的更多信息。

Kerberos身份验证

MongoDB企业版支持使用Kerberos服务认证。Kerberos是为大型客户机/服务器系统的行业标准身份验证协议。

用Kerberos使用MongoDB,你必须有一个正确配置Kerberos的部署,配置了Kerberos服务主体的MongoDB,并加入Kerberos用户主体的MongoDB。

请参阅Kerberos身份验证的Kerberos和MongoDB的更多信息。要配置MongoDB的使用Kerberos身份验证,请参阅在Linux使用MongoDB配置MKerberos身份验证和在Windows上使用MongoDB配置Kerberos身份验证。

LDAP代理权威认证

MongoDB的企业版通过轻量目录访问协议(LDAP)服务支持代理身份验证。请参阅验证使用SASL和LDAP。

MongoDB企业版对于Windows不包括LDAP认证支持。

MongoDB不支持LDAP身份验证中同时包含版本2.4和版本2.6碎片混合分片集群部署。

二、认证选项

客户端可以使用挑战响应认证,X.509,LDAP代理和Kerberos的方法。

MongoDB单一的MongoDB部署可以使用密钥文件和X.509方法彼此验证成员。

三、验证行为

本地主机异常
本地主机异常允许您在系统中创建的第一个用户之前启用身份验证。当激活时,该本地主机异常允许从本地主机接口的所有连接都完全访问该实例。唯一的例外只适用于当有一个MongoDB实例的admin数据库中没有用户文档。

如果你部署一个新的MongoDB系统时,使用本地主机的异常,创建的第一个用户必须是拥有权限来创建其他用户的管理员,如userAdmin或userAdminAnyDatabase角色的用户。请参阅创建一个用户管理员启用客户端访问控制和更多信息。

在一个分片群集的情况下,localhost的异常适用于集群在没有用户在集群的admin数据库中存在一个整体,它存在于配置的服务器和客户机上通过mongos实例访问。根据用户是否在碎片的admin数据库所在的本地主机的异常分别适用于每个碎片。

为了防止未经授权的访问群集的碎片,您必须在每个碎片建立管理员或禁用本地主机异常。要禁用本地主机的异常,使用的setParameterd在启动期间设置enableLocalhostAuthBypass参数为0。

客户端身份验证
每个客户端连接应验证为某个用户。如果客户端验证到一个数据库作为一个用户,后来验证在同一个数据库作为不同的用户,第二个身份验证第一个失效。客户端可以在同一时间验证多个数据库。

MongoDB存储所有用户的信息,包括认证和授权信息,对于一个MongoDB实例在admin数据库中的system.users集合。

请参阅验证到MongoDB实例或群集的更多信息。

MongoDB的实例之间的身份验证
副本集和分片群集的MongoDB实例之间请求的身份验证。MongoDB实例之间的认证的默认机制是密钥文件设置。密钥文件作为共享密码。密钥文件的内容是任意的,但必须是相同的,连接到对方所有的mongod和的mongos实例。

使用你的环境的防火墙和网络路由,以确保只有客户和其他成员的流量可以达到你的mongod和mongos实例。如果需要的话,使用虚拟专用网络(VPN),以确保在广域网(WAN)的安全连接。

始终确保:
    您的网络配置将允许副本集中或分片群集的每个成员与所有其他成员。
    如果使用MongoDB的认证制度,以限制访问您的基础设施,确保您的所有成员上配置一个密钥文件,以允许验证。

    
认证的分片集群
在分片集群,你可以验证群集作为一个整体,在集群上的特定数据库,或指定的碎片。本节介绍如何验证到每个地方和用于验证每个凭证存储。

为了验证一个分片集群,连接并验证到的mongos实例。该凭证的分片群集的所有用户驻留在配置服务器的admin的数据库。

改变在版本2.6以前,对于在群集上验证到数据库的凭据保存在mongod实例最主要的碎片该数据库。执行需要一个分片集群,以特定的碎片直接连接的维护操作,(例如cleanupOrphaned, compact, rs.reconfig()) 您必须创建碎片本地管理用户的每个碎片。这些用户的凭据驻留在碎片的admin数据库。

 

京ICP备14008139号-1