Skip to content

Конфигурация

Настройка PXF

Для получения секретов аутентификации и доступа к источникам данных PXF использует расширение pxf-ext.

Расширение обеспечивает получение секретов через обращение к Vault вместо прямого чтения из конфигурационных файлов.

Общая схема обновленного контура Greenplum LT представлена на рисунке 1.

Рис. 1 Схема взаимодействия Greenplum, PXF и Hashicorp Vault

Детальная схема работы фреймворка PXF включает следующие этапы:

  1. Получение пользовательского запроса
  2. Аутентификация в источнике
    В данном случае PXF не использует секреты, хранящиеся в открытом виде. Для получения необходимых секретов он обращается в Vault по протоколу HTTP(S) с соответствующим токеном и получает секреты, с которыми в дальнейшем аутентифицируется во внешнем источнике данных.
  3. Выполнение запроса
    После получения секретов и аутентификации в источнике происходит выполнение запроса.

Установка расширения pxf-ext и добавление профиля hashicorp

Порядок установки:

  • Загрузить необходимую версию расширения на хост мастера Greenplum
  • Распаковать архив
Распаковка расширения

[gpadmin@gpmas0llt support] tar -xvf pxf-ext_1.1.3_pxf_release-6.9.0.tar.gz
  • После распаковки архива необходимо запустить скрипт установки расширения
Установка расширения

