Opendistro Elasticsearch Предоставить права администратора уровня анонимному пользователю

Я пытаюсь дать привилегию анонимного пользователя на уровне администратора для записи определенных индексов в пакете Opendistro Elasticsearch. Я обновил config.yml с помощью http.anonymous_auth_enabled: true, а также внес необходимые изменения в role.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.

3 ответа

Решение

Бэкэнд-роли - это просто запутанное название для "ролей, импортированных с внешнего сервера". В этом случае вы можете их игнорировать.

Вместо этого вам нужна "обычная" роль, которую вы можете создать в 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"
}

После невозможности получить решение, предоставленное @aetter, работающим. Я нашел сообщение hardik-k-shah на 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, либо через изменение файла role.yml, если вы хотите сделать роль только для чтения), например:,

opendistro_security_anonymous:
readonly: true
cluster:
  - CLUSTER_COMPOSITE_OPS_RO
indices:
  '*':
    '*':
      - READ

3. Создайте сопоставление ролей для роли opendistro_security_anonymous_backendrole. (вы можете создать это сопоставление ролей либо через пользовательский интерфейс kibana, либо путем изменения файла role_mapping.yml)

opendistro_security_anonymous:
backend_roles:
  - opendistro_security_anonymous_backendrole

4. Используйте инструмент securityadmin, чтобы применить эти изменения конфигурации, если ваш кластер уже запущен и работает.

5. Обновите kibana.yml, чтобы разрешить анонимный доступ для kibana. Вам необходимо перезапустить процесс кибаны, чтобы применить эти изменения.

opendistro_security.auth.anonymous_auth_enabled: true

Мне нужен анонимный доступ только для проверки работоспособности. Несколько дополнительных примечаний могут быть полезны

установка 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
Другие вопросы по тегам