Обзор Postgres Pro Enterprise Manager

Postgres Pro Enterprise Manager (PPEM) — комплексное решение для администрирования инфраструктуры баз данных. PPEM предоставляет удобный интерфейс для управления и мониторинга СУБД PostgreSQL, включая редакции Postgres Pro Standard и Postgres Pro Enterprise.

Инструменты PPEM позволяют выполнять самые разные регламентные операции по обслуживанию СУБД, обеспечивать комфортное управление экосистемой СУБД PostgreSQL во всех сферах эксплуатации, таких как резервное копирование и восстановление, отслеживание производительности и мониторинг, поиск и устранение неисправностей, и многое другое.

Чтобы начать работу с PPEM, воспользуйтесь инструкцией Быстрый старт.

Подробнее о компонентах и функциональности PPEM читайте в разделах Архитектура и Возможности.

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

Больше информации о работе с PPEM вы найдете в следующий разделах:

Возможности

PPEM позволяет выполнять полный цикл задач развёртывания, эксплуатации и обслуживания баз данных PostgreSQL:

Архитектура

В этом разделе:

Описание компонентов

Архитектура PostgresPro Enterprise Manager включает следующие компоненты:

Веб-приложение

Веб-приложение — набор компонентов, которые обеспечивают пользовательский графический интерфейс, доступный через веб-браузер. Веб-приложение устанавливается на сервере с менеджером PPEM. Пользователь, используя браузер, выполняет различные действия, а веб-приложение преобразует эти действия в запросы и отправляет их менеджеру. Менеджер обрабатывает запросы и возвращает их веб-приложению. Веб-приложение преобразует ответ в различные представления и отображает в браузере.

Менеджер

Менеджер — служба, которая работает в фоновом режиме. Менеджер принимает запросы на обслуживание инфраструктуры СУБД и имеет собственный планировщик для выполнения регулярных служебных заданий. Менеджер принимает запросы от веб-приложения, согласно заложенной логике преобразует запросы в операции.

Для выполнения операций могут потребоваться:

Выполнив операцию, менеджер сообщает результат операции веб-приложению.

ПРИМЕЧАНИЕ

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

Репозиторий

Репозиторий — база данных в отдельном экземпляре СУБД с набором схем и таблиц, в которых менеджер хранит служебную информацию, необходимую для работы. Менеджер при запуске устанавливает соединение с репозиторием и в процессе выполнения операций читает и записывает данные в репозиторий. Доступность репозитория носит критический характер — в случае недоступности репозитория дальнейшее продолжение работы менеджера невозможно.

Агенты

Агенты — это службы, которые должны выполняться на управляемых серверах СУБД. Агенты принимают управляющие инструкции от менеджера и, в зависимости от типа инструкции, выполняют различные действия как в операционной системе, так и в экземпляре СУБД. В эти действия могут входить запуск команд, создание директорий и файлов, выполнение запросов и т.п. В процессе выполнения или по завершению действий результат выполнения отправляется менеджеру для регистрации результата в репозитории и/или последующей обработки согласно логике операции.

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

На одном отдельном сервере достаточно одного агента, который способен обслуживать один и более экземпляров СУБД на этом же сервере.

Экземпляр СУБД

Экземпляр СУБД — это объект управления PPEM, то есть СУБД PostgreSQL в различных редакциях (Vanilla, Postgres Pro Standard/Enterprise). Несколько экземпляров СУБД могут объединяться в кластеры. Обычно это кластера потоковой репликации.

С отдельным экземпляром СУБД должен взаимодействовать только один агент PPEM. Не допускайте сценариев, когда несколько агентов работают с одним и тем же экземпляром СУБД, это может привести к путанице и неоднозначности поведения. С точки зрения экземпляра СУБД агент является обычным прикладным ПО, которое подключается к экземпляру через SQL-интерфейс, используя заранее определенную учетную запись СУБД.

Внешние сервисы

Для расширения функций и возможностей PPEM может использовать различные внешние сервисы. Все эти сервисы являются необязательными и взаимодействие с ними настраивается отдельно.

ПРИМЕЧАНИЕ

PPEM не содержит инструменты для административного управления внешними сервисами (например, управление ресурсами и настройкам).

Поддерживаются следующие внешние сервисы:

Верхнеуровневая архитектура

Пример верхнеуровневой архитектуры и взаимодействия компонентов представлен на схеме ниже:

Архитектура PPEM

Где:

Архитектура менеджера и агента

Пример архитектуры и взаимодействия менеджера и агента представлен на схеме ниже:

Архитектура менеджера и агента

Где:

Архитектура мониторинга

Для обеспечения функций мониторинга в контексте работы с Метриками и Журналами (далее — Телеметрия) PPEM использует коллектор pgpro-otel-collector от Postgres Pro.

Для работы с телеметрией используется внутреннее хранилище в базе данных репозитория — метрики хранятся в отдельной схеме monitoring, журналы — в схеме logs.

Обязательным компонентом является коллектор pgpro-otel-collector. Коллектор обеспечивает сбор статистики и журналов, генерацию данных телеметрии и, в зависимости от выбранного режима, экспорт данных менеджеру или во внешнюю систему хранения.

