Kerberos 身份验证疑难解答

在本页面

Kerberos 配置调试策略

如果您在使用Kerberos来针对mongodmongos进行身份验证时遇到困难:

  • 确保您正在运行 MongoDB Enterprise,而不是 MongoDB Community Edition。 Kerberos 身份验证是 MongoDB 企业版功能,不适用于 MongoDB 社区版二进制文件。

要验证 MongoDB Enterprise 二进制文件,请将--version命令行选项传递给mongodmongos

mongod --version

在此命令的输出中,查找字符串modules: subscriptionmodules: enterprise以确认您的系统具有 MongoDB Enterprise。

  • 确保mongodmongos实例的规范系统主机名是可解析的标准域名。

在 Linux 上,您可以在系统提示符下使用hostname -f命令来验证系统主机名的解析。

如果hostname -f返回的mongodmongos实例的主机名不是完全限定的,请在启动mongodmongos时使用--setParameter saslHostName设置实例的完全限定的域名。

  • 确保运行mongodmongos实例的每个主机都有APTR DNS 记录,以提供正向和反向 DNS 查找。 A记录应 Map 到mongodmongos的 FQDN。

  • 确保托管 MongoDB 实例和 Kerberos 基础结构的服务器上的时钟在最大时间偏差内:默认为 5 分钟。大于最大时间偏差的时间差会阻止成功进行身份验证。

Linux 上的 Kerberos 跟踪日志记录

MIT Kerberos 为跟踪记录输出提供了KRB5_TRACE环境变量。如果 Linux 上的 MIT Kerberos 一直存在问题,则可以在启动mongodmongosmongo实例时将KRB5_TRACE设置为产生详细日志记录。

例如,以下命令启动一个独立的mongod,其密钥表文件位于默认的/etc/krb5.keytab路径,并将KRB5_TRACE设置为写入/logs/mongodb-kerberos.log

env KRB5_KTNAME=/etc/krb5.keytab \
    KRB5_TRACE=/logs/mongodb-kerberos.log \
    mongod --dbpath /data/db --logpath /data/db/mongodb.log \
    --auth --setParameter authenticationMechanisms=GSSAPI \
    --bind_ip localhost,<ip address> --fork

常见错误消息

在某些情况下,如果 Kerberos 服务存在问题,MongoDB 将从 GSSAPI 接口返回错误消息。一些常见的错误消息是:

  • GSSAPI error in client while negotiating security context.

    • 此错误在 Client 端上发生,反映凭据不足或尝试进行恶意身份验证。

如果收到此错误,请确保在连接到主机时使用正确的凭据和正确的完全限定域名。

  • GSSAPI error acquiring credentials.

    • mongodmongos的启动过程中会发生此错误,并且反映了系统主机名的配置不正确,或者缺少或配置了错误的 keytab 文件。