Alterator on D-Bus: различия между версиями
Мария (обсуждение | вклад) |
м (EvgenySinelnikov переименовал страницу Alterator на D-Bus в Alterator on D-Bus: Убрать кириллицу из URL) |
||
(не показано 7 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
[[Category:Sisyphus]] | [[Category:Sisyphus]] | ||
[[Category:Alterator_на_D-Bus]] | |||
{| style="border:1px solid #AAA; background:#F9F9F9; width:200px; margin: 0 0 1em 1em; padding:.2em; text-align:center; float: right;" class=noprint | {| style="border:1px solid #AAA; background:#F9F9F9; width:200px; margin: 0 0 1em 1em; padding:.2em; text-align:center; float: right;" class=noprint | ||
Строка 7: | Строка 8: | ||
| '''Данная страница находится в [[:Категория:Неоконченные страницы|разработке]]'''.<br /><small style="line-height:1.1em;">Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.</small> | | '''Данная страница находится в [[:Категория:Неоконченные страницы|разработке]]'''.<br /><small style="line-height:1.1em;">Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.</small> | ||
|} | |} | ||
= История создания = | |||
[[Alterator#Alterator|Альтератор]] является основным базовым компонентом для построения дистрибутивных решений [[Releases|«Альт»]] (используется как инсталлятор и конфигуратор системы). Реализация исходного проекта Альтератор написана в рамках модульного подхода <tt>Scheme</tt> (диалект языка <tt>Lisp</tt>, в реализации <tt>Guile</tt>), <tt>C</tt> и <tt>sh+awk</tt>. Архитектура проекта предполагает возможность парного расширения модулей на языке программирования <tt>Scheme</tt> для фронтендов (под графический интерфейс на базе <tt>Qt</tt> и под веб-интерфейс на базе встроенного, отдельно устанавливаемого веб-сервера) и на языке <tt>Bash</tt> для бэкендов (со взаимодействием через собственную шину передачи сообщений — <tt>woo-bus</tt>). | [[Alterator#Alterator|Альтератор]] является основным базовым компонентом для построения дистрибутивных решений [[Releases|«Альт»]] (используется как инсталлятор и конфигуратор системы). Реализация исходного проекта Альтератор написана в рамках модульного подхода <tt>Scheme</tt> (диалект языка <tt>Lisp</tt>, в реализации <tt>Guile</tt>), <tt>C</tt> и <tt>sh+awk</tt>. Архитектура проекта предполагает возможность парного расширения модулей на языке программирования <tt>Scheme</tt> для фронтендов (под графический интерфейс на базе <tt>Qt</tt> и под веб-интерфейс на базе встроенного, отдельно устанавливаемого веб-сервера) и на языке <tt>Bash</tt> для бэкендов (со взаимодействием через собственную шину передачи сообщений — <tt>woo-bus</tt>). | ||
Строка 18: | Строка 17: | ||
* модули не предоставляют программный интерфейс для приложений (API); | * модули не предоставляют программный интерфейс для приложений (API); | ||
* нетривиальность пользовательского интерфейса, вызванная ограничением связки <tt> | * нетривиальность пользовательского интерфейса, вызванная ограничением связки <tt>guile/qt</tt>; | ||
* ограниченность возможностей для реализации системной части: | * ограниченность возможностей для реализации системной части: | ||
** слабоспецифицированный интерфейс; | ** слабоспецифицированный интерфейс; | ||
Строка 39: | Строка 38: | ||
*обобщение механизмов, используемых как для локального, так и удалённого управления, в том числе и через инструменты конфигурациями (такие как <tt>ssh</tt>, <tt>ansible</tt> и групповые политики, развиваемые в рамках проекта [[ActiveDirectory|«Альт Домен»]]). | *обобщение механизмов, используемых как для локального, так и удалённого управления, в том числе и через инструменты конфигурациями (такие как <tt>ssh</tt>, <tt>ansible</tt> и групповые политики, развиваемые в рамках проекта [[ActiveDirectory|«Альт Домен»]]). | ||
= Архитектура проекта = | |||
Архитектура новой реализации проекта Альтератор опирается на опыт конфигурирования ОС «Альт» и концептуальный подход, заложенный в нем. | Архитектура новой реализации проекта Альтератор опирается на опыт конфигурирования ОС «Альт» и концептуальный подход, заложенный в нем. | ||
Alterator использует | Alterator использует [[Alterator-manager|Alterator Manager]], который добавляет объекты и интерфейсы на шину D-Bus. | ||
Alterator-manager это модульный сервис ("замена" alteratord). Его функционал реализуется в модулях (механизмах). Модули представлены в виде динамически подгружаемых библиотек (.so). Интерфейс описывается в специальных конфигурационных файлах. Сервис может работать в двух режимах: обычном и пользовательском. В первом случае сервис запускается из-под root'а и регистрирует имя (ru.basealt.alterator) на системной шине D-Bus, во втором - из-под обычного пользователя и имя регистрирует на сессионной шине D-Bus. После запуска сервис alterator-manager считывает конфигурационные файлы .backend и сохраняет информацию из них в собственную таблицу. Далее alterator-manager загружает модули, которые будут пользоваться информацией из этой таблицы. | Alterator-manager это модульный сервис ("замена" alteratord). Его функционал реализуется в модулях (механизмах). Модули представлены в виде динамически подгружаемых библиотек (.so). Интерфейс описывается в специальных конфигурационных файлах. Сервис может работать в двух режимах: обычном и пользовательском. В первом случае сервис запускается из-под root'а и регистрирует имя (ru.basealt.alterator) на системной шине D-Bus, во втором - из-под обычного пользователя и имя регистрирует на сессионной шине D-Bus. После запуска сервис alterator-manager считывает конфигурационные файлы .backend и сохраняет информацию из них в собственную таблицу. Далее alterator-manager загружает модули, которые будут пользоваться информацией из этой таблицы. | ||
Строка 75: | Строка 74: | ||
|} | |} | ||
= Реализация нового подхода = | |||
=== Alterator Manager и Executor === | === Alterator Manager и Executor === | ||
На текущий момент реализован базовый каркас в виде alterator-manager и alterator-module-executor. Пакеты доступны в хранилище «Сизиф» в ветке sisyphus и [[Одиннадцатая_платформа|p11]]. | На текущий момент реализован базовый каркас в виде alterator-manager и alterator-module-executor. Пакеты доступны в хранилище «Сизиф» в ветке sisyphus и [[Одиннадцатая_платформа|p11]]. | ||
Строка 87: | Строка 86: | ||
=== Клиентские приложения === | === Клиентские приложения === | ||
*[https://gitlab.basealt.space/alt/alterator-browser '''alterator-browser, Alterator Browser'''] - интерфейс добавления модулей Альтератора; графическое приложение, предназначенное для просмотра, запуска приложений для использования функционала объектов на D-Bus (замена Alterator Control Center). Разработка должна обеспечить прозрачный запуск как графических модулей Альтератора старой версии, так и новых графических интерфейсов, обращающихся к интерфейсам на D-Bus и управляемых через групповые политики. | *[https://gitlab.basealt.space/alt/alterator-browser '''alterator-browser'''],[[Alterator_Browser|'''Alterator Browser''']] - интерфейс добавления модулей Альтератора; графическое приложение, предназначенное для просмотра, запуска приложений для использования функционала объектов на D-Bus (замена Alterator Control Center). Разработка должна обеспечить прозрачный запуск как графических модулей Альтератора старой версии, так и новых графических интерфейсов, обращающихся к интерфейсам на D-Bus и управляемых через групповые политики. | ||
*[https://github.com/AlexSP0/alt-diagnostic-tool '''adt, ADT'''] - графическое приложение для диагностики операционной системы: обеспечивает поиск и загрузку гибко расширяемого набора диагностических интерфейсов; | *[https://github.com/AlexSP0/alt-diagnostic-tool '''adt'''], [[ADT|'''ADT''']] - графическое приложение для диагностики операционной системы: обеспечивает поиск и загрузку гибко расширяемого набора диагностических интерфейсов; | ||
*[https://gitlab.basealt.space/alt/alteratorctl '''alteratorctl, Alteratorctl'''] (в разработке </>) - консольная утилита, позволяющая использовать функционал объектов на D-Bus без дополнительных приложений. | *[https://gitlab.basealt.space/alt/alteratorctl '''alteratorctl, Alteratorctl'''] (в разработке </>) - консольная утилита, позволяющая использовать функционал объектов на D-Bus без дополнительных приложений. | ||
= Планы и перспективы развития = | |||
Дальнейшее развитие решения конфигурирования без установки браузера и конфигурирования веб-протоколов при помощи удаленного управления модулями Альтератора может быть представлено в виде отдельного proxy-сервера для написания полноценного, расширяемого веб-интерфейса. Ключевым вопросом для конфигурирования через веб остается делегирование расширенных полномочий веб-серверу, делающее его дополнительной точкой уязвимости. | Дальнейшее развитие решения конфигурирования без установки браузера и конфигурирования веб-протоколов при помощи удаленного управления модулями Альтератора может быть представлено в виде отдельного proxy-сервера для написания полноценного, расширяемого веб-интерфейса. Ключевым вопросом для конфигурирования через веб остается делегирование расширенных полномочий веб-серверу, делающее его дополнительной точкой уязвимости. | ||
Важным шагом для расширения количества разрабатываемых модулей и клиентских приложений, а также повышения общей зрелости предлагаемой к рассмотрению реализации является подробное документирование как архитектурных особенностей, так и возможностей для разработчика. | Важным шагом для расширения количества разрабатываемых модулей и клиентских приложений, а также повышения общей зрелости предлагаемой к рассмотрению реализации является подробное документирование как архитектурных особенностей, так и возможностей для разработчика. | ||
= Публикации на тему = | |||
* Тезисы [[Pereslavl_summer_2023|XIX конференции разработчиков свободных программ 2023]], [https://www.altlinux.org/Images.www.altlinux.org/f/f5/Pereslavl-summer-2023-Ossdevconf-XIX.pdf Концептуальный подход к развитию новой версии Альтератор, Евгений Синельников] |
Текущая версия от 22:02, 8 ноября 2024
История создания
Альтератор является основным базовым компонентом для построения дистрибутивных решений «Альт» (используется как инсталлятор и конфигуратор системы). Реализация исходного проекта Альтератор написана в рамках модульного подхода Scheme (диалект языка Lisp, в реализации Guile), C и sh+awk. Архитектура проекта предполагает возможность парного расширения модулей на языке программирования Scheme для фронтендов (под графический интерфейс на базе Qt и под веб-интерфейс на базе встроенного, отдельно устанавливаемого веб-сервера) и на языке Bash для бэкендов (со взаимодействием через собственную шину передачи сообщений — woo-bus).
Недостатки решения
Разработка предыдущей версии Альтератора, в которой взаимодействие с бэкендами осуществлялось через службу alteratord, столкнулась со следующими проблемами:
- модули не предоставляют программный интерфейс для приложений (API);
- нетривиальность пользовательского интерфейса, вызванная ограничением связки guile/qt;
- ограниченность возможностей для реализации системной части:
- слабоспецифицированный интерфейс;
- сложность обработки ошибок бэкендов;
- отсутствие системного контроля доступа:
- отсутствует гибкая настройка контроля доступа в графическом интерфейсе;
- в параметрах доступа к модулю через веб-интерфейс возможно указание только локальных пользователей;
- запуск в графическом интерфейсе доступен только по паролю root'а;
- подверженность уязвимости code injection.
Перечисленные недостатки привели к решению о смене архитектуры проекта Альтератор - к переходу от взаимодействия с бэкендами посредством alteratord (который «под капотом» использует woo-bus) к общению через службу alterator-manager, обращающуюся к шине D-Bus.
Цели перехода на новую реализацию
- спецификация интерфейсов бэкендов для создания фронтендов в различных графических и консольных приложениях;
- возможность защищённого, контролируемого выполнения привилегированных действий из-под непривилегированного окружения (то есть команд из-под root’а в графических приложениях без необходимости ввода только root’ового пароля, что определяется настройками);
- интеграция шины D-Bus со всеми системными компонентами в современных Linux-дистрибутивах (начиная от systemd и заканчивая всеми графическими окружениями для управления, например, такими сервисами как UDisks2, NetworkManager, а также отдельными сервисами systemd);
- сохранить возможность традиционного управления в консоли через ручное редактирование конфигурационных файлов;
- расширение числа заинтересованных разработчиков (участников команды ALT Linux Team) в развитии проекта, позволяющего конфигурировать операционные системы «Альт» за счет реализации расширения модулей под декларативный сценарий;
- предоставление разработчикам широких возможностей в виде фреймфорка для создания собственных приложений, управляемых как локально, так и по сети;
- обобщение механизмов, используемых как для локального, так и удалённого управления, в том числе и через инструменты конфигурациями (такие как ssh, ansible и групповые политики, развиваемые в рамках проекта «Альт Домен»).
Архитектура проекта
Архитектура новой реализации проекта Альтератор опирается на опыт конфигурирования ОС «Альт» и концептуальный подход, заложенный в нем.
Alterator использует Alterator Manager, который добавляет объекты и интерфейсы на шину D-Bus.
Alterator-manager это модульный сервис ("замена" alteratord). Его функционал реализуется в модулях (механизмах). Модули представлены в виде динамически подгружаемых библиотек (.so). Интерфейс описывается в специальных конфигурационных файлах. Сервис может работать в двух режимах: обычном и пользовательском. В первом случае сервис запускается из-под root'а и регистрирует имя (ru.basealt.alterator) на системной шине D-Bus, во втором - из-под обычного пользователя и имя регистрирует на сессионной шине D-Bus. После запуска сервис alterator-manager считывает конфигурационные файлы .backend и сохраняет информацию из них в собственную таблицу. Далее alterator-manager загружает модули, которые будут пользоваться информацией из этой таблицы.
На данный момент реализован модуль alterator-module-executor. Модуль alterator-module-executor предоставляет интерфейс на D-Bus для запуска исполняемых файлов. Подробнее.
Другие модули могут не пользоваться конфигурационными файлами .backend, а добавлять информацию о своих объектах и интерфейсах напрямую в базу данных alterator-manager'а.
Объектами и интерфейсами на D-Bus, предоставленными alterator-manager'ом, пользуются фронтенды (Alterator Browser, ADT, AMC, AMP).
Cхема различий реализаций Альтератора
Alterator (старый) | Alterator на D-Bus |
---|---|
Ключевым звеном является служба alteratord, реализующаяся как взаимодействие через шину woo-bus, так и запуск бэкендов в виде отдельных процессов, обрабатывающих запросы на шине. | Ключевым звеном является служба alterator-manager, обеспечивающая:
|
Реализация нового подхода
Alterator Manager и Executor
На текущий момент реализован базовый каркас в виде alterator-manager и alterator-module-executor. Пакеты доступны в хранилище «Сизиф» в ветке sisyphus и p11.
Данный каркас обеспечивает следующий набор возможностей:
- в рамках базового интерфейса ru.basealt.alterator.manager - поиск любых объектов Альтератор, предоставляющих заданный интерфейс, а также вывод перечня интерфейсов предоставляемых заданным объектом Альтератор;
- в рамках расширенного модуля executor - возможность создания любого количества объектов, реализующих заданные интерфейсы через Unixway на D-Bus;
- для всех создаваемых интерфейсов - генерировать базовый ограниченный набор правил PolicyKit;
- контролировать соответствие интерфейсов, создаваемых для объектов, заданному шаблону (имена методов и их сигнатуры).
Клиентские приложения
- alterator-browser,Alterator Browser - интерфейс добавления модулей Альтератора; графическое приложение, предназначенное для просмотра, запуска приложений для использования функционала объектов на D-Bus (замена Alterator Control Center). Разработка должна обеспечить прозрачный запуск как графических модулей Альтератора старой версии, так и новых графических интерфейсов, обращающихся к интерфейсам на D-Bus и управляемых через групповые политики.
- adt, ADT - графическое приложение для диагностики операционной системы: обеспечивает поиск и загрузку гибко расширяемого набора диагностических интерфейсов;
- alteratorctl, Alteratorctl (в разработке </>) - консольная утилита, позволяющая использовать функционал объектов на D-Bus без дополнительных приложений.
Планы и перспективы развития
Дальнейшее развитие решения конфигурирования без установки браузера и конфигурирования веб-протоколов при помощи удаленного управления модулями Альтератора может быть представлено в виде отдельного proxy-сервера для написания полноценного, расширяемого веб-интерфейса. Ключевым вопросом для конфигурирования через веб остается делегирование расширенных полномочий веб-серверу, делающее его дополнительной точкой уязвимости.
Важным шагом для расширения количества разрабатываемых модулей и клиентских приложений, а также повышения общей зрелости предлагаемой к рассмотрению реализации является подробное документирование как архитектурных особенностей, так и возможностей для разработчика.