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

API для получения информации о ключах запросов

Получает информацию о ключах API с помощью Query DSL в страничном формате.

Запрос

GET /_security/_query/api_key

POST /_security/_query/api_key

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

  • Для использования этого API необходимо иметь как минимум право доступа manage_own_api_key к кластеру.
  • Если у вас есть только право доступа manage_own_api_key, этот API возвращает только ключи API, которые вы владеете. Если у вас есть право доступа manage_api_key или выше (включая manage_security), этот API возвращает все ключи API независимо от владения.

Описание

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

Тело запроса

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

query

(Необязательно, строка) Запрос для фильтрации возвращаемых ключей API. Запрос поддерживает подмножество типов запросов, включая match_all, bool, term, terms, ids, prefix, wildcard и range.

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

Допустимые значения для query
id
Идентификатор ключа API. Обратите внимание, что id необходимо запросить с помощью ids запроса.
name
Название ключа API.
creation
Время создания ключа API в миллисекундах.
expiration
Время истечения срока действия ключа API в миллисекундах.
invalidated
Указывает, является ли ключ API недействительным. Если true, ключ недействителен. По умолчанию false.
username
Имя пользователя владельца ключа API.
realm
Имя области владельца ключа API.
metadata
Поле метаданных, связанное с ключом API, например, metadata.my_field. Поскольку метаданные хранятся в виде поля flattened, все поля ведут себя как поля keyword при запросе и сортировке.
from

(Необязательно, целое число) Начальный смещение документа. По умолчанию 0.

По умолчанию нельзя просмотреть более 10 000 совпадений с параметрами from и size. Для просмотра большего количества совпадений используйте параметр search_after.

size

(Необязательно, целое число) Количество совпадений для возврата. Должно быть неотрицательным и по умолчанию равно 10.

По умолчанию нельзя просмотреть более 10 000 совпадений с параметрами from и size. Для просмотра большего количества совпадений используйте параметр search_after.

sort
(Необязательно, объект) Определение сортировки. Помимо id, все общедоступные поля ключа API пригодны для сортировки. Кроме того, сортировка может быть применена к полю _doc для сортировки по порядку индекса.
search_after
(Необязательно, массив) Определение поиска после.

Тело ответа

Этот API возвращает следующие поля верхнего уровня:

total
Общее количество найденных ключей API.
count
Количество ключей API, возвращённых в ответе.
api_keys
Список информации о ключах API.

Примеры

Следующий запрос выводит все ключи API, предполагая, что у вас есть право доступа manage_api_key:

GET /_security/_query/api_key

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

{
  "total": 3,
  "count": 3,
  "api_keys": [ 
    {
      "id": "nkvrGXsB8w290t56q3Rg",
      "name": "my-api-key-1",
      "creation": 1628227480421,
      "expiration": 1629091480421,
      "invalidated": false,
      "username": "elastic",
      "realm": "reserved",
      "metadata": {
        "letter": "a"
      }
    },
    {
      "id": "oEvrGXsB8w290t5683TI",
      "name": "my-api-key-2",
      "creation": 1628227498953,
      "expiration": 1628313898953,
      "invalidated": false,
      "username": "elastic",
      "realm": "reserved",
      "metadata": {
        "letter": "b"
      }
    }
  ]
}

Список ключей API, полученных для этого запроса

Если вы создаете ключ API со следующими данными:

POST /_security/api_key
{
  "name": "application-key-1",
  "metadata": { "application": "my-application"}
}

Успешный вызов возвращает JSON-структуру, которая предоставляет информацию о ключе API. Например:

{
  "id": "VuaCfGcBCdbkQm-e5aOx",
  "name": "application-key-1",
  "api_key": "ui2lp2axTNmsyakw9tvNnw",
  "encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw=="
}

Используйте информацию из ответа для получения ключа API по идентификатору:

GET /_security/_query/api_key
{
  "query": {
    "ids": {
      "values": [
        "VuaCfGcBCdbkQm-e5aOx"
      ]
    }
  }
}

Вы также можете получить ключ API по имени:

GET /_security/_query/api_key
{
  "query": {
    "term": {
      "name": {
        "value": "application-key-1"
      }
    }
  }
}

Используйте bool запрос для создания сложных логических условий и используйте from, size, sort, чтобы помочь в постраничном отображении результата:

{
  "query": {
    "bool": {
      "must": [
        {
          "prefix": {
            "name": "app1-key-" 
          }
        },
        {
          "term": {
            "invalidated": "false" 
          }
        }
      ],
      "must_not": [
        {
          "term": {
            "name": "app1-key-01" 
          }
        }
      ],
      "filter": [
        {
          "wildcard": {
            "username": "org-*-user" 
          }
        },
        {
          "term": {
            "metadata.environment": "production" 
          }
        }
      ]
    }
  },
  "from": 20, 
  "size": 10, 
  "sort": [ 
    { "creation": { "order": "desc", "format": "date_time" } },
    "name"
  ]
}

Имя ключа API должно начинаться с app1-key-

Ключ API должен быть действительным

Имя ключа API не должно быть app1-key-01

Ключ API должен принадлежать пользователю с именем шаблона org-*-user

Ключ API должен иметь поле метаданных environment со значением production

Смещение для начала поиска результата — 20-й (индекс с нуля) ключ API

Размер страницы ответа — 10 ключей API

Результат отсортирован по дате создания creation в порядке убывания, а затем по имени в порядке возрастания

Ответ содержит список совпавших ключей API вместе со значениями сортировки:

{
  "total": 100,
  "count": 10,
  "api_keys": [
    {
      "id": "CLXgVnsBOGkf8IyjcXU7",
      "name": "app1-key-79",
      "creation": 1629250154811,
      "invalidated": false,
      "username": "org-admin-user",
      "realm": "native1",
      "metadata": {
        "environment": "production"
      },
      "_sort": [
        "2021-08-18T01:29:14.811Z",  
        "app1-key-79"  
      ]
    },
    {
      "id": "BrXgVnsBOGkf8IyjbXVB",
      "name": "app1-key-78",
      "creation": 1629250153794,
      "invalidated": false,
      "username": "org-admin-user",
      "realm": "native1",
      "metadata": {
        "environment": "production"
      },
      "_sort": [
        "2021-08-18T01:29:13.794Z",
        "app1-key-78"
      ]
    },
    ...
  ]
}

Первое значение сортировки — время создания, которое отображается в date_time формате, как определено в запросе

Второе значение сортировки — имя ключа API

© 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-query-api-key.html

Spec-Zone.ru

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