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

API имения привилегий

Справочник нового API

Для получения самых последних данных об API, обратитесь к 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

Spec-Zone.ru

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