You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Logstash无法向ES索引数据:用户无indices:admin/auto_create权限

Elasticsearch用户无法自动创建索引的权限问题解决

问题背景

通过脚本创建拥有多角色的demoTester用户:

/usr/share/elasticsearch/bin/elasticsearch-users useradd demoTester -p demoTester -r kibana_admin,logstash_admin,beats_admin,logstash_system,monitoring_user,watcher_admin,editor,machine_learning_admin

部署后Logstash正常监听5044端口且日志已发送,但demoTester用户无法向Elasticsearch写入数据,报错信息:

error=>{"type"=>"security_exception", "reason"=>"action [indices:admin/auto_create] is unauthorized for user [demotester] with roles [watcher_admin,editor,monitoring_user,logstash_system,beats_admin,machine_learning_admin,kibana_admin,logstash_admin] on indices [demo-2022.10.27], this action is granted by the index privileges [auto_configure,create_index,manage,all]}}

Logstash输出配置片段:

output {
    elasticsearch {
      ssl => true
      ssl_certificate_verification => true
      cacert => '/etc/logstash/certs/http_ca.crt'
      user => demoTester
      password => demoTester
      hosts => ["https://10.0.8.19:9200"]
      index =>"demo-%{+YYYY.MM.dd}"
    }
}

问题原因

报错明确指出,用户demoTester缺少针对demo-*索引的indices:admin/auto_create权限。当前分配的系统角色(如logstash_admin、kibana_admin等)默认权限不包含自定义前缀索引的自动创建权限,因此无法完成索引自动创建及数据写入。

解决步骤

1. 创建自定义角色,赋予目标索引权限

执行以下命令创建名为demo_index_operator的自定义角色,授予其对demo-*索引的自动创建、读写等核心权限:

/usr/share/elasticsearch/bin/elasticsearch-users roledemo_index_operator -a "indices:admin/auto_create,indices:data/write/*,indices:data/read/*" -i "demo-*"

说明:-a指定需要赋予的权限,-i限定权限作用的索引模式,确保权限仅作用于业务所需的索引。

2. 更新demoTester用户的角色列表

将新创建的自定义角色添加到demoTester用户的角色集合中:

/usr/share/elasticsearch/bin/elasticsearch-users usermod demoTester -r kibana_admin,logstash_admin,beats_admin,logstash_system,monitoring_user,watcher_admin,editor,machine_learning_admin,demo_index_operator

3. 验证权限配置(可选)

通过Elasticsearch的权限验证API确认权限是否生效:

curl -u demoTester:demoTester -k "https://10.0.8.19:9200/_security/user/demoTester/_has_privileges" -H "Content-Type: application/json" -d '{
  "index": [
    {
      "names": ["demo-*"],
      "privileges": ["auto_configure", "create_index", "write"]
    }
  ]
}'

若返回结果中authorized字段为true,则表示权限配置正确。

4. 重启Logstash(可选)

如果配置后仍无法写入数据,重启Logstash使配置生效:

systemctl restart logstash

注意事项

  • 避免滥用logstash_system角色:该角色为Logstash内部组件预留权限,用于监控和自身数据写入,不应用于业务索引操作,防止权限冲突或安全风险。
  • 遵循最小权限原则:仅授予用户完成业务所需的必要权限,避免过度授权,提升系统安全性。

内容的提问来源于stack exchange,提问作者Didi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 17:35:23