Перевод. Оригинал статьи – https://simplemdm.com/declarative-device-management/
По своей сути все MDM-сервисы для устройств Apple построены на протоколе Apple MDM – основном механизме, благодаря которому осуществляется управление устройствами. Несмотря на то, что за прошедшие годы количество функций протокола значительно увеличилось, по своей структуре он остался практически неизменным. На WWDC 2021 Apple анонсировала обновленную версию протокола, которая представит новые механизмы, позволяющие расширить уже доступные возможности работы системы.
Текущая версия протокола MDM описывается Apple как “реактивная” – когда MDM отправляет команду устройству, этот процесс задействует многократный обмен между устройством и MDM сервером для применения каждого изменения. Чтобы MDM обнаружил произошедшее на устройстве изменение, например, обновление операционной системы, MDM вновь обращается к устройству, так как сервер не получает автоматических уведомлений.
Новая версия протокола, управление с помощью которого Apple называют “декларативным”, создана таким образом, чтобы облегчить нагрузку на сервер и сделать устройства более автономными – теперь они могут реагировать на изменения состояния системы без дополнительного запроса со стороны MDM, а также уведомлять сервер при внесении определенных изменений.
Первоначально функции декларативного управления будут доступны только для iOS-устройств, зарегистрированных в MDM по инициативе пользователя (user-initiated enrollment).
В основе протокола декларативного управления лежат три понятия: декларации (Declarations), канал статуса (Status Channel) и расширяемость (Extensibility).
Декларации (Declarations)
Декларации осуществляют передачу политики – они используются для настройки учетных записей, параметров, ограничений и могут быть применены как ко всем задействованным устройствам сразу, так и к отдельным устройствам или пользователям.
Существуют четыре типа деклараций:
Конфигурации (Configurations) – похожи на существующие профили конфигурации, одно из главных различий между профилями деклараций и конфигураций заключается в том, что декларации отправляются на устройства в виде JSON-файла, а не plist-файла.
Ассеты (Assets) – эти справочные данные необходимы для конфигураций, они могут ссылаться на данные с MDM сервера или отдельной CDN. Эти данные могут также быть специфическими для отдельного пользователя. К примеру, ассет может задействовать облачный сервер учетных записей (наподобие Okta, Azure или Google) для получения таких данных пользователя, как имя, адрес электронной почты, его пароли, сертификаты и прочее – подобный механизм может быть использован несколькими конфигурациями, использующими данные конкретного пользователя. Преимущество состоит в том, что вместо необходимости обновления нескольких конфигураций для отражения изменений в этих данных понадобится изменить только ассет, а все конфигурации, ссылающиеся на него, обновятся автоматически.
Активации (Activations) – это наборы конфигураций, которые будут применяться к устройствам, что-то вроде шаблонов. Активации имеют к конфигурациям отношение многие ко многим, что дает возможность строить сложную логику применения конфигураций. К примеру, это позволяет администраторам указывать определенный набор политик, которые будут применяться только к отдельному набору устройств, работающих на конкретной версии операционной системы. В случае изменения состояния устройства, автоматически изменятся и применяемые наборы политик, что позволит управлять устройствами без дополнительного взаимодействия с MDM.
Управление (Management) – этот тип декларации используется для передачи информации об общем состоянии управления устройством, например, информации об организации.
Канал статуса (Status Channel)
Канал статуса позволяет MDM серверу подписаться на определенные изменения в состоянии устройства для своевременного изменения конфигурации. К примеру, это позволяет MDM серверу получать уведомления с устройств при обновлении версии ОС, что в свою очередь вызовет применение политик, необходимых для обновленной версии ОС.
Расширяемость (Extensibility)
Она позволяет MDM и устройствам обмениваться друг с другом информацией о появлении дополнительных возможностей. Предположим, если ОС устройство обновилось и начало поддерживать новую функцию MDM, то устройство сообщит об этом MDM, и внесет необходимые изменения в свою конфигурацию. И, напротив, если служба MDM обновлена и поддерживает новую функцию, поддерживаемую устройством, она отправит уведомление и устройство также изменит свою конфигурацию. Это позволяет гарантировать, что устройства будут получать необходимые обновления, если они соответствуют заявленным MDM требованиям.
Декларативное управление спроектировано так, чтобы беспроблемно работать одновременно с существующим протоколом MDM, а значит, MDM-сервисы смогут постепенно внедрять новые функции без прерывания работы старых протоколов.