Spec-Zone.ru › DuckDB

Защита DuckDB

DuckDB обладает высокой мощностью, что может быть проблематично, особенно если выполняются недоверенные запросы SQL, например, из вводимых пользователем данных. На этой странице перечислены некоторые варианты ограничения возможных последствий вредоносных запросов SQL.

Подход к защите DuckDB зависит от вашего сценария использования, среды и потенциальных моделей атак. Поэтому тщательно рассмотрите параметры конфигурации, связанные с безопасностью, особенно при работе с конфиденциальными наборами данных.

Если вы планируете интегрировать DuckDB в свое приложение, обратитесь к странице “Интеграция DuckDB”.

Сообщения об уязвимостях

Если вы обнаружите потенциальную уязвимость, пожалуйста, сообщите об этом конфиденциально через GitHub.

Отключение доступа к файлам

DuckDB может перечислять каталоги и читать произвольные файлы через CSV-парсер read_csv функцию или читать текст через read_text функцию. Например:

SELECT *
FROM read_csv('/etc/passwd', sep = ':');

Это можно отключить, либо отключив полностью внешний доступ (enable_external_access), либо отключив отдельные файловые системы. Например:

SET disabled_filesystems = 'LocalFileSystem';

Секреты

Секреты используются для управления учетными данными для входа в сторонние сервисы, такие как AWS или Azure. DuckDB может отобразить список секретов, используя duckdb_secrets() функцию таблицы. По умолчанию любая конфиденциальная информация, например, ключи безопасности, будет замаскирована. allow_unredacted_secrets опция может быть установлена для отображения всей информации, содержащейся в ключе безопасности. Рекомендуется не включать эту опцию, если вы работаете с недоверенным SQL-вводом.

Запросы могут получить доступ к секретам, определенным в Secrets Manager. Например, если определен секрет для аутентификации пользователя, имеющего права записи в заданный бакет AWS S3, запросы могут записывать в этот бакет. Это применимо как к постоянным, так и к временным секретам.

Постоянные секреты хранятся в незашифрованном двоичном формате на диске. У них такие же права, как у ключей SSH, 600, т.е. только пользователь, запускающий процесс DuckDB (родительский), может их читать и писать.

Заблокированные конфигурации

Настройки конфигурации, связанные с безопасностью, обычно блокируются по соображениям безопасности. Например, хотя мы можем отключить расширения сообщества с помощью SET allow_community_extensions = false, мы не можем повторно включить их позже без перезапуска базы данных. Попытка сделать это приведет к ошибке:

Invalid Input Error: Cannot upgrade allow_community_extensions setting while database is running

Это предотвращает недоверенный SQL-ввод от повторного включения настроек, которые были явно отключены по соображениям безопасности.

Тем не менее, многие настройки конфигурации не отключаются сами по себе, такие как ограничения ресурсов. Если вы позволяете пользователям выполнять SQL-запросы без ограничений на вашем собственном оборудовании, рекомендуется заблокировать конфигурацию после завершения вашей собственной конфигурации с помощью следующей команды:

SET lock_configuration = true;

Это предотвращает любые изменения настроек конфигурации с этого момента.

Ограничение использования ресурсов

DuckDB может использовать значительное количество ЦП, ОЗУ и дискового пространства. Для предотвращения атак с отказом в обслуживании эти ресурсы можно ограничить.

Количество потоков ЦП, которые может использовать DuckDB, можно установить, например:

SET threads = 4;

Где 4 — количество разрешенных потоков.

Максимальный объем памяти (ОЗУ) также можно ограничить, например:

SET memory_limit = '4GB';

Размер временной директории файла можно ограничить с помощью:

SET max_temp_directory_size = '4GB';

Расширения

DuckDB имеет мощный механизм расширений, которые имеют такие же права, что и пользователь, запускающий процесс DuckDB (родительский). Это вносит соображения по безопасности. Поэтому мы рекомендуем рассмотреть параметры конфигурации для защиты расширений.

Общие решения

Защита DuckDB также может быть обеспечена с помощью проверенных методов, например:

  • Ограничение прав пользователей с помощью chroot, полагаясь на операционную систему
  • Контейнеризация, например, Docker и Podman
  • Запуск DuckDB в WebAssembly

Страницы в этом разделе

© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/operations_manual/securing_duckdb/overview.html

Spec-Zone.ru

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