对 Kerberos 身份验证进行故障排除
mongokerberos
验证工具
该程序与 MongoDB 4.4 一起推出,mongokerberos
提供了一种方便的方法来验证平台的 Kerberos 配置以用于 MongoDB,并测试来自 MongoDB 客户端的 Kerberos 身份验证是否按预期工作。
该mongokerberos
工具可以帮助诊断常见的配置问题,并且是对 Kerberos 配置进行故障排除时推荐的起点。mongokerberos
有关详细信息,请参阅 文档。
mongokerberos
仅在 MongoDB Enterprise 中可用。
Kerberos 配置调试策略
如果您在启动或验证 Kerberos 时mongod
遇到困难:mongos
确保您运行的是 MongoDB Enterprise,而不是 MongoDB Community Edition。Kerberos 身份验证是 MongoDB Enterprise 功能,不适用于 MongoDB Community Edition 二进制文件。
要验证您使用的是 MongoDB Enterprise,请将
--version
命令行选项传递给mongod
ormongos
:mongod --version
在此命令的输出中,查找字符串
modules: subscription
或modules: enterprise
确认您使用的是 MongoDB Enterprise 二进制文件。确保
mongod
或mongos
实例的规范系统主机名是可解析的完全限定域名。hostname -f
在 Linux 上,您可以在系统提示符下使用命令验证系统主机名解析。在 Linux 上,确保服务主体名称 (SPN) 的主要组成部分 的 SPN 是
mongodb
. 如果 SPN 的主要组件 不是mongodb
,则必须使用 指定主要组件--setParameter saslServiceName
。在 Linux 上,确保服务主体名称 (SPN) 的实例组件 在 keytab 文件
mongod
中匹配或实例的规范系统主机名mongos
。如果mongod
ormongos
实例的系统主机名不在密钥表文件中,则身份验证将失败并显示一条GSSAPI error acquiring credentials.
错误消息。如果返回的mongodor实例的主机名 不是完全限定的,请在启动or时使用设置实例的完全限定域名。
mongoshostname -f--setParameter saslHostNamemongodmongos
确保运行
mongod
ormongos
实例的每个主机都有A
DNSPTR
记录以提供正向和反向 DNS 查找。该A
记录应映射到mongod
或mongos
的 FQDN。确保托管 MongoDB 实例和 Kerberos 基础设施的服务器上的时钟在最大时间偏差范围内:默认为 5 分钟。大于最大时间偏差的时间差会阻止成功的身份验证。
Linux 上的 Kerberos 跟踪日志记录
MIT KerberosKRB5_TRACE
为跟踪日志记录输出提供了环境变量。如果您在 Linux 上使用 MIT Kerberos 时遇到持续性问题,您可以KRB5_TRACE
在启动您的 mongod
、mongos
或mongosh
产生详细日志记录的实例。
例如,以下命令启动一个独立的mongod
,其 keytab 文件位于默认/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,<hostname(s)|ip address(es)> --fork
常见错误信息
在某些情况下,如果 Kerberos 服务出现问题,MongoDB 会从 GSSAPI 接口返回错误消息。一些常见的错误消息是:
GSSAPI error in client while negotiating security context.
此错误发生在客户端上,反映了凭据不足或恶意的身份验证尝试。
如果收到此错误,请确保在连接到主机时使用正确的凭据和正确的完全限定域名。
GSSAPI error acquiring credentials.
mongod
此错误发生在or 启动期间mongos
,反映了系统主机名配置不正确或密钥表文件丢失或配置不正确。
提示:
也可以看看
翻译:韩鹏帅