13. Интеграция с базами данных
13.1. Ротация паролей СУБД
13.1.1. Общие положения
Для управления консистентной ротацией паролей СУБД и связанных с СУБД настроек инсталляций приложений в рамках услуги (Витрины данных НСУД) в Datamart Platform Studio реализован механизм ротации паролей в меню услуги.
Пункт меню услуги «Управление паролями» подключается автоматически при добавлении в услугу инсталляции или кластера СУБД следующих типов:
Инсталляция СУБД Pangolin standalone
Кластер Pangolin Cluster DB
Для выполнения ротации в бандле приложения должны присутствовать следующие плэйбуки:
passwordpolicy.yaml
rotate_password.yaml
Примечание
Если в бандле приложения нет плэйбуков ротации, Datamart Platform Studio во вкладке ротации отобразит сообщение о необходимости обновления версии бандла.
Имя пользователя СУБД, для которого выполняется ротация в соответствующих инсталляциях отображается в колонке «Пользователь». Имя инсталляции или кластера СУБД отображается родительской строкой в таблице, а связанные с ней инсталляции дочерними строками.
Привязка и отображение связанных инсталляций во вкладке ротации паролей производится автоматически на основании существующих связей интерфейсов при включении опции ротации. Действие Обновить список проверяет связи и если произошли какие-то изменения с момента последней привязки, перестраивает список.
Рисунок 13.1 Вкладка ротации паролей в услуге
Автоматическое связывание настроек полей имен пользователей и паролей, по которым будет производиться ротация, выполняется на основании данных из справочника Настройка полей подключений:
Рисунок 13.2 Настройка полей подключений
Колонка Относится к «Мастер» приложению указывает, где будет производится ротация пароля для данной настройки, в настройках самой СУБД (Pangolin, в текущем примере) или у приложений, которые связаны с СУБД.
Справочник заполнен данными по умолчанию и может быть при необходимости расширен, в случае, если в Datamart Platform Studio будут добавлены приложения, которые хранят данные о подключении к СУБД в других настройках.
Примечание
Ротация паролей производится единовременно для группы пользователей, список которых указан в настройках приложения СУБД
Ротация может выполняться как вручную, так и по расписанию
При необходимости может выполняться ротация пароля для 1-го пользователя СУБД, это действие никак не влияет на общее расписание ротации
13.1.2. Ротация с остановкой связанных приложений
При ротации пароля пользователя СУБД по умолчанию выполняется автоматическая ротация настройки пароля для связанных приложений в следующей последовательности:
остановка (выполнение плэйбука stop) связанных с СУБД инсталляций для исключения ситуации блокировки пользователей, для которых выполняется ротация;
ротация паролей выбранных пользователей СУБД;
изменение настроек паролей у связанных приложений;
применение настроек (выполнение плэйбука bind) для связанных инсталляций и кластеров (в процессе успешного bind выполняется start);
13.1.3. Ротация без остановки связанных приложений
Для СУБД Pangolin для витрины данных 6.4.2 в версии бандла 1.0.37 и выше добавлены настройки, которые управляют периодом охлаждения пароля, что позволяет ротировать пароль СУБД без остановки связанных приложений. В течение периода охлаждения действуют оба пароля.
Настройка |
Значение по умолчанию |
Примечание |
|---|---|---|
GRACE_AUTHID_ENABLE |
on |
Требуется для включения опции ротации с периодом охлаждения |
GRACE_AUTHID_PERIOD |
1d |
Время действия периода охлаждения. Для выполнения ротации без остановки должно быть больше 0. Рекомендуется установит достаточное время, за которое точно выполнится ротация. |
PP_GRACE_LOGIN_LIMIT |
1000 |
Количество разрешенных подключений со старым паролем. Максимальное разрешенное значение в Pangolin = 1000. Рекомендуется не снижать, т.к. неизвестно, сколько раз за время ротации связанные приложения выполнят подключение к СУБД со старым паролем. |
При ротации пароля пользователя СУБД с включенным периодом охлаждения выполняется автоматическая ротация настройки пароля для связанных приложений в следующей последовательности:
ротация паролей выбранных пользователей СУБД;
изменение настроек паролей у связанных приложений;
применение настроек (выполнение плэйбука bind) для связанных с СУБД инсталляций и кластеров;
13.1.4. Предварительная настройка
Перед выполнением ротации требуется:
Включить опцию ротации для приложения (включается настройка Pangolin rotate_password.enable = true и выполняется плэйбук подключения опции ротации)
Настроить список пользователей, для которых будет выполняться ротация (редактирование настройки rotate_password.valid_roles и выполняется плэйбук применения настроек). Список пользователей требуется указать через запятую.
Рисунок 13.3 Доступные функции ротации
Рисунок 13.4 Включить / отключить ротацию
Рисунок 13.5 Редактировать список пользователей для ротации
13.1.5. Выполнение ротации
Для консистентного выполнения ротации паролей СУБД Pangolin требуется выполнить следующие шаги:
Остановить связанные инсталляции (выполнить плэйбук stop).
Выполнить ротацию паролей СУБД для всех указанных в настройке пользователей (в процессе ротации будут также обновлены настройки паролей у связанных инсталляций).
Выполнить применение настроек (плэйбук bind) у связанных инсталляций.
Примечание
Остановка всех связанных инсталляций выполняется автоматически перед выполнением плэйбука ротации пароля СУБД. При выборе опции Выполнить ротацию и применить настройки плэйбуки bind выполняются автоматически после ротации паролей СУБД.
Рисунок 13.6 Выполнение ротации паролей
Рисунок 13.7 Диалоговое окно ротации паролей
В случае, если проведена ротация паролей без автоматического применения настроек связанных инсталляций, следует выполнить применение настроек отдельно.
Рисунок 13.8 Применение настроек для связанной инсталляции
13.1.5.1. Отображение пароля
После выполнения ротации содержание настройки пароля будет обновлено. Для просмотра пароля необходимо выполнить действие «Отобразить пароль». Разрешение на отображение содержимого настройки с паролем предоставляется только для ролей с правами просмотра паролей.
Рисунок 13.9 Отображение пароля после ротации
В случае несоответствия настройки пароля у СУБД и связанной инсталляции, настройка пароля подсвечивается, как ошибочная.
13.1.5.2. Ротация пароля для отдельного пользователя
В случае возникновения ошибки в процессе ротации для отдельного пользователя можно выполнить ротацию пароля только для этого пользователя выбрав в соответствующей строке действие Ротировать (см. Рисунок 13.9). Пароли связанных инсталляций будут обновлены, соответственно.
Ротация пароля для отдельного пользователя не влияет на расписание ротации.
13.1.6. Настройка планирования ротации
Для настройки планирования ротации реализовано несколько механизмов:
Расписание - циклическое выполнение задач по заданному временному шаблону. Наиболее подходит для регулярных задач, выполняемых ежедневно, еженедельно, ежемесячно и т.д.
Отложенный запуск - однократное выполнение задачи в указанную дату и время
Для активации планирования в меню «Управление» нужно выбрать соответствующее приложение и выбрать действие Настройка расписания ротации.
Рисунок 13.10 Настройка расписания ротации
13.1.6.1. Расписание
Рисунок 13.11 Окно заполнения расписания
Расписание реализовано с использованием Cron, что обеспечивает высокую гибкость в настройке времени выполнения задач. Включает пять ключевых параметров, определяющих расписание:
Поле |
Допустимые значения |
Спец символы |
|---|---|---|
Минуты |
0-59 |
, - * / |
Часы |
0-23 |
, - * / |
День месяца |
1-31 |
, - * / |
Месяц |
1-12 |
, - * / |
День недели |
0-6 (0 Воскресенье) |
, - * / |
Для более точной настройки расписания можно использовать специальные символы:
Символ |
Описание |
|---|---|
|
Перечисление. Команда будет выполняться в заданные значения |
|
Диапазон. Команда будет выполняться в заданном интервале значений |
|
Любое значение |
|
Шаг. Команда будет выполняться с заданным интервалом. Шаг обязательно должен начинаться с */<значение> |
Примеры расписания:
Каждые 10 мин.
*/10 | * | * | * | *
В 00, 15, 30 минут каждого часа
0, 15, 30 | * | * | * | *
Каждый день в 18:30
30 | 18 | * | * | *
По рабочим дням в 21:00
0 | 21 | * | * | 1-5
В полночь 1-ого числа каждого месяца
0 | 0 | 1 | * | *
1 раз в год в полночь 1-ого июня
0 | 0 | 1 | 6 | *
Примечание
Для составления своего расписания можно обратиться к онлайн-генератору расписания по Cron.
13.1.6.2. Отложенный запуск
Рисунок 13.12 Окно отложенного запуска
Отложенный запуск позволяет запланировать однократное выполнение задачи в указанную дату и время. Особенно полезно для задач, которые не требуют регулярного выполнения, но должны быть запущены в определенный момент времени. Включает два параметра:
Дата - можно указать дату вручную или выбрать дату, нажав на значок календаря
Время - нужно указать время вручную с точностью до минуты
13.2. Команды БД
13.2.1. Описание концепции
Для реорганизации таблиц и индексов СУБД в рамках услуги (Витрины данных НСУД) реализован механизм выполнения определенных команд, при помощи расширения PGRepack, а также их запуск по расписанию.
Примечание
PGRepack — это расширение PostgreSQL и Pangolin, предназначенное для реорганизации таблиц и индексов без блокировки операций чтения и записи. Оно устраняет «раздувание» таблиц и индексов, возникающее из‑за частых обновлений и удалений данных. Инструмент позволяет восстанавливать физический порядок кластеризованных индексов и освобождать неиспользуемое дисковое пространство.
Примечание
На текущий момент можно выполнить только команды PGRepack. В дальнейшем список команд к СУБД будет расширяться.
Расширение PGRepack добавляется автоматически вместе с добавлением в услугу инсталляций или кластеров СУБД следующих типов:
Инсталляция СУБД Pangolin standalone
Инсталляция СУБД PostgreSQL standalone
Кластер Pangolin Cluster DB
Кластер PostgreSQL DB
После добавления в услугу в карточке инсталляции/кластера в меню отобразится пункт «Команды БД», с помощью которого осуществляется управление командами и их планирование.
Рисунок 13.13 Команды БД
13.2.2. Управление командами
Для добавления новой команды нужно перейти в раздел «Команды БД» и нажать на кнопку Добавить команду. В открывшемся модальном окне заполнить обязательные поля: «Наименование» и «Команда».
В поле «Команда» не нужно указывать параметры подключения, а сразу указывать параметры реорганизации. Например:
pgrepack --table=public.users
pgrepack --schema=public
pgrepack --only-indexes --table=public.users
Рисунок 13.14 Добавление команды
Примечание
Полный список команд и их значение можно посмотреть в документации к PostgresPro.
Также для удобства реализована функция планирования задач, позволяющая автоматизировать процесс запуска команды.
Для активации планирования задач требуется нажать на чекбокс Добавить расписание запуска команды. Станут доступны функции:
Расписание - циклическое выполнение задач по заданному временному шаблону. Наиболее подходит для регулярных задач, выполняемых ежедневно, еженедельно, ежемесячно и т.д.
Отложенный запуск - однократное выполнение задачи в указанную дату и время
Более подробно про настройку расписания смотреть в разделе: Раздел 13.1.6 Настройка планирования ротации.
Можно выполнить запуск команды вне расписания, или если расписание не предусмотрено, нажав на «Управление» и выбрав действие Выполнить.
Для редактирования или удаления команды нужно выбрать соответствующее действие.
Рисунок 13.15 Управление командами
13.3. Регистрация подключений к внешним базам данных
В разделе «Базы данных» есть возможность зарегистрировать подключения к СУБД.
Рисунок 13.16 Регистрация подключения к БД
Для зарегистрированных БД можно добавить связь с услугой, добавив публичный интерфейс в карточке услуги, и закрепить за ним БД.
Рисунок 13.17 Регистрация интерфейсов БД
13.4. Интеграция с ZooKeeper
Примечание
Инструменты редактирования содержимого в кластере ZooKeeper доступны пользователям с ролями superadmin.
Для просмотра и редактирования содержимого нод в кластере ZooKeeper в Datamart Platform Studio добавлена интеграция с кластером. В карточке инсталляции или кластера ZooKeeper во вкладке ZooKeeper доступны следующие действия для нод кластера:
просмотр структуры и содержимого нод ZooKeeper;
редактирование содержимого ноды;
cut, copy, paste, delete - действия с нодами;
выделение групп и групповые операции с нодами ZooKeeper;
операции экспорта в файл и импорта из файла в формате ZooKeeper.
При наведении курсора на ноду Zookeeper, отображается меню действий с нодой (см. Рисунок 13.18), а при клике на ноду, возможность редактирования содержимого.
Доступные для отдельной ноды действия:
cut, copy, paste, delete;
импорт из файла в формате ZooKeeper.
Рисунок 13.18 Интеграция с Zookeeper
При выделении нескольких нод ZooKeeper, в правом верхнем углу появляется меню групповых действий с нодами (см. Рисунок 13.19).
Для выделенных нод доступны действия:
cut, copy, delete;
операции экспорта в файл в формате ZooKeeper;
Рисунок 13.19 Интеграция с Zookeeper
Примечание
Инструменты редактирования содержимого в кластере Zookeeper доступны пользователям с ролью superadmin.