14.5. Секреты #

Секреты DuckDB можно настроить с помощью вспомогательных функций или обёртки сторонних данных для более продвинутых сценариев.

Секреты хранятся в виде комбинаций SERVER и USER MAPPING в обёртке сторонних данных DuckDB. В USER MAPPING размещаются конфиденциальные элементы, такие как token, session_token и secret. Каждый раз, когда pgpro_axe создаёт экземпляр DuckDB, а также при изменении секрета, секреты загружаются в менеджер секретов DuckDB как непостоянные.

Важно

Не предоставляйте право USAGE для обёртки сторонних данных duckdb обычным пользователям.

Владелец стороннего сервера может создавать сопоставления для любого пользователя. Поэтому это право следует предоставлять только администраторам. В противном случае обычный пользователь смог бы создавать секреты для определённых областей доступа без ведома других пользователей.

Postgres Pro AXE поддерживает следующие типы секретов:

Секретами можно управлять с помощью функций pgpro_axe.

14.5.1. Простые секреты #

Настроить учётные данные проще всего с использованием вспомогательных функций:

Пример 14.3.

  -- Базовый секрет S3 (наиболее распространённый)
  SELECT duckdb.create_simple_secret(
      type := 'S3',
      key_id := 'your_access_key_id',
      secret := 'your_secret_access_key',
      region := 'us-east-1'
  );
  

У этой функции есть другие параметры:

Пример 14.4.

  SELECT duckdb.create_simple_secret(
      type          := 'S3',          -- Тип: один из (S3, GCS, R2)
      key_id        := 'идентификатор_ключа_доступа',
      secret        := 'xxx',
      session_token := 'yyy',         -- (необязательно)
      region        := 'us-east-1',   -- (необязательно)
      url_style     := 'xxx',         -- (необязательно)
      provider      := 'xxx',         -- (необязательно)
      endpoint      := 'xxx',         -- (необязательно)
      scope         := 'xxx',         -- (необязательно)
      validation    := 'xxx',         -- (необязательно)
      use_ssl       := 'xxx'          -- (необязательно)
  )
  

14.5.2. Секреты с поставщиком credential_chain #

Для более продвинутых сценариев можно определять секреты с SERVER и USER MAPPING в обёртке сторонних данных DuckDB:

Пример 14.5.

    CREATE SERVER my_s3_secret
    TYPE 's3'
    FOREIGN DATA WRAPPER duckdb
    OPTIONS (PROVIDER 'credential_chain');
  

14.5.3. Секреты с secret_access_key #

Если секрет содержит конфиденциальную информацию, необходимо создать дополнительный USER MAPPING:

Пример 14.6.

    CREATE SERVER my_s3_secret TYPE 's3' FOREIGN DATA WRAPPER duckdb;

    CREATE USER MAPPING FOR CURRENT_USER SERVER my_s3_secret
    OPTIONS (KEY_ID 'my_secret_key', SECRET 'my_secret_value');
  

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