Пример архитектуры мониторинга при использовании внутреннего хранилища представлен на схеме ниже:

Архитектура мониторинга. Внутреннее хранилище

Где:

Архитектура резервного копирования

Пример архитектуры резервного копирования представлен на схеме ниже:

Архитектура резервного копирования

Где:

Аппаратные и программные требования

В этом разделе приведены аппаратные и программные требования для обеспечения работы PPEM, а также информация по расчёту ресурсов при масштабировании СУБД.

Минимальные аппаратные и программные требования

Ниже приведены минимально необходимые аппаратные и программные требования для серверов, где будут резвёрнуты менеджер и агент PPEM.

В качестве сервера может выступать:

ВАЖНО!

Использование PPEM при соблюдении минимальных требований не обеспечивает отказоустойчивость и рекомендуется только в пилотных или экспериментальных проектах, в средах с невысокой нагрузкой, без требований высокой доступности и отказоустойчивости.

Для менеджера:

Один сервер следующей минимальной конфигурации:

Для агента:

Один сервер следующей минимальной конфигурации:

Расчёт ресурсов

Для менеджера:

Требуемые ресурсы для менеджера на 10 экземпляров СУБД с 10 тыс. объектов в отдельном экземпляре:

Минимальная конфигурация сервера, где будет размещен менеджер (до 10 экземпляров с 10 тыс. объектов в отдельном экземпляре):

Расчетная таблица:

Количество экземпляров CPU, шт. RAM, ГБ SSD, ГБ
10 2 4 40
30 4 12 80
70 8 28 160
150 16 60 320
230 24 92 480
310 32 124 640

Для агента:

Требуемые ресурсы для агента на 1 экземпляр СУБД (до 100 тыс. объектов в экземпляре):

Минимальная конфигурация сервера с экземпляром СУБД, где будет размещен агент PPEM (до 100 тыс. объектов в экземпляре):

Расчетная таблица:

Количество объектов СУБД CPU, шт. RAM, ГБ SSD, ГБ
100 тыс. 2 2 10
200 тыс. 3 4 20
400 тыс. 4 8 20

Поддержка платформ и ОС

Менеджер и агент PPEM поддерживают установку на операционные системы семейства Linux на платформе x86_64.

PPEM поддерживает установку и работу на следующих дистрибутивах Linux:

ПРИМЕЧАНИЕ

Работа PPEM c дистрибутивами, отличными от вышеперечисленных, не тестировалась и нормальная работа PPEM на них не гарантируется.

Работа PPEM на платформах, отличных от x86_64, не тестировалась и нормальная работа PPEM на них не гарантируется.

Совместимость

Совместимость с PostgreSQL

Менеджер PPEM поддерживает следующие версии PostgreSQL, включая редакции PostgresPro Standard и PostgresPro Enterprise:

Агент PPEM поддерживает следующие версии PostgreSQL, включая редакции PostgresPro Standard и PostgresPro Enterprise:

Совместимость с pg_probackup

Агент PPEM поддерживает следующие версии pg_probackup, включая редакции Standard и Enterprise:

Совместимость с pgpro-otel-collector

Агент PPEM поддерживает следующие версии pgpro-otel-collector:

Совместимость с браузерами

Для оптимального пользовательского опыта при работе в веб-приложении PPEM рекомендуется:

Безопасность

Менеджер и агент

Менеджер является обычным прикладным ПО и не требует привилегированного доступа к функциям операционной системы. Служба менеджера может полноценно функционировать при запуске от имени непривилегированного системного пользователя.

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

Агент является обычным прикладным ПО, для полноценной работы которого требуется:

Для выполнения большинства функций агенту достаточно уровня доступа непривилегированного пользователя операционной системы. Есть небольшое количество функций, которым необходим привилегированный доступ. Для сохранения этой функциональности требуется дополнительная настройка системы и выдача необходимых прав. При отсутствии необходимых настроек и прав агент не сможет выполнить действия, что негативно скажется на функциональности PPEM. Рекомендуется выполнить все необходимые настройки перед запуском агента.

Доступ к управляемому экземпляру СУБД можно разделить на две части:

Сетевое взаимодействие

Сетевое взаимодействие между менеджером и агентом может инициироваться обеими сторонами:

Менеджер и агент для общения используют протокол HTTP(S). Менеджер по умолчанию использует порт tcp/8080, агент использует по умолчанию порт tcp/8081. Такое направление трафика следует учитывать при настройке правил сетевого доступа. Настройки адресов и портов задаются в основных файлах конфигурации менеджера и агента.

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

Аутентификация между пользователями и менеджером

Работа пользователя с менеджером подразумевает аутентификацию и авторизацию. Аутентификация может выполняться следующими способами:

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

Аутентификация между менеджером и агентами

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

Ролевая модель доступа (RBAC)

Основные положения

Управление доступом в PPEM реализуется RBAC-моделью (Role Based Access Control), которая определяет правила разграничения доступа с помощью ролей и привилегий. Модель устанавливает следующие базовые соглашения:

