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