Elasticsearch集群集成AD后持续出现认证失败警告的解决咨询
首先明确日志里的关键错误信息:resultCode=49 (invalid credentials) 伴随 data 52e,这是Active Directory返回的标准错误码,含义是用户名不存在、密码错误,或者用户没有权限通过该方式认证。结合你的场景(AD用户可正常登录、Logstash导入正常),警告的核心原因是:部分认证请求被AD realm优先处理,但这些请求的用户并非AD用户(比如你之前创建的Logstash自定义内置用户),AD realm认证失败后,请求会 fallback 到内置native realm完成认证,所以业务正常但警告持续输出。
以下是具体排查和解决步骤:
1. 调整认证realm的顺序配置
Elasticsearch会按realm配置的顺序尝试认证,如果你把AD realm放在了native(内置用户)realm前面,所有认证请求都会先经过AD realm校验。比如Logstash使用的内置用户在AD中不存在,就会触发警告。
检查elasticsearch.yml中的xpack.security.authc.realms配置,把native放在active_directory前面:
xpack.security.authc.realms: native.native1: order: 0 active_directory.ad1: order: 1 # 你的AD其他配置 domain_name: your-domain.com bind_dn: CN=bind-user,OU=Users,DC=your-domain,DC=com bind_password: your-bind-password
2. 限制AD realm处理的用户范围
如果不想调整realm顺序,可以给AD realm添加用户过滤规则,只处理AD域内的用户,避免对内置用户进行认证:
xpack.security.authc.realms.active_directory.ad1: # 其他配置 user_search.filter: "(objectClass=user)" # 或者限定特定OU下的用户 user_search.base_dn: OU=ES-Users,DC=your-domain,DC=com
3. 定位发起认证请求的具体用户
如果调整realm配置后警告仍存在,需要确认是哪个用户发起的失败请求:
- 开启Elasticsearch的审计日志,在
elasticsearch.yml中添加:
重启节点后,查看xpack.security.audit.enabled: true xpack.security.audit.logfile.events: authentication_success, authentication_failurelogs/elasticsearch_audit.log,里面会记录失败认证的用户名、客户端IP等信息,精准定位问题来源。
4. 排查AD realm自身的绑定凭据
虽然AD用户能正常登录,仍需确认AD realm的绑定用户(bind_dn和bind_password)是否有效:
- 验证绑定用户的密码是否过期或被锁定
- 用ldapsearch工具测试绑定是否正常:
ldapsearch -x -H ldap://your-ad-server:389 -D "CN=bind-user,OU=Users,DC=your-domain,DC=com" -w "bind-password" -b "DC=your-domain,DC=com" "(sAMAccountName=test-ad-user)"
5. 确认节点间通信的认证方式
虽然你启用了节点间TLS,需确保节点间是通过证书而非用户名密码认证:
- 检查
elasticsearch.yml中的配置:
确保没有配置xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.key: certs/node-key.pem xpack.security.transport.ssl.certificate: certs/node-cert.pem xpack.security.transport.ssl.certificate_authorities: certs/ca.pemxpack.security.transport.ssl.username和xpack.security.transport.ssl.password,避免节点间错误地尝试用户名密码认证。
内容的提问来源于stack exchange,提问作者Umang Pachaury

