«Elasticsearch — невероятно универсальная и мощная поисковая и аналитическая система. Он может быстро принимать, систематизировать, сортировать, объединять и управлять большими объемами текстовых данных.
Несмотря на все это, одной из самых выдающихся функций Elasticsearch и всей ее экосистемы являются непревзойденные функции безопасности. Elasticsearch включает в себя такие функции, как подпись HTTP-запросов, и позволяет только аутентифицированным пользователям выполнять операции в кластере.
Еще одна функция безопасности в Elasticsearch — использование пользователей и ролей. Elasticsearch позволяет назначать определенные роли пользователям в кластере. Затем они используются для определения того, какие действия имя пользователя может выполнять в кластере.
Elasticsearch назначит роль по умолчанию всем пользователям, созданным в кластере. Роль по умолчанию позволяет пользователям получать доступ к конечной точке аутентификации, которая отвечает за смену паролей, получение информации о пользователях и т. д.».
ПРИМЕЧАНИЕ. Роль по умолчанию также назначается анонимным пользователям.
Суть этого руководства — дать вам основы ролей Elasticsearch. С помощью этого руководства вы узнаете, как получить роли в собственной области Elasticsearch и просмотреть роли, назначенные определенному имени пользователя.
Давайте углубимся.
Elasticsearch API получения ролей
Мы используем Get Roles API для получения информации о ролях в кластере Elasticsearch. Синтаксис запроса показан ниже:
ПОЛУЧИТЬ / _безопасность / роль
Приведенный выше запрос должен вернуть все роли в системе.
Чтобы получить информацию о конкретной роли, вы можете использовать следующий синтаксис:
ПОЛУЧИТЬ / _безопасность / роль /< имя >
ПРИМЕЧАНИЕ. Этот API требует, чтобы у пользователя была привилегия manage_security в кластере.
Если запрос выполнен успешно, запрос должен вернуть массив ролей.
Пример 1. Получение всех ролей в кластере
Приведенный ниже пример запроса извлечет все роли в кластере Elasticsearch:
завиток -XGET «http://localhost:9200/_security/role?pretty=true» -ЧАС 'kbn-xsrf: отчетность'
Пример вывода показан ниже:
'apm_user' : {
'кластер' : [ ] ,
'индексы' : [
{
'имена' : [
'апм-*'
] ,
'привилегии' : [
'читать' ,
'view_index_metadata'
] ,
'allow_restricted_indices' : ЛОЖЬ
} ,
{
'имена' : [
'окно-ок.*'
] ,
'привилегии' : [
'читать' ,
'view_index_metadata'
] ,
'allow_restricted_indices' : ЛОЖЬ
} ,
{
'имена' : [
'окно-приблизительно-*'
] ,
'привилегии' : [
'читать' ,
'view_index_metadata'
] ,
'allow_restricted_indices' : ЛОЖЬ
} ,
{
'имена' : [
'метрики-apm.*'
] ,
'привилегии' : [
'читать' ,
'view_index_metadata'
] ,
'allow_restricted_indices' : ЛОЖЬ
} ,
{
'имена' : [
'метрики-apm-*'
] ,
'привилегии' : [
'читать' ,
'view_index_metadata'
] ,
'allow_restricted_indices' : ЛОЖЬ
} ,
{
'имена' : [
'следы-апм.*'
] ,
'привилегии' : [
'читать' ,
'view_index_metadata'
] ,
'allow_restricted_indices' : ЛОЖЬ
} ,
ПРИМЕЧАНИЕ. Выходные данные выше были усечены для целей данного руководства.
Пример 2. Получение информации об определенной роли
Пример ниже возвращает информацию о роли kibana_admin.
завиток -XGET «http://localhost:9200/_security/role/kibana_admin» -ЧАС 'kbn-xsrf: отчетность'
Результирующая информация о роли выглядит следующим образом:
'кибана_админ' : {
'кластер' : [ ] ,
'индексы' : [ ] ,
'Приложения' : [
{
'заявление' : 'кибана-.кибана' ,
'привилегии' : [
'все'
] ,
'Ресурсы' : [
'*'
]
}
] ,
'беги как' : [ ] ,
'метаданные' : {
'_сдержанный' : истинный
} ,
'переходные_метаданные' : {
'включено' : истинный
}
}
}
Получить информацию о роли в YAML
По умолчанию API получения ролей возвращает результат в формате JSON. Однако вы можете выбрать другой формат, используя параметр формата.
Синтаксис такой, как показано:
ПОЛУЧИТЬ / _безопасность / роль? формат =json / батат
Например, чтобы получить информацию о роли kibana_admin в формате YAML, мы можем запустить:
Результирующий вывод:
кибана_админ:
кластер: [ ]
индексы: [ ]
Приложения:
- заявление: 'кибана-.кибана'
привилегии:
- 'все'
Ресурсы:
- '*'
беги как: [ ]
метаданные:
_сдержанный: истинный
переходные_метаданные:
включено: истинный
Просмотр ролей для конкретного пользователя
Если вы хотите просмотреть информацию об определенном имени пользователя (включая его роли), вы можете использовать запрос, как показано ниже:
ПОЛУЧИТЬ / _безопасность / пользователь
Например, предположим, что у нас есть имя пользователя «linuxhint», мы можем получить информацию об этом пользователе, как показано ниже:
Приведенный выше запрос должен вернуть информацию о пользователе в формате YAML, как показано ниже:
линукс подсказка:
имя пользователя: 'линукс'
роли:
- 'зритель'
- 'наблюдатель_пользователь'
ФИО: 'linuxhint.com'
Эл. адрес: ' [электронная почта защищена] '
метаданные: { }
включено: истинный
Мы видим, что у пользователя есть роли viewer и watcher_user.
Просмотр ролей в Кибане
Если вы не хотите использовать API ролей кошек, вы можете просмотреть роли Elasticsearch в Kibana, перейдя в Управление -> Управление стеком.
Затем перейдите в раздел «Безопасность» -> «Роли».
Затем вы можете просматривать роли и управлять ими.
Вывод
В этой статье вы узнали, как использовать Elasticsearch Roles API для просмотра информации об определенных ролях в кластере. Вы также узнали, как просмотреть роли данного имени пользователя с помощью пользовательского API.
Спасибо за чтение!