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

API профиля пользователя «Имеет ли привилегии»

Новая справка по API

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

Функция профиля пользователя предназначена только для использования Kibana и решений Elastic Observability, Enterprise Search и Elastic Security. Пользователи и внешние приложения не должны вызывать этот API напрямую. Elastic оставляет за собой право изменять или удалять эту функцию в будущих выпусках без предварительного уведомления.

Определяет, имеют ли пользователи, связанные с указанными идентификаторами профилей пользователей, все запрошенные привилегии.

Запрос

GET /_security/profile/_has_privileges

POST /_security/profile/_has_privileges

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

Для использования этого API у вас должна быть по крайней мере read_security привилегия кластера (или более высокая привилегия, например, manage_user_profile или manage_security).

Описание

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

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

Успешный вызов возвращает подмножество списка идентификаторов профилей, которые обладают всеми запрошенными привилегиями.

Тело запроса

uids
(список) Список идентификаторов профилей. Привилегии проверяются для пользователей, связанных с профилями.
privileges

Объект, содержащий все проверяемые привилегии.

cluster
(список) Список привилегий кластера, которые необходимо проверить.
index
names
(список) Список индексов.
allow_restricted_indices
(Булево) Это необходимо установить в true (по умолчанию false), если используются подстановочные знаки или регулярные выражения для шаблонов, охватывающих ограниченные индексы. Неявно, ограниченные индексы не соответствуют шаблонам индексов, так как ограниченные индексы обычно имеют ограниченные привилегии, и их включение в тесты шаблонов сделает большинство таких тестов false. Если ограниченные индексы явно включены в список names, привилегии будут проверяться в отношении их независимо от значения allow_restricted_indices.
privileges
(список) Список привилегий, которые необходимо проверить для указанных индексов.
application
application
(строка) Название приложения.
privileges
(список) Список привилегий, которые необходимо проверить для указанных ресурсов. Может быть либо именами привилегий приложения, либо именами действий, предоставляемых этими привилегиями.
resources
(список) Список имен ресурсов, в отношении которых необходимо проверить привилегии.

Обратите внимание, что раздел privileges выше идентичен телу запроса другого API «Имеет ли привилегии».

Тело ответа

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

has_privilege_uids
(список) Подмножество запрошенных идентификаторов профилей пользователей, которые обладают всеми запрошенными привилегиями.
errors

(объект) Ошибки, возникшие при выполнении запроса. Это поле отсутствует, если ошибки нет. Оно не включает идентификаторы профилей пользователей, которые не обладают всеми запрошенными привилегиями.

Свойства объектов в errors
count
(число) Общее количество ошибок
details
(объект) Подробный отчет об ошибках, в котором ключами являются идентификаторы профилей, а значениями — точные ошибки.

Примеры

В следующем примере проверяется, обладают ли два пользователя, связанные с указанными профилями, всем набором запрошенных привилегий кластера, индекса и приложения:

resp = client.security.has_privileges_user_profile(
    uids=[
        "u_LQPnxDxEjIH0GOUoFkZr5Y57YUwSkL9Joiq-g4OCbPc_0",
        "u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1",
        "u_does-not-exist_0"
    ],
    privileges={
        "cluster": [
            "monitor",
            "create_snapshot",
            "manage_ml"
        ],
        "index": [
            {
                "names": [
                    "suppliers",
                    "products"
                ],
                "privileges": [
                    "create_doc"
                ]
            },
            {
                "names": [
                    "inventory"
                ],
                "privileges": [
                    "read",
                    "write"
                ]
            }
        ],
        "application": [
            {
                "application": "inventory_manager",
                "privileges": [
                    "read",
                    "data:write/inventory"
                ],
                "resources": [
                    "product/1852563"
                ]
            }
        ]
    },
)
print(resp)
const response = await client.security.hasPrivilegesUserProfile({
  uids: [
    "u_LQPnxDxEjIH0GOUoFkZr5Y57YUwSkL9Joiq-g4OCbPc_0",
    "u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1",
    "u_does-not-exist_0",
  ],
  privileges: {
    cluster: ["monitor", "create_snapshot", "manage_ml"],
    index: [
      {
        names: ["suppliers", "products"],
        privileges: ["create_doc"],
      },
      {
        names: ["inventory"],
        privileges: ["read", "write"],
      },
    ],
    application: [
      {
        application: "inventory_manager",
        privileges: ["read", "data:write/inventory"],
        resources: ["product/1852563"],
      },
    ],
  },
});
console.log(response);
POST /_security/profile/_has_privileges
{
  "uids": [
    "u_LQPnxDxEjIH0GOUoFkZr5Y57YUwSkL9Joiq-g4OCbPc_0",
    "u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1",
    "u_does-not-exist_0"
  ],
  "privileges": {
    "cluster": [ "monitor", "create_snapshot", "manage_ml" ],
    "index" : [
      {
        "names": [ "suppliers", "products" ],
        "privileges": [ "create_doc"]
      },
      {
        "names": [ "inventory" ],
        "privileges" : [ "read", "write" ]
      }
    ],
    "application": [
      {
        "application": "inventory_manager",
        "privileges" : [ "read", "data:write/inventory" ],
        "resources" : [ "product/1852563" ]
      }
    ]
  }
}

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

{
  "has_privilege_uids": ["u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1"],
  "errors": {
    "count": 1,
    "details": {
      "u_does-not-exist_0": {
        "type": "resource_not_found_exception",
        "reason": "profile document not found"
      }
    }
  }
}

© 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-user-profile.html

Spec-Zone.ru

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