Spec-Zone.ru › DuckDB

Защита расширений

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

Проверки подписей DuckDB

Расширения DuckDB проверяются при каждой загрузке с помощью подписи двоичных файлов. В настоящее время существует три категории расширений:

  • Подписано с помощью ключа core. Только расширения, проверенные командой разработчиков DuckDB, подписаны этими ключами.
  • Подписано с помощью ключа community. Это открытые расширения, распространяемые через репозиторий Расширений сообщества DuckDB.
  • Неподписано.

Обзор уровней безопасности для расширений

DuckDB предлагает следующие уровни безопасности для расширений.

Используемые расширения Описание Конфигурация
core Расширения могут быть установлены только из репозитория core. SET allow_community_extensions = false
core и community Расширения могут быть установлены только из репозиториев core и community. Это уровень безопасности по умолчанию.
любое расширение, включая неподписанные Можно установить любые расширения. SET allow_unsigned_extensions = true

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

Например, попытка внести следующие изменения в конфигурацию приведет к ошибке:

SET allow_community_extensions = false;
SET allow_community_extensions = true;
Invalid Input Error: Cannot upgrade allow_community_extensions setting while database is running

Расширения сообщества

DuckDB имеет репозиторий расширений сообщества, который позволяет удобно устанавливать расширения от третьих лиц. Репозитории расширений сообщества, такие как pip или npm, по сути, предназначены для удаленного выполнения кода. Это не так драматично, как звучит. В худшем или лучшем случае мы довольно привыкли к передаче случайных скриптов из сети в наши оболочки и регулярно устанавливаем огромное количество зависимостей без лишних раздумий. Некоторые репозитории, такие как CRAN, на каком-то этапе требуют проверки человеком, но это тоже не гарантирует ничего.

Мы изучили несколько различных подходов к репозиториям расширений сообщества и выбрали, что мы считаем разумным подходом: мы не пытаемся проверять отправленные материалы, но требуем, чтобы исходный код расширений был доступен. Мы полностью берем на себя процесс сборки, подписи и распространения. Обратите внимание, что это улучшение по сравнению с pip и npm, которые позволяют загружать произвольные двоичные файлы, но уступает проверке всего вручную. Мы позволяем пользователям сообщать о вредоносных расширениях и показываем статистику использования, такие как звезды GitHub и количество загрузок. Поскольку мы управляем репозиторием, мы можем быстро удалить проблемные расширения из распространения.

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

SET allow_community_extensions = false;

Отключение автоматической установки и автоматической загрузки известных расширений

По умолчанию DuckDB автоматически устанавливает и загружает известные расширения.

Для отключения автоматической установки известных расширений выполните:

SET autoinstall_known_extensions = false;

Для отключения автоматической загрузки известных расширений выполните:

SET autoload_known_extensions = false;

Для блокировки этой конфигурации используйте lock_configuration параметр:

SET lock_configuration = true;

Всегда требовать подписанных расширений

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

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

Spec-Zone.ru

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