对 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命令行选项传递给mongodormongos: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。如果mongodormongos实例的系统主机名不在密钥表文件中,则身份验证将失败并显示一条GSSAPI error acquiring credentials.错误消息。如果返回的mongodor实例的主机名 不是完全限定的,请在启动or时使用设置实例的完全限定域名。
mongoshostname -f--setParameter saslHostNamemongodmongos确保运行
mongodormongos实例的每个主机都有ADNSPTR记录以提供正向和反向 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,反映了系统主机名配置不正确或密钥表文件丢失或配置不正确。
提示:
也可以看看
翻译:韩鹏帅