Безопасность
Elasticsearch SQL интегрируется с безопасностью, если она включена в вашем кластере. В таком случае Elasticsearch SQL поддерживает безопасность на уровне транспорта (путем шифрования связи между потребителем и сервером) и аутентификацию (для доступа).
Настройка SSL/TLS
В случае зашифрованного транспорта, поддержка SSL/TLS должна быть включена в Elasticsearch SQL для правильного установления связи с Elasticsearch. Это делается путем установки свойства ssl в значение true или использования префикса https в URL.
В зависимости от вашей конфигурации SSL (подписаны ли сертификаты центром сертификации, являются ли они глобальными на уровне JVM или только локальными для одного приложения), может потребоваться настройка keystore и/или truststore, где хранятся кредициальные данные (keystore — обычно хранятся приватные ключи и сертификаты) и как их проверять (truststore — обычно хранятся сертификаты от третьих лиц, также известных как ЦС — центры сертификации).
Как правило (и, обратите внимание, ваша среда может значительно отличаться), если настройка SSL для Elasticsearch SQL еще не выполнена на уровне JVM, необходимо настроить хранилище ключей, если безопасность Elasticsearch SQL требует аутентификации клиента (PKI — инфраструктура открытых ключей), и настроить truststore, если SSL включен.
Аутентификация
Поддержка аутентификации в Elasticsearch SQL состоит из двух типов:
- Имя пользователя/Пароль
- Установите эти значения через свойства
userиpassword. - PKI/X.509
- Используйте сертификаты X.509 для аутентификации Elasticsearch SQL с Elasticsearch. Для этого необходимо настроить
keystore, содержащий приватный ключ и сертификат для соответствующего пользователя (настроенного в Elasticsearch), иtruststoreс сертификатом ЦС, используемым для подписания SSL/TLS-сертификатов в кластере Elasticsearch. То есть, необходимо настроить ключ для аутентификации Elasticsearch SQL и также убедиться, что это правильный ключ. Для этого необходимо установить свойстваssl.keystore.locationиssl.truststore.locationдля указанияkeystoreиtruststoreдля использования. Рекомендуется защитить их паролем, в этом случае потребуются свойстваssl.keystore.passиssl.truststore.pass.
Разрешения (серверная сторона)
На сервере необходимо добавить несколько разрешений пользователям, чтобы они могли выполнять SQL запросы. Для выполнения SQL запросов пользователю требуется минимум разрешение read и indices:admin/get, в то время как некоторые части API требуют cluster:monitor/main.
Вы можете добавить разрешения, создав роль, и назначив эту роль пользователю. Роли могут быть созданы с помощью Kibana, с помощью API вызова или файла конфигурации roles.yml. Использование Kibana или API управления ролями является предпочтительным методом определения ролей. Управление ролями с помощью файлов полезно, если вы хотите определить роль, которая не нуждается в изменении. Вы не можете использовать API управления ролями для просмотра или редактирования роли, определенной в roles.yml.
Добавление разрешений с помощью API управления ролями
В этом примере настраивается роль, которая может выполнять SQL запросы в JDBC, обращаясь к индексу test:
resp = client.security.put_role(
name="cli_or_drivers_minimal",
cluster=[
"cluster:monitor/main"
],
indices=[
{
"names": [
"test"
],
"privileges": [
"read",
"indices:admin/get"
]
}
],
)
print(resp) const response = await client.security.putRole({
name: "cli_or_drivers_minimal",
cluster: ["cluster:monitor/main"],
indices: [
{
names: ["test"],
privileges: ["read", "indices:admin/get"],
},
],
});
console.log(response); POST /_security/role/cli_or_drivers_minimal
{
"cluster": ["cluster:monitor/main"],
"indices": [
{
"names": ["test"],
"privileges": ["read", "indices:admin/get"]
}
]
} Добавление разрешений к roles.yml
В этом примере настраивается роль, которая может выполнять SQL запросы в JDBC, обращаясь к индексам test и bort. Добавьте следующее в roles.yml:
cli_or_drivers_minimal:
cluster:
- "cluster:monitor/main"
indices:
- names: test
privileges: [read, "indices:admin/get"]
- names: bort
privileges: [read, "indices:admin/get"]
© 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/sql-security.html