Менеджер секретов
Менеджер секретов предоставляет единый пользовательский интерфейс для секретов во всех бэкендах, которые их используют. Секреты могут быть ограничены по области применения, поэтому разные префиксы хранения могут иметь разные секреты, что позволяет, например, объединять данные по организациям в одном запросе. Секреты также могут быть сохранены, чтобы их не нужно было указывать каждый раз при запуске DuckDB.
Предупреждение. Постоянные секреты хранятся в несжатом двоичном формате на диске.
Секреты
Типы секретов
Секреты имеют тип, их тип определяет, для какой службы они предназначены. В настоящее время доступны следующие облачные службы:
- AWS S3 (
S3), черезhttpfsрасширение - Azure Blob Storage (
AZURE), черезazureрасширение - Cloudflare R2 (
R2), черезhttpfsрасширение - Google Cloud Storage (
GCS), черезhttpfsрасширение - Hugging Face (
HUGGINGFACE), черезhttpfsрасширение - MySQL (
MYSQL), черезmysqlрасширение - PostgreSQL (
POSTGRES), черезpostgresрасширение
Для каждого типа существует один или несколько «поставщиков секретов», которые определяют, как создается секрет. Секреты также могут иметь необязательную область применения, которая является префиксом пути к файлу, к которому применяется секрет. При извлечении секрета для пути секреты областей применения сравниваются с путем, возвращая соответствующий секрет для пути. В случае нескольких совпадающих секретов выбирается самый длинный префикс.
Создание секрета
Секреты можно создать, используя CREATE SECRET SQL оператор. Секреты могут быть временными или постоянными. Временные секреты используются по умолчанию — они хранятся в памяти на все время существования экземпляра DuckDB, аналогично тому, как работали настройки ранее. Постоянные секреты хранятся в несжатом двоичном формате в каталоге ~/.duckdb/stored_secrets. При запуске DuckDB постоянные секреты считываются из этого каталога и автоматически загружаются.
Поставщики секретов
Для создания секрета необходимо использовать поставщика секретов. Поставщик секретов — это механизм, с помощью которого генерируется секрет. Для иллюстрации, для типов секретов S3, GCS, R2, и AZURE DuckDB в настоящее время поддерживает двух поставщиков: CONFIG и CREDENTIAL_CHAIN. Поставщик CONFIG требует, чтобы пользователь передал всю конфигурационную информацию в CREATE SECRET, в то время как поставщик CREDENTIAL_CHAIN автоматически попытается получить учетные данные. Если поставщик секретов не указан, используется поставщик CONFIG. Более подробную информацию о создании секретов с помощью различных поставщиков можно найти на соответствующих страницах httpfs и azure.
Временные секреты
Для создания временного неограниченного секрета для доступа к S3 теперь можно использовать следующее:
CREATE SECRET my_secret (
TYPE S3,
KEY_ID 'my_secret_key',
SECRET 'my_secret_value',
REGION 'my_region'
); Обратите внимание, что здесь мы неявно используем поставщика секретов по умолчанию CONFIG.
Постоянные секреты
Для сохранения секретов между экземплярами базы данных DuckDB теперь можно использовать команду CREATE PERSISTENT SECRET, например:
CREATE PERSISTENT SECRET my_persistent_secret (
TYPE S3,
KEY_ID 'my_secret_key',
SECRET 'my_secret_value'
); По умолчанию это запишет секрет (без шифрования) в каталог ~/.duckdb/stored_secrets. Чтобы изменить каталог секретов, выполните:
SET secret_directory = 'path/to/my_secrets_dir';
Обратите внимание, что установка значения параметра конфигурации home_directory не влияет на расположение каталога секретов.
Удаление секретов
Секреты можно удалить, используя DROP SECRET оператор, например:
DROP PERSISTENT SECRET my_persistent_secret;
Создание нескольких секретов для одного типа службы
Если существуют два секрета для типа службы, область применения может быть использована для определения того, какой из них следует использовать. Например:
CREATE SECRET secret1 (
TYPE S3,
KEY_ID 'my_secret_key1',
SECRET 'my_secret_value1',
SCOPE 's3://my-bucket'
); CREATE SECRET secret2 (
TYPE S3,
KEY_ID 'my_secret_key2',
SECRET 'my_secret_value2',
SCOPE 's3://my-other-bucket'
); Теперь, если пользователь запрашивает что-то из s3://my-other-bucket/something, секрет secret2 будет автоматически выбран для этого запроса. Чтобы увидеть, какой секрет используется, можно использовать скалярную функцию which_secret, которая принимает путь и тип секрета в качестве параметров:
FROM which_secret('s3://my-other-bucket/file.parquet', 's3'); Просмотр секретов
Секреты можно просмотреть, используя встроенную функцию создания таблиц, например, используя duckdb_secrets() функцию таблицы:
FROM duckdb_secrets();
Конфиденциальная информация будет замаскирована.
© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/configuration/secrets_manager.html