Сценарии администрирования#
В зависимости от поставки возможны три основных сценария администрирования компонента Базовый модуль (GRDL) продукта Platform V GraDeLy (GDL) (далее по тексту – GraDeLy):
администрирование через пользовательский интерфейс консоли управления;
администрирование из внешней системы посредством вызова API управления.
Администрирование через пользовательский интерфейс консоли управления#
Для более крупных инсталляций оправдано использование поставки GraDeLy в клиент-серверной архитектуре. Такая поставка требует развертывания основных компонентов:
Модулей репликации (workers) – приложений, непосредственно выполняющих репликацию данных.
Консоли управления – приложения, состоящего в свою очередь из:
основного модуля backend (реализующего API взаимодействия с модулями репликации);
графического интерфейса пользователя;
базы данных (БД) для централизованного хранения конфигураций.
Консоль управления имеет ролевую модель, позволяющую гибко настроить наборы полномочий пользователей. Основой модели являются полномочия доступа к API управления, которые группируются в роли, назначаемые фактическим пользователям системы.
При настройке ролей администратору рекомендуется руководствоваться принципом наименьших привилегий, чтобы избежать несанкционированного доступа к ресурсам.
Для настройки подключения к БД хранения конфигураций необходимо указать соответствующие опции в файле application.yml.
Для работы с БД через PgBouncer в URL для подключения должен быть указан не порт БД, а порт PgBouncer.
Новый граф репликации#
Все сущности приложения имеют представление в графическом интерфейсе в виде графа репликации. Создание нового графа репликации начинается на вкладке Проекты. Для этого авторизуйтесь в приложении, перейдите на вкладку Проекты и нажмите кнопку «плюс», чтобы создать новый граф.
В обязательном порядке требуется указать имя графа репликации, по которому впоследствии он будет идентифицироваться.
Заполнение элементов графа#
Перейдите к созданию и редактированию элементов созданного графа. Для этого нажмите кнопку «карандаш» для перехода в визуальный редактор. В визуальном редакторе заполнение осуществляется путем перетаскивания базовых компонентов из стандартной библиотеки. Изначально доступны 2 вида компонентов: модуль репликации и соединение.
Расположите модули и соединения на полотне графа, соедините их, подключив соответствующие соединения к модулям. Для этого выберите соответствующий инструмент в редакторе.
Когда все элементы графа зафиксированы, последовательно выберите каждый их них и установите требуемые параметры.
Настройка параметров соединений с БД, Kafka или файловым хранилищем выполняется на отдельной вкладке. Для этого перейдите на вкладку Соединения, в отобразившемся списке выберите изменяемое соединение и нажмите кнопку создания нового соединения — «плюс».
Для каждого из используемых соединений заполните набор обязательных параметров:
type: Из списка [ DB, FILE, QUEUE ]
driver: Используемый драйвер
name: Человекочитаемое имя
description: Описание
url: Строка соединения
credentials: Информация для идентификации пользователя
properties:
login:
password:
options: Секция для специфических для конкретного типа соединения параметров
Администрирование посредством публичного API#
Максимальная поставка содержит Сервер API как компонент консоли управления. В такой конфигурации GraDeLy предоставляет публичный REST API для управления работой модулей репликации.
Все действия по конфигурированию репликации могут быть выполнены без использования графического интерфейса посредством вызова этого API. Администратор организации может использовать любой инструмент, который поддерживает HTTP/HTTPS вызовы (например — curl, postman). При подготовке скриптов следует руководствоваться описанием API, поставляемым с используемой версией продукта.
Привилегии#
Привилегии пользователей API делятся на системные (позволяющие выполнять класс действий, т. е. вызывать определенные методы API) и объектные (т. е. позволяющие выполнять действия над конкретными объектами). Привилегии пользователей определяют доступность определенных методов API.
В первом релизе GraDeLy объектные привилегии не реализуются. Если, например, пользователю позволено читать структуру модуля, значит, он может прочитать структуру любого модуля. В последующих релизах объектные привилегии будут введены.
Модуль управления не производит аутентификацию и авторизацию. Сервер API должен быть установлен за прокси-сервером, выполняющим аутентификацию и авторизацию (например, Platform V IAM Proxy (AUTH)). В последующих релизах такой прокси-сервер может быть включен в поставку GraDeLy с целью возможности защищенного развертывания вне среды контейнерной виртуализации. Подход может быть пересмотрен в более поздних релизах.
Привилегии могут быть объединены в роли – именованные наборы привилегий. Задача трансляции набора ролей в набор привилегий возлагается на внешний сервис авторизации.
Привилегии не назначаются пользователям непосредственно, а только через назначение ролей. В текущей версии наследование ролей не поддерживается.
При развертывании GraDeLy в сервис авторизации загружается набор предопределенных ролей - ролевая модель.
Привилегии определяют набор доступных пользователю API и возможностей редактирования данных в интерфейсе.
Привилегия *all — это объединение PUT, POST, DELETE привилегий (без GET привилегии).
В интерфейсе только сущностям Graph и Connection соответствуют отдельные вкладки.
Прямая связь по привилегиям есть только с одноименными API.
Привилегии |
Описание |
Config |
Graph |
Connection |
Module |
Process |
|---|---|---|---|---|---|---|
Config_Get |
Чтение конфигураций |
GET |
||||
Config_All |
Запись конфигураций |
*all |
||||
Graph_Get |
Получение данных о графе |
GET |
||||
Graph_All |
Создание и редактирование графов репликации |
*all |
||||
Connection_Get |
Чтение данных соединений |
GET |
||||
Connection_All |
Создание и редактирование параметров соединений |
*all |
||||
Module_Get |
Чтение параметров модуля |
GET |
||||
Module_All |
Создание и редактирование модулей |
*all |
||||
Process_Get |
Получение информации о состоянии процессов |
GET |
||||
Process_All |
Запуск и остановка потоков |
*all |
Ролевая модель#
При работе с приложением GraDeLy рекомендуется в компоненте Объединенный сервис авторизации (AUTZ) Platform V Backend (#BD) применять следующую ролевую модель:
Привилегии |
Описание |
Config |
Graph |
Connection |
Module |
Process |
|---|---|---|---|---|---|---|
Администратор |
Специалист сопровождения, выполняющий настройку (редактирование / создание) соединений (connection) к ресурсам конкретного контура. В GUI специалист имеет право на настройку (редактирование / создание) соединения (connection) на вкладке Соединения и в самом графе репликации. Специалист имеет права на запуск и остановку модулей графа репликации. Специалист не имеет возможности настройки (редактирование / создание) конфигурации и самого графа репликации. |
GET |
GET |
GET, *all |
GET, *all |
GET, *all |
В непосредственном интерфейсе GraDeLy настройки ролей не производятся.
Роли пользовательского интерфейса#
Роли конфигурирует и называет администратор инсталляции, который передает сконфигурированный файл с ролевой моделью в формате .xml в компонент AUTZ.
Пример файла с ролевой моделью для передачи в компонент AUTZ приведен ниже:
<?xml version="1.0" encoding="UTF-8"?>
<module moduleVersion="3.27.16" roleModelVersion="0.2" name="gradely-console"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://AccessSystem/namespace"
xsi:schemaLocation="http://AccessSystem/namespace">
<nodes>
<node type="entity" display-name="API конфигурирования источника">
<form display-name="gradely_console/Config_Get" id="gradely_console_Config_Get"/>
<form display-name="gradely_console/Config_All" id="gradely_console_Config_All"/>
<form display-name="gradely_console/Graph_Get" id="gradely_console_Graph_Get"/>
<form display-name="gradely_console/Graph_All" id="gradely_console_Graph_All"/>
<form display-name="gradely_console/Connection_Get" id="gradely_console_Connection_Get"/>
<form display-name="gradely_console/Connection_All" id="gradely_console_Connection_All"/>
<form display-name="gradely_console/Module_Get" id="gradely_console_Module_Get"/>
<form display-name="gradely_console/Module_All" id="gradely_console_Module_All"/>
<form display-name="gradely_console/Process_Get" id="gradely_console_Process_Get"/>
<form display-name="gradely_console/Process_All" id="gradely_console_Process_All"/>
</node>
</nodes>
<roles>
<role code="superuser" name="superuser" description="Полный набор привилегий.">
<permission-ref id="gradely_console_Config_Get"/>
<permission-ref id="gradely_console_Config_All"/>
<permission-ref id="gradely_console_Graph_Get"/>
<permission-ref id="gradely_console_Graph_All"/>
<permission-ref id="gradely_console_Connection_Get"/>
<permission-ref id="gradely_console_Connection_All"/>
<permission-ref id="gradely_console_Module_Get"/>
<permission-ref id="gradely_console_Module_All"/>
<permission-ref id="gradely_console_Process_Get"/>
<permission-ref id="gradely_console_Process_All"/>
</role>
<role code="configuration_developer" name="configuration_developer"
description="Квалифицированный специалист выполняющий настройку системы. Подготовку конфигураций модулей, отрисовку графов репликации.">
<permission-ref id="gradely_console_Config_Get"/>
<permission-ref id="gradely_console_Config_All"/>
<permission-ref id="gradely_console_Graph_Get"/>
<permission-ref id="gradely_console_Graph_All"/>
<permission-ref id="gradely_console_Connection_Get"/>
<permission-ref id="gradely_console_Connection_All"/>
<permission-ref id="gradely_console_Module_Get"/>
<permission-ref id="gradely_console_Module_All"/>
<permission-ref id="gradely_console_Process_Get"/>
</role>
<role code="Administrator" name="Administrator"
description="Специалист сопровождения выполняющий настройку соединений к ресурсам конкретного контура, но не имеющий возможности менять конфигурацию и схему репликации.">
<permission-ref id="gradely_console_Config_Get"/>
<permission-ref id="gradely_console_Graph_Get"/>
<permission-ref id="gradely_console_Connection_Get"/>
<permission-ref id="gradely_console_Connection_All"/>
<permission-ref id="gradely_console_Module_Get"/>
<permission-ref id="gradely_console_Module_All"/>
<permission-ref id="gradely_console_Process_Get"/>
<permission-ref id="gradely_console_Process_All"/>
</role>
<role code="user" name="user"
description="Может просматривать, но не изменять любые параметры системы, текущее состояние потоков репликации.">
<permission-ref id="gradely_console_Config_Get"/>
<permission-ref id="gradely_console_Graph_Get"/>
<permission-ref id="gradely_console_Connection_Get"/>
<permission-ref id="gradely_console_Module_Get"/>
<permission-ref id="gradely_console_Process_Get"/>
</role>
</roles>
</module>
В непосредственном интерфейсе GraDeLy настройки ролей не производятся.
Роль |
Описание |
Config |
Graph |
Connection |
Module |
Process |
|---|---|---|---|---|---|---|
Суперпользователь |
Полный набор привилегий. Для целей отладки, первичного развертывания и минимальной управляемой инсталляции |
GET, *all |
GET, *all |
GET, *all |
GET, *all |
GET, *all |
Разработчик конфигураций |
Квалифицированный специалист, выполняющий настройку системы, подготовку конфигураций модулей, отрисовку графов репликации |
GET, *all |
GET, *all |
GET, *all |
GET, *all |
GET |
Администратор |
Специалист сопровождения, выполняющий настройку соединений к ресурсам конкретного контура, но не имеющий возможности менять конфигурацию и схему репликации. Также выполняет запуск и остановку модулей, выполняющих репликацию |
GET |
GET |
GET, *all |
GET, *all |
GET, *all |
Пользователь |
Может просматривать, но не изменять любые параметры системы, текущее состояние потоков репликации |
GET |
GET |
GET |
GET |
GET |