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

API создания или обновления привилегий приложений

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

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

Добавляет или обновляет привилегии приложений.

Запрос

POST /_security/privilege

PUT /_security/privilege

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

Для использования этого API необходимо иметь:

  • привилегию кластера manage_security (или более широкую привилегию, такую как all); или
  • глобальную привилегию "Управление привилегиями приложений" для приложения, на которое ссылается запрос

Описание

Этот API создает или обновляет привилегии. Чтобы удалить привилегии, используйте API удаления привилегий приложения.

Дополнительную информацию см. в разделе Привилегии приложений.

Чтобы проверить привилегии приложения пользователя, используйте API проверки наличия привилегий.

Тело запроса

Тело представляет собой JSON-объект, где названия полей — имена приложений, а значение каждого поля — объект. Поля в этом внутреннем объекте — имена привилегий, а каждое значение — JSON-объект, содержащий следующие поля:

actions
(массив строк) Список имен действий, предоставляемых этой привилегией. Это поле должно существовать и не может быть пустым массивом.
metadata
(объект) Необязательные метаданные. Внутри объекта metadata ключи, начинающиеся с _, зарезервированы для использования системой.

Валидация

Имена приложений

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

  • Префикс должен начинаться с строчной латинской буквы
  • Префикс должен содержать только латинские буквы или цифры
  • Префикс должен быть длиной не менее 3 символов
  • Если суффикс существует, он должен начинаться с - или _
  • Суффикс не может содержать следующих символов: \, /, *, ?, ", <, >, |, ,, *
  • Никакая часть имени не может содержать пробелы.
Имена привилегий
Имена привилегий должны начинаться со строчной латинской буквы и содержать только латинские буквы и цифры, а также символы _, - и .
Имена действий
Имена действий могут содержать любое количество печатных символов ASCII и должны содержать по крайней мере один из следующих символов: / *, :

Тело ответа

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

Примеры

Для добавления одной привилегии отправьте запрос PUT или POST на конечную точку /_security/privilege/. Например:

resp = client.security.put_privileges(
    privileges={
        "myapp": {
            "read": {
                "actions": [
                    "data:read/*",
                    "action:login"
                ],
                "metadata": {
                    "description": "Read access to myapp"
                }
            }
        }
    },
)
print(resp)
const response = await client.security.putPrivileges({
  privileges: {
    myapp: {
      read: {
        actions: ["data:read/*", "action:login"],
        metadata: {
          description: "Read access to myapp",
        },
      },
    },
  },
});
console.log(response);
PUT /_security/privilege
{
  "myapp": {
    "read": {
      "actions": [ 
        "data:read/*" , 
        "action:login" ],
        "metadata": { 
          "description": "Read access to myapp"
        }
      }
    }
}

Эти строки имеют значение в приложении "myapp". Elasticsearch не присваивает им никакого смысла.

Использование здесь подстановочного знака (*) означает, что эта привилегия предоставляет доступ ко всем действиям, начинающимся с data:read/. Elasticsearch не присваивает им никакого смысла. Однако, если запрос включает привилегию приложения, такую как data:read/users или data:read/settings, API проверки наличия привилегий учитывает использование подстановочного знака и возвращает true.

Объект метаданных является необязательным.

{
  "myapp": {
    "read": {
      "created": true 
    }
  }
}

При обновлении существующей привилегии created устанавливается в значение false.

Для добавления нескольких привилегий отправьте запрос POST на конечную точку /_security/privilege/. Например:

resp = client.security.put_privileges(
    privileges={
        "app01": {
            "read": {
                "actions": [
                    "action:login",
                    "data:read/*"
                ]
            },
            "write": {
                "actions": [
                    "action:login",
                    "data:write/*"
                ]
            }
        },
        "app02": {
            "all": {
                "actions": [
                    "*"
                ]
            }
        }
    },
)
print(resp)
const response = await client.security.putPrivileges({
  privileges: {
    app01: {
      read: {
        actions: ["action:login", "data:read/*"],
      },
      write: {
        actions: ["action:login", "data:write/*"],
      },
    },
    app02: {
      all: {
        actions: ["*"],
      },
    },
  },
});
console.log(response);
PUT /_security/privilege
{
  "app01": {
    "read": {
      "actions": [ "action:login", "data:read/*" ]
    },
    "write": {
      "actions": [ "action:login", "data:write/*" ]
    }
  },
  "app02": {
    "all": {
      "actions": [ "*" ]
    }
  }
}

Успешный вызов возвращает JSON-структуру, показывающую, были ли привилегии созданы или обновлены.

{
  "app02": {
    "all": {
      "created": true
    }
  },
  "app01": {
    "read": {
      "created": true
    },
    "write": {
      "created": true
    }
  }
}

© 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-put-privileges.html

Spec-Zone.ru

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