Базовые соглашения определяют расширенные соглашения:

ВАЖНО!

Привилегии не назначаются субъектам напрямую, а приобретаются субъектами только через роли.

RBAC в PPEM

Базовые утверждения:

Субъекты

Субъектами могут выступать:

Объекты

Объектами могут выступать как ресурсы, так и представления ресурсов в репозитории, например: сервера, агенты, экземпляры СУБД, пользователи PPEM, группы PPEM и т.п.

Установка привилегий и ролей

При первом запуске PPEM выполняется инициализация репозитория, при которой заполняются служебные таблицы (привилегии и роли). При инициализации для каждого плагина устанавливается свой набор привилегий, ролей и отношений "роль-привилегия". Так, например, для плагина accounts создаются свои привилегии и роли для управления доступом к объектам этого плагина. Так и для других плагинов создаются свои наборы привилегий и ролей для управления доступом к объектам этих плагинов.

При наличии необходимых привилегий пользователи могут создавать пользовательские роли, указывать набор привилегий и связывать роль с объектами. Пользовательская роль также может быть назначена на субъект.

Реализация

Права доступа реализованы следующим набором таблиц (принадлежат плагину accounts):

Таблица privileges

Таблица имеет следующие поля:

Таблица заполняется менеджером PPEM с помощью миграций. Каждый плагин определяет собственный набор привилегий. Для проверки привилегий используется HTTP middleware-обработчик. Создание, изменение и удаление привилегий пользователем не предусмотрено, так как проверка привилегий реализуется в коде менеджера PPEM.

Таблица roles

Таблица имеет следующие поля:

Роли создаются менеджером с помощью миграций. Базовый набор ролей устанавливается для плагина accounts. Пользователь через API менеджера может создавать, изменять и удалять пользовательские роли, но не может изменять или удалять роли установленные менеджером PPEM (системные роли).

Таблица role_privileges

Таблица устанавливает отношения между ролями и привилегиями и имеет следующие поля:

Комбинация (role,privilege,object) является уникальным ключом с условием object IS NOT NULL.

ПРИМЕЧАНИЕ

"Параметризованное" объектно-привязанное отношение "роль-привилегия" определяет доступ только к одному объекту (через указание object). При необходимости выдать доступ на N объектов будет создано N записей в role_privileges.

Таблица users

Таблица не имеет полей, имеющих отношение к RBAC.

При создании пользователя через API менеджера можно указать список идентификаторов ролей, которые будут назначены пользователю.

Таблица user_roles

Таблица устанавливает отношения между пользователем и ролями и имеет следующие поля:

ПРИМЕЧАНИЕ

"Параметризованное" объектно-привязанное отношение "пользователь-роль" определяет доступ только к одному объекту (через указание object). При необходимости выдать доступ на N объектов будет создано N записей в user_roles.

Представление user_privileges

Предлагает удобный способ определения, какие роли и привилегии есть у пользователей. Представление используется для упрощения проверки привилегий у субъекта-пользователя:

Таблица groups

Таблица не имеет полей, имеющих отношение к RBAC.

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

Таблица group_roles

Таблица устанавливает отношения между группами и ролями и имеет следующие поля:

ПРИМЕЧАНИЕ

"Параметризованное" объектно-привязанное отношение "группа-роль" определяет доступ только к одному объекту (через указание object). При необходимости выдать доступ на N объектов будет создано N записей в group_roles.

Таблица group_users

Таблица устанавливает отношения между группами и пользователями и имеет следующие поля:

Отношения "группа-пользователь" не имеют объектных привязок.

Объектно-связанные роли

В общем случае предполагается, что роли могут включать в себя привилегии, которые разрешают доступ ко всем объектам любого класса.

Для еще большей гранулярности выдачи прав доступа вместе с классом можно указать и идентификатор объекта в role_privileges.object. Так, действие роли и привилегии будет распространяться только на объект с указанным идентификатором. Объект можно указать в нескольких местах:

Проверка прав доступа у субъекта

В процессе аутентификации субъекта выполняется создание сеанса и создание сессионных JWT-токенов. При создании access-токена в него вкладывается user_id. Пользователь, выполняя запросы на выполнение операций, прикладывает access-токен в заголовки запроса. Менеджер выполняет авторизацию, извлекает из access-токена user_id пользователя и через роли проверяет наличие необходимой привилегии. Если привилегия доступна, то доступ разрешается, если привилегии нет, запрос отклоняется.

Более подробно:

Для проверки, что субъект имеет право доступа на выполнение операции над объектом нужны:

Клиент в запросе указывает заголовок Authorization: Bearer и прикладывает access-токен.

Сервер получает запрос и извлекает данные, необходимые для проверки доступа:

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

Проверка выполняется через репозиторий и представление user_privileges.

Особенности и ограничения

Использование средств, усиливающих безопасность и добавляющих дополнительные уровни ограничений, могут нарушить работу некоторых функций PPEM, нормальная работа PPEM при использовании таких средств не гарантируется и не рекомендуется. К таким средствам относятся: