Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›REST API ›API безопасности

API получения информации о ключе API

Справочник по новым API

Для получения самых актуальных данных API, обратитесь к API безопасности.

Возвращает информацию об одном или нескольких ключах API.

Запрос

GET /_security/api_key

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

  • Для использования этого API необходимо обладать как минимум правами кластера уровня manage_own_api_key или read_security.

    • Если у вас есть только право manage_own_api_key, то этот API вернёт только те ключи API, которые вам принадлежат.

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

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

Описание

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

Параметры пути

В параметрах запроса GET можно указать следующие параметры, относящиеся к получению ключей API:

id
(Необязательный, строка) Идентификатор ключа API. Этот параметр не может быть использован вместе с любыми из name, realm_name или username.
name
(Необязательный, строка) Название ключа API. Этот параметр не может быть использован вместе с любыми из id, realm_name или username. Поддерживается поиск по префиксу с подстановочными символами.
realm_name
(Необязательный, строка) Название области аутентификации. Этот параметр не может быть использован вместе с id или name, или когда флаг owner установлен в true.
username
(Необязательный, строка) Имя пользователя. Этот параметр не может быть использован вместе с id или name, или когда флаг owner установлен в true.
owner
(Необязательный, булево) Флаг, который может быть использован для запроса ключей API, принадлежащих текущему аутентифицированному пользователю. По умолчанию false. Параметры realm_name или username не могут быть указаны, когда этот параметр установлен в true, так как предполагается, что они относятся к текущему аутентифицированному пользователю.
with_limited_by
(Необязательный, булево) Флаг, возвращающий снимок описателей ролей пользователя-владельца, связанных с ключом API. Фактическое разрешение ключа API — это пересечение его назначенных описателей ролей и описателей ролей пользователя-владельца (эффективно ограниченное им). Для получения ограниченных описателей ролей любого ключа API, включая собственный, ключ API должен иметь права manage_api_key или выше.
with_profile_uid
(Необязательный, булево) Определяет, нужно ли также получить профиль пользователя uid для пользователя-владельца ключа API. Если он существует, идентификатор профиля возвращается в поле ответа profile_uid для каждого ключа API. По умолчанию false.
active_only
(Необязательный, булево) Булевый флаг, который можно использовать для запроса активных ключей API. Ключ API считается активным, если он не аннулирован и не истек на момент запроса. Вы можете указать его вместе с другими параметрами, такими как owner или name. Если active_only равно false, ответ будет включать как активные, так и неактивные (просроченные или аннулированные) ключи. По умолчанию false.

Когда ни один из параметров «id», «name», «username» и «realm_name» не указан, а «owner» установлен в false, то он получит все ключи API, если пользователь имеет на это разрешение. Если у пользователя нет разрешения на получение ключей API других пользователей, будет возвращено сообщение об ошибке.

Примеры

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

resp = client.security.create_api_key(
    name="my-api-key",
    role_descriptors={},
    metadata={
        "application": "myapp"
    },
)
print(resp)
const response = await client.security.createApiKey({
  name: "my-api-key",
  role_descriptors: {},
  metadata: {
    application: "myapp",
  },
});
console.log(response);
POST /_security/api_key
{
  "name": "my-api-key",
  "role_descriptors": {},
  "metadata": {
    "application": "myapp"
  }
}

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

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

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

resp = client.security.get_api_key(
    id="VuaCfGcBCdbkQm-e5aOx",
    with_limited_by=True,
)
print(resp)
const response = await client.security.getApiKey({
  id: "VuaCfGcBCdbkQm-e5aOx",
  with_limited_by: "true",
});
console.log(response);
GET /_security/api_key?id=VuaCfGcBCdbkQm-e5aOx&with_limited_by=true

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

{
  "api_keys": [ 
    {
      "id": "VuaCfGcBCdbkQm-e5aOx", 
      "name": "my-api-key", 
      "creation": 1548550550158, 
      "expiration": 1548551550158, 
      "invalidated": false, 
      "username": "myuser", 
      "realm": "native1", 
      "realm_type": "native",
      "metadata": { 
        "application": "myapp"
      },
      "role_descriptors": { }, 
      "limited_by": [  
        {
          "role-power-user": {
            "cluster": [
              "monitor"
            ],
            "indices": [
              {
                "names": [
                  "*"
                ],
                "privileges": [
                  "read"
                ],
                "allow_restricted_indices": false
              }
            ],
            "applications": [ ],
            "run_as": [ ],
            "metadata": { },
            "transient_metadata": {
              "enabled": true
            }
          }
        }
      ]
    }
  ]
}

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

