API имения привилегий
Определяет, обладает ли вошедший пользователь указанным списком привилегий.
Запрос
GET /_security/user/_has_privileges
POST /_security/user/_has_privileges
Предварительные условия
- Все пользователи могут использовать этот API, но только для определения своих собственных привилегий. Чтобы проверить привилегии других пользователей, необходимо использовать функцию работы от имени другого пользователя. Дополнительную информацию см. в статье о запросах от имени других пользователей.
Описание
Список привилегий, которые можно указать в данном API, см. в документации по привилегиям безопасности.
Успешный вызов возвращает JSON-структуру, которая показывает, назначены ли каждой указанной привилегии пользователю.
Тело запроса
-
cluster - (список) Список кластерных привилегий, которые необходимо проверить.
-
index -
-
names - (список) Список индексов.
-
allow_restricted_indices - (логическое значение) Это нужно установить в значение
true(по умолчаниюfalse), если используются подстановочные знаки или регулярные выражения для шаблонов, охватывающих ограниченные индексы. Неявным образом, ограниченные индексы не соответствуют шаблонам индексов, потому что ограниченные индексы обычно имеют ограниченные привилегии, и включение их в тесты шаблонов сделает большинство таких тестовfalse. Если ограниченные индексы явно включены в списокnames, привилегии будут проверяться по отношению к ним независимо от значенияallow_restricted_indices. -
privileges - (список) Список привилегий, которые необходимо проверить для указанных индексов.
-
-
application -
-
application - (строка) Имя приложения.
-
privileges - (список) Список привилегий, которые необходимо проверить для указанных ресурсов. Может быть либо именем привилегии приложения, либо именами действий, которые предоставляются этими привилегиями.
-
resources - (список) Список имён ресурсов, по отношению к которым должны быть проверены привилегии.
-
Примеры
В следующем примере проверяется, обладает ли текущий пользователь определённым набором привилегий кластера, индекса и приложения:
resp = client.security.has_privileges(
cluster=[
"monitor",
"manage"
],
index=[
{
"names": [
"suppliers",
"products"
],
"privileges": [
"read"
]
},
{
"names": [
"inventory"
],
"privileges": [
"read",
"write"
]
}
],
application=[
{
"application": "inventory_manager",
"privileges": [
"read",
"data:write/inventory"
],
"resources": [
"product/1852563"
]
}
],
)
print(resp) const response = await client.security.hasPrivileges({
cluster: ["monitor", "manage"],
index: [
{
names: ["suppliers", "products"],
privileges: ["read"],
},
{
names: ["inventory"],
privileges: ["read", "write"],
},
],
application: [
{
application: "inventory_manager",
privileges: ["read", "data:write/inventory"],
resources: ["product/1852563"],
},
],
});
console.log(response); GET /_security/user/_has_privileges
{
"cluster": [ "monitor", "manage" ],
"index" : [
{
"names": [ "suppliers", "products" ],
"privileges": [ "read" ]
},
{
"names": [ "inventory" ],
"privileges" : [ "read", "write" ]
}
],
"application": [
{
"application": "inventory_manager",
"privileges" : [ "read", "data:write/inventory" ],
"resources" : [ "product/1852563" ]
}
]
} В следующем примере вывода показано, какими привилегиями обладает пользователь "rdeniro":
{
"username": "rdeniro",
"has_all_requested" : false,
"cluster" : {
"monitor" : true,
"manage" : false
},
"index" : {
"suppliers" : {
"read" : true
},
"products" : {
"read" : true
},
"inventory" : {
"read" : true,
"write" : false
}
},
"application" : {
"inventory_manager" : {
"product/1852563" : {
"read": false,
"data:write/inventory": false
}
}
}
}
© 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-has-privileges.html