Предоставление привилегий для потоков данных и алиасов
Функции безопасности Elasticsearch позволяют защитить операции, выполняемые с потоками данных и алиасами.
Привилегии для потоков данных
Используйте привилегии индексов, чтобы контролировать доступ к потоку данных. Предоставление привилегий на поток данных предоставляет те же привилегии для его баз данных индексов.
Например, my-data-stream состоит из двух баз данных индексов: .ds-my-data-stream-2099.03.07-000001 и .ds-my-data-stream-2099.03.08-000002.
Пользователю предоставлена привилегия read для my-data-stream.
{
"names" : [ "my-data-stream" ],
"privileges" : [ "read" ]
} Поскольку пользователю автоматически предоставляются те же привилегии для баз данных индексов потока, пользователь может получить документ напрямую из .ds-my-data-stream-2099.03.08-000002:
resp = client.get(
index=".ds-my-data-stream-2099.03.08-000002",
id="2",
)
print(resp) response = client.get( index: '.ds-my-data-stream-2099.03.08-000002', id: 2 ) puts response
const response = await client.get({
index: ".ds-my-data-stream-2099.03.08-000002",
id: 2,
});
console.log(response); GET .ds-my-data-stream-2099.03.08-000002/_doc/2
Позже my-data-stream производит сброс. Это создаёт новый базовый индекс: .ds-my-data-stream-2099.03.09-000003. Поскольку у пользователя всё ещё есть привилегия read для my-data-stream, пользователь может получить документы напрямую из .ds-my-data-stream-2099.03.09-000003:
resp = client.get(
index=".ds-my-data-stream-2099.03.09-000003",
id="2",
)
print(resp) response = client.get( index: '.ds-my-data-stream-2099.03.09-000003', id: 2 ) puts response
const response = await client.get({
index: ".ds-my-data-stream-2099.03.09-000003",
id: 2,
});
console.log(response); GET .ds-my-data-stream-2099.03.09-000003/_doc/2
Привилегии для алиасов
Используйте привилегии индексов, чтобы контролировать доступ к алиасу. Привилегии на индекс или поток данных не предоставляют привилегий на его алиасы. Сведения об управлении алиасами см. в разделе Алиасы.
Не используйте алиасы с фильтрами вместо безопасности на уровне документов. Elasticsearch не всегда применяет фильтры алиасов.
Например, алиас current_year указывает только на индекс 2015. Пользователю предоставлена привилегия read для индекса 2015.
{
"names" : [ "2015" ],
"privileges" : [ "read" ]
} При попытке пользователя получить документ из алиаса current_year, Elasticsearch отклоняет запрос.
resp = client.get(
index="current_year",
id="1",
)
print(resp) response = client.get( index: 'current_year', id: 1 ) puts response
const response = await client.get({
index: "current_year",
id: 1,
});
console.log(response); GET current_year/_doc/1
Чтобы получить документы из current_year, пользователю необходима привилегия индекса read для алиаса.
{
"names" : [ "current_year" ],
"privileges" : [ "read" ]
}
© 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/securing-aliases.html