Идентификатор ключа API

Имя ключа API

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

Необязательное время истечения срока действия ключа API в миллисекундах

Статус проверки ключа API. Если ключ был аннулирован, у него значение true и дополнительное поле с invalidation временем в миллисекундах. В противном случае, это false.

Принципал, для которого был создан этот ключ API

Имя домена принципала, для которого был создан этот ключ API

Метаданные ключа API

Описатели ролей, назначенные этому ключу API при его создании или последнем обновлении. Пустой описатель роли означает, что ключ API наследует разрешения пользователя-владельца.

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

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

resp = client.security.get_api_key(
    name="my-api-key",
)
print(resp)
const response = await client.security.getApiKey({
  name: "my-api-key",
});
console.log(response);
GET /_security/api_key?name=my-api-key

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

resp = client.security.get_api_key(
    name="my-*",
)
print(resp)
const response = await client.security.getApiKey({
  name: "my-*",
});
console.log(response);
GET /_security/api_key?name=my-*

Следующий пример получает все ключи API для домена native1:

resp = client.security.get_api_key(
    realm_name="native1",
)
print(resp)
const response = await client.security.getApiKey({
  realm_name: "native1",
});
console.log(response);
GET /_security/api_key?realm_name=native1

Следующий пример получает все ключи API для пользователя myuser во всех доменах:

resp = client.security.get_api_key(
    username="myuser",
)
print(resp)
const response = await client.security.getApiKey({
  username: "myuser",
});
console.log(response);
GET /_security/api_key?username=myuser

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

resp = client.security.get_api_key(
    owner=True,
)
print(resp)
const response = await client.security.getApiKey({
  owner: "true",
});
console.log(response);
GET /_security/api_key?owner=true

Следующий пример получает все ключи API, если пользователь имеет право на это:

resp = client.security.get_api_key()
print(resp)
const response = await client.security.getApiKey();
console.log(response);
GET /_security/api_key

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

resp = client.security.get_api_key(
    active_only=True,
)
print(resp)
const response = await client.security.getApiKey({
  active_only: "true",
});
console.log(response);
GET /_security/api_key?active_only=true

Далее создаётся ключ API

resp = client.security.create_api_key(
    name="my-api-key-1",
    metadata={
        "application": "my-application"
    },
)
print(resp)
const response = await client.security.createApiKey({
  name: "my-api-key-1",
  metadata: {
    application: "my-application",
  },
});
console.log(response);
POST /_security/api_key
{
  "name": "my-api-key-1",
  "metadata": {
    "application": "my-application"
  }
}

Следующий пример получает ключ API, идентифицированный заданным id, если он принадлежит текущему аутентифицированному пользователю:

resp = client.security.get_api_key(
    id="VuaCfGcBCdbkQm-e5aOx",
    owner=True,
)
print(resp)
const response = await client.security.getApiKey({
  id: "VuaCfGcBCdbkQm-e5aOx",
  owner: "true",
});
console.log(response);
GET /_security/api_key?id=VuaCfGcBCdbkQm-e5aOx&owner=true

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

resp = client.security.get_api_key(
    username="myuser",
    realm_name="native1",
)
print(resp)
const response = await client.security.getApiKey({
  username: "myuser",
  realm_name: "native1",
});
console.log(response);
GET /_security/api_key?username=myuser&realm_name=native1

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

{
  "api_keys": [
    {
      "id": "0GF5GXsBCXxz2eDxWwFN",
      "name": "hadoop_myuser_key",
      "creation": 1548550550158,
      "expiration": 1548551550158,
      "invalidated": false,
      "username": "myuser",
      "realm": "native1",
      "realm_type": "native",
      "metadata": {
        "application": "myapp"
      },
      "role_descriptors": {
        "role-a": {
          "cluster": [
            "monitor"
          ],
          "indices": [
            {
              "names": [
                "index-a"
              ],
              "privileges": [
                "read"
              ],
              "allow_restricted_indices": false
            }
          ],
          "applications": [ ],
          "run_as": [ ],
          "metadata": { },
          "transient_metadata": {
            "enabled": true
          }
        }
      }
    },
    {
      "id": "6wHJmcQpReKBa42EHV5SBw",
      "name": "api-key-name-2",
      "creation": 1548550550158,
      "invalidated": false,
      "username": "user-y",
      "realm": "realm-2",
      "metadata": {},
      "role_descriptors": { }
    }
  ]
}

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

Spec-Zone.ru

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