Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Руководство [7.17] ›Настройка Elasticsearch ›Удаленные кластеры

Настройка ролей и пользователей для удаленных кластеров

После подключения удаленных кластеров, вы создаёте роль пользователя в локальном и удалённом кластерах и назначаете необходимые привилегии. Эти роли необходимы для использования кросс-кластерной репликации и кросс-кластерного поиска.

Вы должны использовать одинаковые имена ролей как в локальном, так и в удалённом кластерах. Например, в следующей конфигурации для кросс-кластерной репликации используется имя роли remote-replication в локальном и удалённом кластерах. Однако, вы можете указать различные определения ролей в каждом кластере.

Вы можете управлять пользователями и ролями из Stack Management в Kibana, выбрав Безопасность > Роли в боковом меню. Вы также можете использовать API управления ролями для динамического добавления, обновления, удаления и получения ролей. При использовании API для управления ролями в native домене, роли хранятся во внутреннем индексе Elasticsearch.

Следующие запросы используют API создания или обновления ролей. Вам необходимы как минимум права manage_security кластера для использования этого API.

Настройка привилегий для кросс-кластерной репликации

Пользователю кросс-кластерной репликации требуются различные права кластера и индекса в удалённом и локальном кластерах. Используйте следующие запросы для создания отдельных ролей в локальном и удалённом кластерах, а затем создайте пользователя с необходимыми ролями.

Удаленный кластер

В удалённом кластере, содержащем индекс лидера, роли кросс-кластерной репликации требуются привилегия read_ccr кластера, а также привилегии monitor и read на индексе лидера.

Если запросы аутентифицированы с помощью API-ключа, API-ключу требуются вышеперечисленные привилегии на локальном кластере, а не удалённом.

Если запросы отправляются от имени других пользователей, тогда аутентифицирующий пользователь должен иметь привилегию run_as на удалённом кластере.

Следующий запрос создаёт роль remote-replication на удалённом кластере:

POST /_security/role/remote-replication
{
  "cluster": [
    "read_ccr"
  ],
  "indices": [
    {
      "names": [
        "leader-index-name"
      ],
      "privileges": [
        "monitor",
        "read"
      ]
    }
  ]
}
Локальный кластер

В локальном кластере, содержащем индекс ведомого, роли remote-replication требуются привилегии manage_ccr кластера, и привилегии monitor, read, write, и manage_follow_index на индексе ведомого.

Следующий запрос создаёт роль remote-replication на локальном кластере:

POST /_security/role/remote-replication
{
  "cluster": [
    "manage_ccr"
  ],
  "indices": [
    {
      "names": [
        "follower-index-name"
      ],
      "privileges": [
        "monitor",
        "read",
        "write",
        "manage_follow_index"
      ]
    }
  ]
}

После создания роли remote-replication в каждом кластере используйте API создания или обновления пользователей для создания пользователя в локальном кластере и назначения роли remote-replication. Например, следующий запрос назначает роль remote-replication пользователю с именем cross-cluster-user:

POST /_security/user/cross-cluster-user
{
  "password" : "l0ng-r4nd0m-p@ssw0rd",
  "roles" : [ "remote-replication" ]
}

Вам нужно создать этого пользователя только в локальном кластере.

Затем вы можете настроить кросс-кластерную репликацию для репликации данных между центрами обработки данных.

Настройка привилегий для кросс-кластерного поиска

Пользователю кросс-кластерного поиска требуются различные привилегии кластера и индекса в удалённом и локальном кластерах. Следующие запросы создают отдельные роли в локальном и удалённом кластерах, а затем создают пользователя с необходимыми ролями.

Удаленный кластер

В удалённом кластере роль кросс-кластерного поиска требует привилегии read и read_cross_cluster для целевых индексов.

Если запросы аутентифицированы с помощью API-ключа, API-ключу требуются вышеперечисленные привилегии на локальном кластере, а не удалённом.

