Alterator on D-Bus: различия между версиями

Материал из ALT Linux Wiki
м (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>
|}
|}
<includeonly>[[Категория:Неоконченные страницы|{{PAGENAME}}]]</includeonly>
<noinclude>[[Категория:Шаблоны|{{PAGENAME}}]]</noinclude>


== История создания ==
= История создания =
[[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>quile/qt</tt>;
* нетривиальность пользовательского интерфейса, вызванная ограничением связки <tt>guile/qt</tt>;
* ограниченность возможностей для реализации системной части:
* ограниченность возможностей для реализации системной части:
** слабоспецифицированный интерфейс;
** слабоспецифицированный интерфейс;
Строка 39: Строка 38:
*обобщение механизмов, используемых как для локального, так и удалённого управления, в том числе и через инструменты конфигурациями (такие как <tt>ssh</tt>, <tt>ansible</tt> и групповые политики, развиваемые в рамках проекта [[ActiveDirectory|«Альт Домен»]]).
*обобщение механизмов, используемых как для локального, так и удалённого управления, в том числе и через инструменты конфигурациями (такие как <tt>ssh</tt>, <tt>ansible</tt> и групповые политики, развиваемые в рамках проекта [[ActiveDirectory|«Альт Домен»]]).


== Архитектура проекта ==
= Архитектура проекта =
Архитектура новой реализации проекта Альтератор опирается на опыт конфигурирования ОС «Альт» и концептуальный подход, заложенный в нем.
Архитектура новой реализации проекта Альтератор опирается на опыт конфигурирования ОС «Альт» и концептуальный подход, заложенный в нем.


Alterator использует alterator-manager, который добавляет объекты и интерфейсы на шину D-Bus.
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


Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

История создания

Альтератор является основным базовым компонентом для построения дистрибутивных решений «Альт» (используется как инсталлятор и конфигуратор системы). Реализация исходного проекта Альтератор написана в рамках модульного подхода 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).

Примечание:
  • имена интерфейсов или имя шины - с точками, например, ru.basealt.alterator.manager;
  • имена объектов с символами косой черты, например, /ru/basealt/alterator.

Cхема различий реализаций Альтератора

Alterator (старый) Alterator на D-Bus
Ключевым звеном является служба alteratord, реализующаяся как взаимодействие через шину woo-bus, так и запуск бэкендов в виде отдельных процессов, обрабатывающих запросы на шине. Ключевым звеном является служба alterator-manager, обеспечивающая:
  • подключение к шине D-Bus;
  • разбор декларативных описаний интерфейсов для модулей Альтератора;
  • загрузку бинарных модулей, обрабатывающих запросы на объектах D-Bus для интерфейсов, загруженных из описаний.

Реализация нового подхода

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-сервера для написания полноценного, расширяемого веб-интерфейса. Ключевым вопросом для конфигурирования через веб остается делегирование расширенных полномочий веб-серверу, делающее его дополнительной точкой уязвимости.

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

Публикации на тему