Облачная платформаAdvanced

Создание пользователей для Cluster и предоставление доступа к Cluster

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

CSS ограничивает доступ к security-mode кластерам только авторизованными пользователями. При создании security-mode кластера необходимо создать учетную запись администратора. Эта учетная запись может позже использовать Kibana для добавления новых пользователей для кластера и предоставления им необходимых разрешений. В этом разделе в качестве примера используется Kibana 7.10.2, чтобы описать, как с помощью Kibana предоставить пользователям доступ к security-mode кластеру.

Предыстория

CSS использует plug-in opendistro_security для предоставления возможностей security‑cluster. plug-in opendistro_security построен на основе модели RBAC. RBAC включает три основных понятия: пользователь, действие и роль. RBAC упрощает взаимосвязь между пользователями и действиями, упрощает управление разрешениями и облегчает расширение и обслуживание разрешений. Figure 1 показывает взаимосвязь между этими тремя.

Figure 1 User, action, and role


Table 1 Концепции

Концепция

Описание

Пользователь

Пользователь может отправлять запросы операций в кластер Elasticsearch. Пользователь имеет учетные данные, такие как имя пользователя и пароль, а также ноль или несколько backend roles и пользовательских атрибутов.

Роль

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

Разрешение

Одинарное разрешение, например, создание индекса (indices:admin/create).

Сопоставление роли

Пользователю будет назначена одна или несколько ролей после успешной аутентификации. Role mapping — это сопоставление роли пользователю (или backend role). Например, сопоставление kibana_user (role) с Bob (user) означает, что Bob получает все разрешения kibana_user после аутентификации. Аналогично, сопоставление all_access (role) с admin (backend role) означает, что любой пользователь с backend role admin (из сервера LDAP/Active Directory) имеет все разрешения роли all_access после аутентификации. Вы можете сопоставлять каждую роль с несколькими пользователями или backend role.

Action group

Группа действий представляет собой набор разрешений. Например, предопределённая SEARCH action group предоставляет ролям разрешения на использование API _search и _msearch.

Помимо модели RBAC, Elasticsearch также использует концепцию под названием tenant. Модель RBAC решает задачу авторизации на уровне пользователя, тогда как модель tenant решает задачу совместного использования данных и ресурсов между различными tenant. В пространстве tenant tenants могут совместно использовать информацию, такую как dashboards и index patterns.

По умолчанию пользователи могут видеть только index patterns и dashboards в своём собственном приватном пространстве tenant. Когда добавляется новый пользователь test, система автоматически создаёт индекс с именем .kibana_xxx_test. Данные в приватном пространстве этого пользователя будут храниться в этом индексе. Аналогично, данные приватного пространства tenant администратора хранятся в индексе .kibana_xxx_admin. Чтобы поделиться index pattern или dashboard с другими tenant, их можно создать в глобальном tenant space. Другие пользователи могут получить доступ к общему ресурсу только переключившись в глобальное tenant space.

В консоли Kibana вы можете настроить разрешения пользователей для кластера Elasticsearch в разделе Security, чтобы реализовать детализированный контроль доступа на четырёх уровнях: cluster, index, document и field.

Пользователи могут быть добавлены или удалены для кластера и сопоставлены с ролями. Таким образом, вы назначаете роли пользователям.

С помощью role mapping вы можете настроить участников каждой роли и назначать роли пользователям на основе имён пользователей, backend role и имён хостов. Для каждой роли можно настроить разрешения cluster, index и document, а также разрешение на использование Kibana.

Для получения дополнительной информации о настройке безопасности для кластера в режиме security-mode и подробного руководства см. официальный документ Elasticsearch here.

Constraints

  • В Kibana вы можете настроить имя пользователя, имя роли и имя tenant.
  • Интерфейс Kibana различается в зависимости от версии Kibana. В качестве примера используется Kibana 7.10.2.

