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 не присваивает им никакого смысла. | |
| Использование здесь подстановочного знака ( | |
| Объект метаданных является необязательным. |
{
"myapp": {
"read": {
"created": true
}
}
} | При обновлении существующей привилегии |
Для добавления нескольких привилегий отправьте запрос 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