[gpadmin@gpmas0llt support] ./pxf-ext_install.sh
  • Важно: Скрипт установки поместит все библиотеки по следующему пути: $PXB_BASE/lib/pxf-ext/libs/*.jar
    Для корректной работы расширения все библиотеки необходимо переместить на 1 уровень выше.
Установка расширения

[gpadmin@gpmas0llt support] cp $PXB_BASE/lib/pxf-ext/libs/*.jar $PXB_BASE/lib/pxf-ext/libs/pxf-ext/

Корректная структура каталогов и расположение библиотек приведены на рисунке 2.

Рис. 2 Требуемая структура каталога после установки расширения

  • Необходимо изменить конфигурационный файл $PXF_BASE/conf/pxf-profile.xml, добавив необходимый профиль hashicorp, который позволит PXF во время работы подгрузить соответствующие библиотеки для работы с Hashicorp Vault.

PROFILE определяет профиль для доступа к данным, например, JDBC для реляционных СУБД с этим коннектором.
Профиль PXF – это простое именованное сопоставление, которое представляет протокол для подключения к внешнему источнику данных, и формат, который следует обработать

Необходимый профиль можно найти на странице расширения.

На рисунке 3 приведен файл pxf-profile.xml контура LT.

Рис. 3 Профиль hashicorp

Настройка конфигурационных файлов серверов PXF

После установки расширения, добавления профиля hashicorp и настройки Vault необходимо внести изменения в конфигурационные файлы серверов PXF. Контур LT содержит 5 конфигурационных файлов серверов, расположенных по пути:$PXF_BASE/servers/<имя_сервера>/jdbc-site.xml

Состав каталога $PXF_BASE/servers приведен на рисунке 14.

На рисунке 14 показано 6 конфигурационных файлов, CMOCEAN_PG2 добавлен позже.

Рис. 14 PXF servers

Например, текущее содержимое конфигурационного файла $PXF_BASE/servers/CMOCEAN_PG_STAGE/jdbc-site.xml (на рисунке приведена только часть файла) показано на рисунке 15.

Рис. 15 Содержимое конфигурационного файла jdbc-site.xml

Для источника CMOCEAN_PG_STAGE все секреты, используемые для авторизации во внешнем источнике, хранятся в открытом виде.

Необходимо обновить конфигурационные файлы серверов PXF. Все изменения, которые требуется внести в файл, можно найти на странице расширения в GitLab.

Порядок обновления конфигурационных файлов

Процедура обновления конфигурационных файлов (показан пример для одного файла, остальные аналогично):

  • Перейти в каталог $PXF_BASE/servers
  • Открыть файл CMOCEAN_PG_STAGE/jdbc-site.xml
  • Заменить свойства jdbc.user и jdbc.password (удалить их из файла). Добавить новые свойства:
    • api.url.secret.path - URL, по которому расположены секреты данного источника
    • api.token - временный токен пользователя gpxflt
    • skip.ssl.verify - настройка проверки SSL-сертификата

Пример обновленного конфигурационного файла приведен на рисунке 16.

Рис. 16 jdbc-site.xml c внесенными изменениями

Настройка Hashicorp Vault

Cоздание хранилища и перенос секретов

Необходимо подготовить Vault и переместить в него все секреты.
Для доступа в Vault необходим root токен или созданная учетная запись со всеми необходимыми правами.

Порядок создания хранилища:

  • Войти в Vault с использованием root токена
  • Cоздать хранилище типа KV (Key-value Storage) для размещения секретов
  • Выбрать Secrets Engines, далее Enable new engine, далее KV (Generic)
  • Заполнить параметры:
    • Path - имя хранилища (используется как путь для доступа к нему)
    • Выбрать версию KV хранилища (используем версию 2)
    • Description - заполнить описание
    • Задать параметры Default Lease TTL и MAX Lease TTL

Пример сконфигурированного хранилища gpxf приведен на рисунке 4.

Рис. 4 gpxf - KV Storage

После создания KV хранилища оно появится во вкладке Secrets Engine.
Необходимо поместить в него все секреты из конфигурационных файлов серверов PXF (секреты расположены в файлах $PXF_BASE/servers/<source_name>/jdbc-site.xml).

Рис. 5 Вкладка Secrets Engine

Порядок переноса секретов:

  • Перейти в хранилище gpxf
  • Выбрать Create Secret
  • Заполнить параметры:
    • Ключ - указать пользователя jdbc.user из файла jdbc-site.xml
    • В качестве значения указать пароль jdbc.password
    • Path - путь для доступа к секрету

KV хранилище gpxf используется для хранения секретов PXF различных контуров Greenplum (DEV и TEST). Для разграничения секретов различных контуров перед именем источника используется префикс gplt для указания контура. Данную структуру можно воспринимать как каталоги для хранения секретов.

Рис. 6 Создание секрета

На рисунке 7 приведено хранилище gpxf/gplt после переноса всех секретов из конфигурационных файлов PXF.

Рис. 7 gpxf/gplt - секреты контура LT

Для получения API Path секрета необходимо перейти в соответствующий каталог (рис. 8). На странице секрета отображается API Path, который потребуется для дальнейшей настройки доступа.

Рис. 8 Секреты для источника CMOCEAN_PG_STAGE - gplt/cmocean_pg_stage

Создание метода аутентификации, пользователя, политик и временного токена

Для авторизации во внешнем источнике PXF необходимо получить соответствующие секреты из Vault.

Для доступа к Vault необходимо создать учетную запись пользователя с привязанным временным токеном, который будет использоваться PXF для запросов секретов из Vault. Взаимодействие осуществляется по протоколу HTTP(S) через соответствующий Endpoint (API Path на рис. 8).

Общий алгоритм настройки доступа к Vault включает следующие этапы:

  • Настройка аутентификации
    Выбрать и создать метод аутентификации для сервисов, использующих Vault

  • Настройка аутентификации
    Выбрать и создать метод аутентификации для сервисов, использующих Vault

  • Создание технического пользователя
    Cоздать пользователя с выбранным методом аутентификации для использования сервисом

  • Настройка политик доступа
    Cоздать политики доступа к хранилищу секретов и связать их с пользователем. Политики применяются ко всем токенам, сгенерированным для данного пользователя

  • Генерация токена
    Cгенерировать токен для обращений к Vault и получения секретов

Порядок создания метода аутентификации:

  • Перейти во вкладку Access и выбрать Enable new method +
  • Выбрать необходимый метод аутентификации. В данном случае используется Username & Password
  • Заполнить параметры:
    • Path - выбрать путь (наименование метода)
    • Description - описание метода
    • Default Lease TTL и Max Lease TTL - определяют время жизни токена всех пользователей, которые будут привязаны к данном методу аутентификации
    • Token type - default-service

Пример сконфигурированного метода аутентификации Username & Password приведен на рисунке 9.

Рис. 9 Сконфигурированный метод Username & Password - userpass

Новый метод появится во вкладке Access.

После создания метода аутентификации необходимо создать политики, которые будут закреплены за пользователем.

Требуется создать политику на чтение секретов из KV хранилища gpxf/gplt (в данном случае используется политика, разрешающая только чтение), а также политику, позволяющую пользователю создавать токены для последующих обращений к Vault.

Порядок создания политик:

  • Перейти во вкладку Policies, выбрать Create ACL policy
  • Заполнить параметры

Примеры сконфигурированных политик на создание токенов create_token и чтение секретов gpxf_lt_kv_read приведены на рисунках 10 и 11 соответственно.

Рис. 10 Политика на создание токенов

Рис. 11 Политика на чтение секретов

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

Порядок создания пользователя:

  • Во вкладке Access выбрать созданный метод userpass
  • Нажать Create user +
  • Заполнить параметры:
    • Username - имя пользователя
    • Password - пароль
    • Generated Token's Bound CIDRs - ограничивает использование сгенерированного токена Vault определенными IP-адресами или подсетями
    • Generated Token's Explicit Maximum TTL и Generated Token's Maximum TTL - определяют время жизни токена пользователя. Максимальные значения ограничены параметрами Default Lease TTL и Max Lease TTL метода аутентификации
    • Do Not Attach 'default' Policy To Generated Tokens - выбрать данный пункт
    • Generated Token's Policies - список политик, назначаемых токенам данного пользователя
    • Generated Token's Type - default

Пример сконфигурированного пользователя gpxflt, с закрепленными политиками и использующего метод аутентификации userpass приведен на рисунке 12.

Рис. 12 Сконфигурированный пользователь gpxflt

После создания пользователя необходимо получить токен.

Порядок получения токена:

В новой вкладке браузера необходимо зайти в Vault под новосозданным пользователем gpxflt, предварительно выбрав метод аутентификации Username (Username & Password) В левом верхнем углу выбрать иконку пользователя. В выпадающем списке выбрать Copy token. Сохранить данный токен Получение токена для пользователя gpxflt приведено на рисунке Х

  • В новой вкладке браузера войти в Vault под созданным пользователем gpxflt, предварительно выбрав метод аутентификации Username (Username & Password)
  • В левом верхнем углу выбрать иконку пользователя. В выпадающем списке выбрать Copy token
  • Сохранить полученный токен

Получение токена для пользователя gpxflt приведено на рисунке 13.

Рис. 13 Получение временнего токена

Сертификаты и проверка работы Vault

Для доступа к Vault с хостов кластера может потребоваться сертификат. В данном случае необходимо добавить корневой сертификат в список доверенных.

Работа с сертификатами может отличаться в зависимости от операционной системы.

Порядок действий (на всех хостах кластера):

  • Загрузить корневой сертификат на хост
  • Выполнить команды
Добавление сертификата

sudo cp ca.crt /usr/share/pki/ca-trust-source/anchors
sudo update-ca-trusted
  • Проверить доступ до Vault с использованием временного токена, полученного для пользователя gpxflt:
GET запрос для проверки работы Vault

curl -X GET "https://gptestvault1:8200/v1/gpxf/data/gplt/cmocean_pg_stage" \
-H "X-Vault-Token: hvs.**********************"

Важно: Не используйте root токен для работы расширения или проверок работы Vault. Данный токен не ограничен в правах. Сохраните его и не передавайте.

Применение внесенных изменений

После всех внесенных изменений необходимо синхронизировать конфигурационные файлы и библиотеки мастера и сегментов.

Порядок действий:

  • pxf cluster sync
  • pxf cluster restart