参考 > 安全 > 认证方式 > 企业认证机制 > Kerberos身份验证 > 在Linux上使用Kerberos身份验证配置MongoDB
MongoDB Enterprise支持使用Kerberos服务的身份验证。Kerberos是用于大型客户端/服务器系统的行业标准身份验证协议。
要验证您使用的是MongoDB Enterprise,请将--version
命令行选项传递给mongod或mongos:
在此命令的输出中,查找字符串或确认您正在使用MongoDB Enterprise二进制文件。modules:
subscriptionmodules: enterprise
对于副本集和分片群集,请确保您的配置使用完全合格的域名(FQDN),而不是IP地址或不合格的主机名。您必须使用FQDN for GSSAPI才能正确解析Kerberos领域并允许您进行连接。
设置和配置Kerberos部署超出了本文档的范围。请参阅MIT Kerberos文档或您的操作系统文档,以获取有关如何配置Kerberos部署的信息。
为了使用MongoDB的使用Kerberos,
Kerberos服务主为每个
mongod和mongos实例在MongoDB的部署必须添加到Kerberos数据库。您可以通过在KDC上运行类似于以下命令的命令来添加服务主体:
在运行mongod或的每个系统上mongos,必须
为相应的服务主体创建一个密钥表文件。您可以通过在运行或的系统上运行类似于以下命令的命令来创建密钥表文件
:mongodmongos
以下过程概述了以下步骤:将Kerberos用户主体添加到MongoDB,mongod为Kerberos 配置独立实例,并使用mongo外壳进行连接并验证用户主体。
mongod没有Kerberos的情况下启动。¶对于最初添加的Kerberos用户,请在mongod
不支持Kerberos的情况下开始。
如果Kerberos用户已经在MongoDB中并且具有创建用户所需的
特权,则可以从mongodKerberos支持入手
。
包括适合您的部署的其他设置。
注意
开始在MongoDB中3.6,mongod并mongos
绑定默认为localhost。如果部署的成员在不同的主机上运行,或者希望远程客户端连接到部署,则必须指定--bind_ip或
net.bindIp。有关更多信息,请参见
Localhost绑定兼容性更改。
将Kerberos主体(或)
添加到数据库中的MongoDB
。以全部大写形式指定Kerberos领域。该数据库允许查阅外部源(例如Kerberos)进行身份验证。要指定用户的特权,请为用户分配角色。<username>@<KERBEROS REALM><username>/<instance>@<KERBEROS REALM>$external$externalmongod
在版本3.6.3中更改:要与$external身份验证用户(即Kerberos,LDAP,x.509用户)一起使用会话,用户名不能大于10k字节。
下面的示例添加application/reporting@EXAMPLE.NET对records数据库具有只读访问权限
的Kerberos主体
:
根据需要添加其他主体。对于要使用Kerberos进行身份验证的每个用户,必须在MongoDB中创建一个相应的用户。有关创建和管理用户的更多信息,请参阅《 用户管理命令》。
mongodKerberos支持开始。¶要开始mongod支持Kerberos,请将环境变量设置为KRB5_KTNAMEkeytab文件的路径,并将mongod参数
authenticationMechanisms设置GSSAPI为以下格式:
包括配置所需的其他选项。例如,如果您希望远程客户端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定
--bind_ip。有关更多信息,请参见
Localhost绑定兼容性更改。
例如,以下代码启动mongod
具有Kerberos支持的独立实例:
mongod您的密钥表文件的路径也可能不同。该密钥表文件
必须是唯一的所有者访问mongod
过程。
使用官方.deb或.rpm软件包,您可以
KRB5_KTNAME在环境设置文件中进行设置。有关详细信息,请参见
KRB5_KTNAME。
mongo外壳mongod并进行身份验证。¶将mongoShell客户端连接为Kerberos主体
application/reporting@EXAMPLE.NET。在连接之前,您必须已经使用Kerberos的kinit程序来获取的凭据
application/reporting@EXAMPLE.NET。
您可以从命令行连接并进行身份验证。
如果要连接主机名与Kerberos名称匹配的系统,请确保为该选项指定完全限定域名(FQDN)--host
,而不是IP地址或非限定主机名。
如果要连接主机名与Kerberos名称不匹配的系统,请使用--gssapiHostName
来指定其响应的Kerberos FQDN。
或者,您可以首先连接mongo到
mongod,然后从mongo外壳使用该db.auth()方法在$external数据库中进行身份验证
。
如果您使用官方.deb
或.rpm软件包之一安装了MongoDB Enterprise ,并且使用了随附的init / upstart脚本来控制mongod实例,则可以KR5_KTNAME
在默认环境设置文件中设置变量,而不必每次都设置变量。
对于.rpm软件包,默认环境设置文件是
/etc/sysconfig/mongod。
对于.deb软件包,文件为/etc/default/mongodb。
KRB5_KTNAME在类似于以下内容的行中设置值:
mongos为Kerberos ¶要开始mongos支持Kerberos,请将环境变量设置KRB5_KTNAME为其keytab文件的路径,并将mongos参数
authenticationMechanisms设置GSSAPI为以下格式:
包括配置所需的其他选项。例如,如果您希望远程客户端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定
--bind_ip。有关更多信息,请参见
Localhost绑定兼容性更改。
例如,以下启动mongos具有Kerberos支持的实例:
mongos您的密钥表文件的路径也可能不同。该密钥表文件必须是唯一的所有者访问mongos过程。
mongos根据您的配置修改或包括任何其他选项。例如,
--keyFile您可以使用x.509成员身份验证来代替分片群集成员的内部身份验证。
要使用配置文件进行配置mongod或mongos获得Kerberos支持,请在配置文件中指定
authenticationMechanisms设置。
如果使用YAML配置文件格式:
包括配置所需的其他选项。例如,如果您希望远程客户端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定net.bindIp设置。有关更多信息,请参见Localhost绑定兼容性更改。
例如,如果/opt/mongodb/mongod.conf包含独立的以下配置设置mongod:
要开始mongod支持Kerberos,请使用以下形式:
如果在启动mongod或
mongos使用Kerberos身份验证时遇到问题,请参阅
Kerberos身份验证疑难解答。
Kerberos身份验证(GSSAPI(Kerberos))可以与以下功能一起使用:
指定以下机制:
仅在使用时添加其他机制。此参数设置不会影响MongoDB对集群成员的内部身份验证。