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. Если ключ был аннулирован, у него значение | |
| Принципал, для которого был создан этот ключ 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