环境:
centos 7号
活动目录
elasticsearch和kibana 7.9.3
es中配置的领域:kerberos和ad
kerberos授权域:ad
es群集在主节点和数据节点上使用键选项卡进行设置。我能跑 curl --negotiate -u : https://master-fqdn:9200/_security/_authenticate?pretty
aginst所有节点,并从ad获得一个描述用户和组的json。我可以在任何windows或linux主机上执行此操作,其中我有一个kerberos会话。
kibana是用
xpack.security.authc.providers:
kerberos.kerberos1:
order: 0
description: "Log in with kerberos"
kibana服务器已在kerberos域中注册(所有计算机都已注册)。时间同步和反向查找正在工作。
使用firefox时(设置后) network.negotiate-auth.trusted-uris
在about:config)在linux和windows上,它都发送 Authorization: Negotiate
头部带有spnego数据,就像curl一样。但我得到了 GSSException: Defective token detected. GSSHeader did not find the right tag
在es日志和未经kibana授权的401。在kibana日志里
SPNEGO is supported by the backend
Re-initiating SPNEGO handshake
Authentication attempt failed: Unauthorized
我已经用jvm命令行选项为es激活了krb5和spnego debug。当我跑的时候 curl --negotiate
我在日志中看到很多kerberos输出,但是当kibana reuqest失败时,它是无声的。我只在es日志中看到gssexception堆栈跟踪。在我看来,它在尝试提取spnego令牌时很早就失败了?
这不是ntlm(当您看到“有缺陷的令牌”时的常见错误),因为我在上得到了相同的错误firefox@linux 这个记号看起来和我用curl得到的很像。
是否可以将原始http请求记录到es中?把从Kibana到埃斯的交通挤到一起可不容易。我想应该发生的是,Kibana向前 Authorization
标题到es。
还有其他调试步骤吗?
1条答案
按热度按时间4ktjp1zp1#
解决了。
您需要使用kibana主机(http)的fqdn向主节点kerberos id添加spn/kibana-fqdn@realm).
或者可以在kibana服务器上安装es协调节点。
这两种方法都实现了相同的目标:es节点需要接受为http创建的spnego令牌/kibana-fqdn@realm.
elastic将修复文档:https://github.com/elastic/kibana/issues/67089