ElasticSearch нет разрешений для [индексы:данные/чтение/msearch], несмотря на наличие разрешения

#elasticsearch #aws-elasticsearch

Вопрос:

Я столкнулся с самой странной проблемой с разрешениями для _msearch .

При запуске simple _search с одним и тем же запросом все работает идеально.

POST /job/_search

 {"query":{"bool":{"must":[{"bool":{"must":{"bool":{"should":[{"multi_match":{"query":"s","fields":["title"],"type":"best_fields","operator":"or","fuzziness":2}},{"multi_match":{"query":"s","fields":["title"],"type":"phrase","operator":"or"}},{"multi_match":{"query":"s","fields":["title"],"type":"phrase_prefix","operator":"or"}}],"minimum_should_match":"1"}}}}]}},"size":10,"_source":{"includes":["*"],"excludes":[]}}
 

При запуске с _msearch ним я получаю ошибку разрешения

POST /job/_msearch

 {}
{"query":{"bool":{"must":[{"bool":{"must":{"bool":{"should":[{"multi_match":{"query":"s","fields":["title"],"type":"best_fields","operator":"or","fuzziness":2}},{"multi_match":{"query":"s","fields":["title"],"type":"phrase","operator":"or"}},{"multi_match":{"query":"s","fields":["title"],"type":"phrase_prefix","operator":"or"}}],"minimum_should_match":"1"}}}}]}},"size":10,"_source":{"includes":["*"],"excludes":[]}}
 
 {
    "error": {
        "root_cause": [
            {
                "type": "security_exception",
                "reason": "no permissions for [indices:data/read/msearch] and User [name=public_api, backend_roles=[], requestedTenant=null]"
            }
        ],
        "type": "security_exception",
        "reason": "no permissions for [indices:data/read/msearch] and User [name=public_api, backend_roles=[], requestedTenant=null]"
    },
    "status": 403
}
 

Вот мои разрешения в Кибане:

введите описание изображения здесь

Я запускаю OpenDistro в сервисе AWS ElasticSearch.

Ответ №1:

Я решил вышеуказанную проблему с разрешениями, выполнив следующие действия

  • Войдите в систему с Kibana помощью admin или пользователя с higher previledges
  1. Нажмите security кнопку опция

    Шаг

  2. Нажмите roles «Опция», а затем выберите желаемую роль для вашего пользователя в соответствии с вашими требованиями. В моем случае пользователю требуется весь доступ, поэтому выбранная all_access роль
  3. Нажмите Mapped users , затем выберите Manage mapping опцию.
  4. В Users разделе введите/вставьте IAM-arn/internal-user , а затем нажмите enter
  5. Наконец, щелкните по карте

Вот и все, пользователь будет сопоставлен с ролью и соответствующими разрешениями, после чего вы не столкнетесь с проблемой разрешений, упомянутой в вопросе

введите описание изображения здесь

Ответ №2:

Исправлено путем установки следующих разрешений кластера:

введите описание изображения здесь