#elasticsearch #elasticsearch-opendistro
#elasticsearch #elasticsearch-opendistro
Вопрос:
Я пытаюсь предоставить анонимному пользователю привилегии уровня администратора для записи в определенные индексы в пакете Opendistro Elasticsearch. Я обновил config.yml с помощью http.anonymous_auth_enabled: true, а также внес необходимые изменения в роль.yml для роли anonymous_backendrole.
Но я все еще получаю эту ошибку —
{
"error": {
"root_cause": [
{
"type": "security_exception",
"reason": "no permissions for [cluster:monitor/health] and User [name=opendistro_security_anonymous, roles=[opendistro_security_anonymous_backendrole], requestedTenant=null]"
}
],
"type": "security_exception",
"reason": "no permissions for [cluster:monitor/health] and User [name=opendistro_security_anonymous, roles=[opendistro_security_anonymous_backendrole], requestedTenant=null]"
},
"status": 403
}
Здесь я ищу, может ли кто-нибудь предоставить правильный способ настройки анонимной аутентификации с помощью Opendistro.
Ответ №1:
Внутренние роли — это на самом деле просто запутанное название для «ролей, импортированных с внешнего сервера». В этом случае вы можете игнорировать их.
Вместо этого вам нужна «обычная» роль, которую вы можете создать в Kibana> Безопасность> Роли (или с помощью REST API). Просто убедитесь, что у него те же права доступа к кластеру и индексу, что и у существующей роли администратора. Я назвал свой anonymous-admin
и предоставил его UNLIMITED
для разрешений кластера и *
для индексов.
Затем перейдите в раздел Безопасность> Сопоставления ролей> Добавить новое сопоставление ролей. Выберите свою anonymous-admin
роль, добавьте строку opendistro_security_anonymous
в поле Пользователи и нажмите Отправить.
Перед:
$ curl -XGET https://localhost:9200 -k
{"error":{"root_cause":[{"type":"security_exception","reason":"no permissions for [cluster:monitor/main] and User [name=opendistro_security_anonymous, roles=[opendistro_security_anonymous_backendrole], requestedTenant=null]"}],"type":"security_exception","reason":"no permissions for [cluster:monitor/main] and User [name=opendistro_security_anonymous, roles=[opendistro_security_anonymous_backendrole], requestedTenant=null]"},"status":403}
После:
$ curl -XGET https://localhost:9200 -k
{
"name" : "W8ehfvx",
"cluster_name" : "odfe-cluster",
"cluster_uuid" : "Uk67h4MkSL-U_48NJwjeRg",
"version" : {
"number" : "6.5.4",
"build_flavor" : "oss",
"build_type" : "tar",
"build_hash" : "d2ef93d",
"build_date" : "2018-12-17T21:17:40.758843Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
Комментарии:
1. Привет, @ eatter, не могли бы вы, пожалуйста, добавить несколько скриншотов, я все еще не могу отредактировать настройки безопасности с помощью анонимного администратора. Может ли это иметь какое-либо отношение к тому факту, что я пытаюсь добавить эту роль пользователю LDAP?
2. эта настройка роли действительно помогла мне!
Ответ №2:
После того, как не смог заставить работать решение, предоставленное @aetter. Я нашел пост хардика-к-шаха на Github с подробным руководством, опубликованным ниже.
https://github.com/opendistro-for-elasticsearch/security/issues/42
Чтобы разрешить анонимный доступ, вы должны включить анонимный доступ в config.yml и kibana.yml. Вам также необходимо создать одну роль для анонимного доступа с соответствующим разрешением (в вашем случае разрешением на чтение некоторых индексов) и соответствующим сопоставлением ролей для анонимного пользователя. Анонимным запросам всегда назначается opendistro_security_anonymous в качестве имени пользователя и opendistro_security_anonymous_backendrole в качестве серверной роли.
Подробные шаги по включению анонимного доступа:
1. В config.yml включите анонимный доступ
opendistro_security:
dynamic:
http:
anonymous_auth_enabled: false
2. Создайте анонимную роль с требуемым разрешением. (вы можете создать эту роль либо через пользовательский интерфейс kibana, либо путем смены ролей.файл yml, если вы хотите сделать роль доступной только для чтения)
например:,
opendistro_security_anonymous:
readonly: true
cluster:
- CLUSTER_COMPOSITE_OPS_RO
indices:
'*':
'*':
- READ
3. Создайте сопоставление ролей для роли opendistro_security_anonymous_backendrole. (вы можете создать это сопоставление ролей либо через пользовательский интерфейс kibana, либо путем изменения файла roles_mapping.yml)
opendistro_security_anonymous:
backend_roles:
- opendistro_security_anonymous_backendrole
4. Используйте securityadmin tool, чтобы применить эти изменения конфигурации, если ваш кластер уже запущен.
5. Обновите kibana.yml, чтобы разрешить анонимный доступ для kibana. Вы должны перезапустить процесс kibana, чтобы применить эти изменения.
opendistro_security.auth.anonymous_auth_enabled: true
Ответ №3:
Я хотел анонимный доступ только для проверки работоспособности, возможно, было бы полезно сделать несколько дополнительных замечаний
настройку anonymous_auth_enabled на true
необходимо выполнить в: /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/config.yml
opendistro_security:
dynamic:
http:
anonymous_auth_enabled: true
Роли теперь должны выглядеть:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/roles.yml
# allow anonymous access to /cluster
opendistro_security_anonymous:
reserved: true
cluster_permissions:
- 'cluster_monitor'
Сопоставление ролей, как описано:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/roles_mapping.yml
opendistro_security_anonymous:
reserved: true
backend_roles:
- "opendistro_security_anonymous_backendrole"
Я хотел бы знать, почему роль в сопоставлении ролей не соответствует новой определенной роли, но я не собираюсь терять сон из-за этого, теперь, когда это работает.
Я предполагаю, что если вы заинтересованы в этом, вы уже включили безопасность в: /usr/share/elasticsearch/config/elasticsearch.yml
opendistro_security.disabled: false