Учетные записи служб
Функции безопасности Elastic Stack предоставляют учетные записи служб специально для интеграции с внешними службами, которые подключаются к Elasticsearch, например, сервером Fleet. Учетные записи служб имеют фиксированный набор привилегий и не могут пройти аутентификацию до тех пор, пока для них не будет создан токен учетной записи службы. Кроме того, учетные записи служб предварительно определены в коде и всегда включены.
Учетная запись службы соответствует конкретной внешней службе. Вы создаете токены учетных записей служб для учетной записи службы. Затем служба может пройти аутентификацию с помощью токена и выполнить соответствующие действия. Например, сервер Fleet может использовать свой токен службы для аутентификации с Elasticsearch и затем управлять своими собственными API-ключами.
Вы можете создать несколько токенов учетной записи службы для одной и той же службы, что предотвращает совместное использование учетных данных между несколькими экземплярами одной и той же внешней службы. Каждый экземпляр может принять одну и ту же личность, используя при этом свой собственный уникальный токен службы для аутентификации.
Учетные записи служб предоставляют больше гибкости, чем встроенные пользователи, потому что:
- Они не полагаются на внутренний
nativeдомен и не всегда обязаны полагаться на.securityиндекс - Используют описание роли, названное по имени принципала учетной записи службы, вместо традиционных ролей
- Поддерживают несколько учетных данных через токены учетных записей служб
Учетные записи служб не включены в ответ API получения пользователей. Чтобы получить учетную запись службы, используйте API получения учетных записей служб.
Использование учетных записей служб
Учетные записи служб имеют уникальный принципал, имеющий формат <namespace>/<service>, где namespace — это верхний уровень группировки учетных записей служб, а service — это имя службы и оно должно быть уникальным в рамках своего пространства имен.
Учетные записи служб предварительно определены в коде. Доступны следующие учетные записи служб:
-
elastic/fleet-server - Учетная запись службы, используемая сервером Fleet для взаимодействия с Elasticsearch.
-
elastic/kibana - Учетная запись службы, используемая Kibana для взаимодействия с Elasticsearch.
Не пытайтесь использовать учетные записи служб для аутентификации отдельных пользователей. Учетные записи служб могут быть аутентифицированы только с помощью токенов службы, которые не применимы к обычным пользователям.
Токены учетных записей служб
Токен учетной записи службы, или токен службы, — это уникальная строка, которую служба использует для аутентификации с Elasticsearch. Для данной учетной записи службы каждый токен должен иметь уникальное имя. Поскольку токены содержат учетные данные доступа, их всегда должен хранить в секрете клиент, который их использует.
Токены службы могут быть основаны на .security индексе (рекомендуется) или на service_tokens файле. Вы можете создать несколько токенов службы для одной учетной записи службы, что позволяет нескольким экземплярам одной и той же службы работать с разными учетными данными.
Для использования учетной записи службы необходимо создать токен службы. Вы можете создать токен службы, используя:
- API создания токена учетной записи службы, который сохраняет новый токен службы в
.securityиндексе и возвращает токен-носитель в ответ HTTP. - Утилиту командной строки elasticsearch-service-tokens, которая сохраняет новый токен службы в
$ES_HOME/config/service_tokensфайле и выводит токен-носитель в ваш терминал.
Рекомендуется создавать токены служб через REST API, а не через командную строку. API сохраняет токены служб в .security индексе, что означает, что токены доступны для аутентификации на всех узлах и будут резервироваться в снимках кластера. Использование командной строки предназначено для случаев, когда существует внешний процесс оркестрации (например, Elastic Cloud Enterprise или Elastic Cloud на Kubernetes), который будет управлять созданием и распространением service_tokens файла.
Оба этих метода (API и командная строка) создают токен службы с гарантированной длиной секретной строки 22. Минимальная допустимая длина секретной строки для токена службы составляет 10. Если длина секретной строки не соответствует этому минимальному значению, аутентификация с Elasticsearch завершится неудачей, даже не проверяя значение токена службы.
Токены служб никогда не истекают. Их необходимо явно удалить, если они больше не нужны.
Аутентификация с помощью токенов служб
Учетные записи служб в настоящее время не поддерживают аутентификацию по умолчанию.
Чтобы использовать токен учетной записи службы, включите сгенерированное значение токена в запрос с заголовком Authorization: Bearer:
curl -H "Authorization: Bearer AAEAAWVsYXN0aWM...vZmxlZXQtc2VydmVyL3Rva2VuMTo3TFdaSDZ" http://localhost:9200/_security/_authenticate
Успешный ответ аутентификации включает поле token, которое содержит поле name для имени токена службы и поле type для типа токена службы:
{
"username": "elastic/fleet-server",
"roles": [],
"full_name": "Service account - elastic/fleet-server",
"email": null,
"token": {
"name": "token1",
"type": "_service_account_index"
},
"metadata": {
"_elastic_service_account": true
},
"enabled": true,
"authentication_realm": {
"name": "_service_account",
"type": "_service_account"
},
"lookup_realm": {
"name": "_service_account",
"type": "_service_account"
},
"authentication_type": "token"
} | Имя токена учетной записи службы. | |
| Тип токена учетной записи службы. Значение всегда начинается с |
© 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/service-accounts.html