Конфигурация
Настройка PXF
Для получения секретов аутентификации и доступа к источникам данных PXF использует расширение pxf-ext.
Расширение обеспечивает получение секретов через обращение к Vault вместо прямого чтения из конфигурационных файлов.
Общая схема обновленного контура Greenplum LT представлена на рисунке 1.
Рис. 1 Схема взаимодействия Greenplum, PXF и Hashicorp Vault
Детальная схема работы фреймворка PXF включает следующие этапы:
- Получение пользовательского запроса
- Аутентификация в источнике
В данном случае PXF не использует секреты, хранящиеся в открытом виде. Для получения необходимых секретов он обращается в Vault по протоколу HTTP(S) с соответствующим токеном и получает секреты, с которыми в дальнейшем аутентифицируется во внешнем источнике данных. - Выполнение запроса
После получения секретов и аутентификации в источнике происходит выполнение запроса.
Установка расширения 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- временный токен пользователя gpxfltskip.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:
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