Создание пользователя и предоставление разрешений

  1. Войдите в консоль управления CSS.
  2. В панели навигации слева выберите Clusters > Elasticsearch.
  3. В списке кластеров найдите целевой кластер и нажмите Kibana в столбце Operation, чтобы войти в Kibana, используя учетную запись администратора.
    • Имя пользователя: admin (имя учетной записи администратора по умолчанию)
    • Пароль: введите пароль администратора, который вы задали при создании кластера в режиме безопасности.
  4. После успешного входа выберите Security в навигационном дереве слева от страницы операций Kibana. Отображается страница Security.
  5. Добавьте нового пользователя test для кластера в режиме безопасности.
    1. Нажмите Internal users в области навигации.
    2. На странице Internal users нажмите Create internal user. Отображается страница создания нового пользователя.

      Figure 2 Create internal user


    3. На отображаемой странице задайте Username, Password и Re-enter password. В качестве примера здесь используется имя пользователя test.

      Следующие два параметра являются необязательными. Вы можете нажать Learn more на странице, чтобы узнать о них подробнее.

      • Backend roles: используется для сопоставления внешних пользователей (например, из LDAP или SAML) с ролями безопасности Open Distro.
      • Attributes: используется для более подробного описания пользователей. Более того, они могут использоваться для включения контроля доступа на уровне документов поверх разрешений индекса роли. Это позволяет выполнять динамические запросы безопасности на уровне документов (DLS) на основе атрибутов пользователя.
    4. Нажмите Create. После успешного создания новый пользователь отображается в списке пользователей.
  6. Создайте роль с именем role_test и назначьте ей разрешения.
    1. Нажмите Roles под Security. Система имеет предустановленные роли. Чтобы узнать о разрешениях каждой роли, нажмите Learn more на странице. Если предустановленные роли уже удовлетворяют вашим требованиям, рекомендуется использовать эти предустановленные роли.
    2. На странице Roles нажмите Create Role.
    3. Установите имя роли, например, role_test.

      Рисунок 3 Установка имени роли


    4. На странице Cluster Permissions установите разрешения кластера в соответствии с требованиями сервиса. Если они не настроены для роли, роль не будет иметь разрешений уровня кластера. Ниже приведён пример с разрешением cluster_monitor permission.
      Note

      В Elasticsearch разрешение cluster_monitor позволяет пользователям мониторить и наблюдать за статусом кластера, но не выполнять операции, которые могут изменить статус кластера. Конкретно, разрешение cluster_monitor даёт пользователям возможность выполнять следующие операции:

      • Проверить статус и состояние кластера.
      • Проверить узлы кластера.
      • Просмотреть статистику кластера.
      • Проверить отложенные задачи кластера.
      • Проверить информацию о восстановлении кластера, сегментах и индексах.

      Рисунок 4 Cluster Permissions


    5. Настройте разрешения индексов на странице Index Permissions. Эта настройка необязательна. Она позволяет определить разрешения пользователей, назначенных этой роли, для конкретных индексов.
      • Index: Установите имя индекса. Например, my_store.
        Note

        Используйте разные имена для индекса и пользователя.

      • Index permissions: Установите разрешения индекса для предоставления.
    6. Tenant Permissions: Установите разрешения tenant. Эта конфигурация необязательна. Tenant в Kibana — это пространства для сохранения index patterns, visualizations, dashboards и других объектов Kibana. По умолчанию все пользователи Kibana имеют доступ к двум tenant: Private и Global. Глобальный tenant доступен каждому пользователю Kibana. Приватный tenant принадлежит каждому пользователю отдельно и не может быть общим. Для получения дополнительной информации о tenant permissions нажмите Learn more на странице.
    7. Нажмите Create, чтобы сохранить параметры роли. Новая роль отображается в списке Roles.
  7. Назначьте роль пользователю, чтобы предоставить ему разрешения.
    1. Выберите Security > Roles, затем нажмите role_test. Отображается страница сведений о роли.
    2. Нажмите вкладку Mapped users, затем нажмите Map user.
    3. На странице Map user выберите ранее созданного пользователя test из списка Users.
    4. Нажмите Map.

  8. Убедитесь, что разрешения пользователя вступили в силу.
    1. Войдите в Kibana как пользователь test.
    2. Нажмите Dev Tools в дереве навигации слева.
    3. Выполните команду GET /_cluster/health?pretty, чтобы проверить состояние кластера. Возвращён код 200. Можно запросить базовую информацию о кластере, что указывает на наличие у пользователя разрешения проверять статус кластера.
    4. Выполните команду PUT /my_test, чтобы создать индекс. Возвращён код 403, указывающий, что пользователь не имеет прав на создание индексов.

    Мы видим, что пользователь test имеет только разрешение проверять статус кластера, но не может создавать индексы. Конфигурация выполнена успешно.

    При необходимости позже можно добавить разрешение на создание индексов для роли. Возвращённое сообщение об ошибке содержит рекомендации по добавлению разрешений роли.