Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Руководство [7.17] ›REST API ›API безопасности

API создания ключа API

Создаёт ключ API от имени другого пользователя.

Запрос

POST /_security/api_key/grant

Предварительные условия

  • Для использования этого API, у вас должен быть кластерный привилегии grant_api_key.

Описание

Этот API похож на создание ключей API, однако он создаёт ключ API для пользователя, отличного от пользователя, выполняющего API.

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

Этот API предназначен для использования приложениями, которым необходимо создавать и управлять ключами API для конечных пользователей, но не могут гарантировать, что эти пользователи имеют разрешение на создание ключей API от своего имени (см. Предварительные условия). Ключи API создаются службой ключей Elasticsearch, которая автоматически включается при конфигурировании TLS для HTTP-интерфейса. См. Шифрование HTTP-взаимодействия клиентов с Elasticsearch. В качестве альтернативы, вы можете явно включить параметр xpack.security.authc.api_key.enabled.

Успешный вызов API создания ключа API возвращает JSON-структуру, содержащую ключ API, его уникальный идентификатор и имя. При необходимости, он также возвращает информацию о сроке действия ключа API в миллисекундах.

По умолчанию ключи API никогда не истекают. Вы можете указать информацию о сроке действия при создании ключей API.

См. параметры службы ключей API для параметров конфигурации, связанных со службой ключей API.

Тело запроса

В теле запроса POST можно указать следующие параметры:

access_token
(Обязательно*, строка) Токен доступа пользователя. Если вы указали тип предоставления access_token, этот параметр обязателен. Он недействителен с другими типами предоставления.
api_key

(Обязательно, объект) Определяет ключ API.

expiration
(Необязательно, строка) Время истечения срока действия ключа API. По умолчанию ключи API никогда не истекают.
name
(Обязательно, строка) Указывает имя для этого ключа API.
role_descriptors
(Необязательно, массив-описание-ролей) Массив описаний ролей для этого ключа API. Этот параметр необязателен. Если он не указан или пустой, ключ API получает мгновенный снимок разрешений указанного пользователя или токена доступа. Если вы указываете описания ролей, результирующие разрешения являются пересечением разрешений ключа API и разрешений пользователя или токена доступа. Структура описания роли такая же, как и в запросе для API создания роли. Более подробную информацию см. в разделе создание или обновление ролей.
metadata
(Необязательно, объект) Произвольные метаданные, которые вы хотите связать с ключом API. Поддерживает вложенные структуры данных. В объекте metadata ключи, начинающиеся с _, зарезервированы для использования системой.
grant_type

(Обязательно, строка) Тип предоставления. Поддерживаемые типы предоставления: access_token,password.

access_token
(Обязательно*, строка) В этом типе предоставления необходимо указать токен доступа, созданный службой токенов Elasticsearch. Дополнительную информацию см. в получении токена и Шифрование HTTP-взаимодействия клиентов с Elasticsearch.
password
В этом типе предоставления необходимо указать идентификатор пользователя и пароль, для которых вы хотите создать ключ API.
password
(Необязательно*, строка) Пароль пользователя. Если вы указали тип предоставления password, этот параметр обязателен. Он недействителен с другими типами предоставления.
username
(Необязательно*, строка) Имя пользователя, идентифицирующее пользователя. Если вы указали тип предоставления password, этот параметр обязателен. Он недействителен с другими типами предоставления.

Примеры

POST /_security/api_key/grant
{
  "grant_type": "password",
  "username" : "test_admin",
  "password" : "x-pack-test-password",
  "api_key" : {
    "name": "my-api-key",
    "expiration": "1d",
    "role_descriptors": {
      "role-a": {
        "cluster": ["all"],
        "indices": [
          {
          "names": ["index-a*"],
          "privileges": ["read"]
          }
        ]
      },
      "role-b": {
        "cluster": ["all"],
        "indices": [
          {
          "names": ["index-b*"],
          "privileges": ["all"]
          }
        ]
      }
    },
    "metadata": {
      "application": "my-application",
      "environment": {
         "level": 1,
         "trusted": true,
         "tags": ["dev", "staging"]
      }
    }
  }
}

© 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/security-api-grant-api-key.html

Spec-Zone.ru

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