参考 > 安全 > 认证方式 > 企业认证机制 > Kerberos身份验证 > 在Windows上使用Kerberos身份验证配置MongoDB
MongoDB Enterprise支持使用Kerberos服务的身份验证。Kerberos是用于大型客户端/服务器系统的行业标准身份验证协议。Kerberos允许MongoDB和应用程序利用现有的身份验证基础结构和流程。
设置和配置Kerberos部署超出了本文档的范围。本教程假设已配置了Kerberos服务主每个
mongod.exe和mongos.exe实例。
对于副本集和分片群集,请确保您的配置使用完全合格的域名(FQDN),而不是IP地址或不合格的主机名。您必须使用FQDN for GSSAPI才能正确解析Kerberos领域并允许您进行连接。
mongod.exe没有Kerberos的情况下启动。¶对于最初添加的Kerberos用户,请在mongod.exe
不支持Kerberos的情况下开始。
如果Kerberos用户已经在MongoDB中并且具有创建用户所需的
特权,则可以从mongod.exeKerberos支持入手
。
包括适合您的部署的其他设置。
注意
开始在MongoDB中3.6,mongod并mongos
绑定默认为localhost。如果部署的成员在不同的主机上运行,或者希望远程客户端连接到部署,则必须指定--bind_ip或
net.bindIp。有关更多信息,请参见
Localhost绑定兼容性更改。
mongod。¶通过mongo.exe外壳连接到mongod.exe
实例。如果mongod.exe已--auth启用,请确保您具有创建用户所需的特权。
在数据库中的MongoDB中添加Kerberos主体。在ALL UPPERCASE中指定Kerberos领域
。该数据库允许
查阅外部源(例如Kerberos)进行身份验证。要指定用户的特权,请为用户分配
角色。<username>@<KERBEROS REALM>$external$externalmongod.exe
在版本3.6.3中更改:要与$external身份验证用户(即Kerberos,LDAP,x.509用户)一起使用会话,用户名不能大于10k字节。
下面的示例添加reportingapp@EXAMPLE.NET对records数据库具有只读访问权限
的Kerberos主体
:
根据需要添加其他主体。对于要使用Kerberos进行身份验证的每个用户,必须在MongoDB中创建一个相应的用户。有关创建和管理用户的更多信息,请参阅《 用户管理命令》。
mongod.exeKerberos支持开始。¶您必须mongod.exe以服务主体帐户身份开始。
要开始mongod.exe支持Kerberos,请将mongod.exe参数
设置authenticationMechanisms为GSSAPI:
包括配置所需的其他选项。例如,如果您希望远程客户端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定
--bind_ip。有关更多信息,请参见
Localhost绑定兼容性更改。
例如,以下代码启动mongod.exe
具有Kerberos支持的独立实例:
mongo.exe外壳mongod.exe并进行身份验证。¶将mongo.exeShell客户端连接为Kerberos主体application@EXAMPLE.NET。
您可以从命令行连接并进行身份验证。
使用cmd.exe:
使用:Windows PowerShell
如果要连接主机名与Kerberos名称匹配的系统,请确保为该选项指定完全限定域名(FQDN)--host
,而不是IP地址或非限定主机名。
如果要连接主机名与Kerberos名称不匹配的系统,请使用--gssapiHostName
来指定其响应的Kerberos FQDN。
或者,您可以首先连接mongo.exe到
mongod.exe,然后从mongo.exe外壳使用该db.auth()方法在$external数据库中进行身份验证
。
mongos.exe为Kerberos ¶要开始mongos.exe支持Kerberos,请将mongos.exe参数设置
authenticationMechanisms
为GSSAPI。您必须mongos.exe以
服务主体帐户开始:
包括配置所需的其他选项。例如,如果您希望远程客户端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定
--bind_ip。有关更多信息,请参见
Localhost绑定兼容性更改。
例如,以下启动mongos具有Kerberos支持的实例:
mongos.exe根据您的配置修改或包括任何其他选项。例如,
--keyFile您可以使用x.509成员身份验证来代替分片群集成员的内部身份验证。
使用setspn.exe该服务主体名称(SPN)分配给帐户运行mongod.exe和mongos.exe服务:
例
如果mongod.exe运行的指定服务
mongodb上testserver.mongodb.com的服务帐户名mongodtest,分配SPN如下:
Kerberos身份验证(GSSAPI(Kerberos))可以与以下功能一起使用:
指定以下机制:
仅在使用时添加其他机制。此参数设置不会影响MongoDB对集群成员的内部身份验证。