参考 > 安全 > 认证方式 > 企业认证机制 > 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.exe
Kerberos支持入手
。
包括适合您的部署的其他设置。
注意
开始在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
$external
mongod.exe
在版本3.6.3中更改:要与$external
身份验证用户(即Kerberos,LDAP,x.509用户)一起使用会话,用户名不能大于10k字节。
下面的示例添加reportingapp@EXAMPLE.NET
对records
数据库具有只读访问权限
的Kerberos主体
:
根据需要添加其他主体。对于要使用Kerberos进行身份验证的每个用户,必须在MongoDB中创建一个相应的用户。有关创建和管理用户的更多信息,请参阅《 用户管理命令》。
mongod.exe
Kerberos支持开始。¶您必须mongod.exe
以服务主体帐户身份开始。
要开始mongod.exe
支持Kerberos,请将mongod.exe
参数
设置authenticationMechanisms
为GSSAPI
:
包括配置所需的其他选项。例如,如果您希望远程客户端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定
--bind_ip
。有关更多信息,请参见
Localhost绑定兼容性更改。
例如,以下代码启动mongod.exe
具有Kerberos支持的独立实例:
mongo.exe
外壳mongod.exe
并进行身份验证。¶将mongo.exe
Shell客户端连接为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对集群成员的内部身份验证。