Если запросы отправляются от имени других пользователей, тогда аутентифицирующий пользователь должен иметь привилегию run_as на удалённом кластере.

Следующий запрос создаёт роль remote-search на удалённом кластере:

POST /_security/role/remote-search
{
  "indices": [
    {
      "names": [
        "target-indices"
      ],
      "privileges": [
        "read",
        "read_cross_cluster"
      ]
    }
  ]
}
Локальный кластер

В локальном кластере, который используется для инициирования кросс-кластерного поиска, пользователю нужна только роль remote-search. Привилегии роли могут быть пустыми.

Следующий запрос создаёт роль remote-search на локальном кластере:

POST /_security/role/remote-search
{}

После создания роли remote-search в каждом кластере используйте API создания или обновления пользователей для создания пользователя в локальном кластере и назначения роли remote-search. Например, следующий запрос назначает роль remote-search пользователю с именем cross-search-user:

POST /_security/user/cross-search-user
{
  "password" : "l0ng-r4nd0m-p@ssw0rd",
  "roles" : [ "remote-search" ]
}

Вам нужно создать этого пользователя только в локальном кластере.

Пользователи с ролью remote-search могут затем производить поиск по нескольким кластерам.

Настройка привилегий для кросс-кластерного поиска и Kibana

При использовании Kibana для поиска по нескольким кластерам двухэтапный процесс авторизации определяет, может ли пользователь получить доступ к потокам данных и индексам в удалённом кластере:

  • Сначала локальный кластер определяет, авторизован ли пользователь для доступа к удалённым кластерам. Локальный кластер — это кластер, к которому подключена Kibana.
  • Если пользователь авторизован, удалённый кластер затем определяет, имеет ли пользователь доступ к указанным потокам данных и индексам.

Чтобы предоставить пользователям Kibana доступ к удалённым кластерам, назначьте им локальную роль с правами чтения на индексы в удалённых кластерах. Вы указываете потоки данных и индексы в удалённом кластере как <remote_cluster_name>:<target>.

Чтобы предоставить пользователям доступ для чтения к удалённым потокам данных и индексам, вы должны создать соответствующую роль в удалённых кластерах, которая предоставляет привилегию read_cross_cluster с доступом к соответствующим потокам данных и индексам.

Например, вы можете активно индексировать данные Logstash в локальном кластере и периодически переносить более старые временные индексы в архив на удалённый кластер. Вы хотите искать по обоим кластерам, поэтому вы должны включить пользователей Kibana в обоих кластерах.

Локальный кластер

В локальном кластере создайте роль logstash-reader, которая предоставляет привилегии read и view_index_metadata на локальные индексы logstash-*.

Если вы настраиваете локальный кластер как другой удалённый в Elasticsearch, роль logstash-reader в вашем локальном кластере также должна предоставить привилегию read_cross_cluster.

POST /_security/role/logstash-reader
{
  "indices": [
    {
      "names": [
        "logstash-*"
        ],
        "privileges": [
          "read",
          "view_index_metadata"
          ]
    }
  ]
}

Назначьте вашим пользователям Kibana роль, предоставляющую доступ к Kibana, а также вашу роль logstash_reader. Например, следующий запрос создаёт пользователя cross-cluster-kibana и назначает роли kibana-access и logstash-reader.

PUT /_security/user/cross-cluster-kibana
{
  "password" : "l0ng-r4nd0m-p@ssw0rd",
  "roles" : [
    "logstash-reader",
    "kibana-access"
    ]
}
Удаленный кластер

В удалённом кластере создайте роль logstash-reader, предоставляющую привилегию read_cross_cluster и привилегии read и view_index_metadata для индексов logstash-*.

POST /_security/role/logstash-reader
{
  "indices": [
    {
      "names": [
        "logstash-*"
        ],
        "privileges": [
          "read_cross_cluster",
          "read",
          "view_index_metadata"
          ]
    }
  ]
}

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/remote-clusters-privileges.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API