Logstash не может проиндексировать ES: «действие [индексы: admin/auto_create] не разрешено для пользователя»

Я создал пользователя 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 не может индексировать ES. Я прочитал документацию о том, как создавать привилегии, но примеры мне непонятны. Я не создаю через Kibana UI, я автоматизирую все через скрипт.

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:


input {
  beats {
    port => 5044
  }
}
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}"
    }
}

0
0
130
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У пользователя demoTester нет привилегии create_index для индекса demo-2022.10.27.

Самый простой способ — добавить роль суперпользователя пользователю demoTester, но использовать это только для демонстрационных целей.

Безопасный способ — создать роль с привилегией create_index для индексов demo* и назначить эту роль пользователю demoTester.

Чтобы создать роль, вы можете вызвать _security/role API (https://www.elastic.co/guide/en/elasticsearch/reference/8.4/security-api-put-role.html) с ре

POST /_security/role/my_admin_role
{
    "indices" : [
      {
        "names" : [
          "demo*"
        ],
        "privileges" : [
          "create_index",
          "write",
          "create"
        ],
        "allow_restricted_indices" : false
      }
    ],
    "applications" : [ ],
    "run_as" : [ ],
    "metadata" : { },
    "transient_metadata" : {
        "enabled" : true
    }
}

и после этого назначьте роль пользователю de demoTester.

Другие вопросы по теме