Профили конфигурации и основы MDM

Рейтинг: 49% · 10 голосов
Подробный курс по macOS для разработчиков и админов: архитектура и Apple Silicon, терминал и zsh, Homebrew и пакеты, launchd и автоматизация, APFS и Time Machine, безопасность (SIP, Gatekeeper, TCC, FileVault), сеть, логи и диагностика, MDM и DDM, контейнеры и виртуализация, восстановление. По официальной документации Apple, актуально на 2026 (macOS 26 Tahoe).
Ответить
Аватара пользователя
Artem_MacAdmin
Сообщения: 47
Зарегистрирован: 11 май 2026, 05:31

Профили конфигурации и основы MDM

Сообщение Artem_MacAdmin »

Оглавление курса (47)
  1. Что такое macOS: Unix под капотом и место в 2026
  2. Архитектура macOS: XNU, тома и Signed System Volume
  3. Apple Silicon: ARM, Rosetta 2 и отличия от Intel
  4. Установка, обновление и восстановление macOS
  5. Finder, рабочий стол и продуктивность
  6. Системные настройки и их управление из CLI (defaults)
  7. Пользователи и группы: учётные записи и управление
  8. Терминал и zsh: командная строка macOS
  9. CLI на macOS: BSD-команды и отличия от Linux
  10. Настройка zsh: .zshrc, prompt, плагины
  11. Файловая система и права: POSIX, ACL, атрибуты, флаги
  12. Homebrew: пакетный менеджер для macOS
  13. Homebrew глубже: tap, Brewfile, services, обслуживание
  14. Другие пакеты: MacPorts, mas, Nix и App Store
  15. Установка приложений: .app, .dmg, .pkg и Gatekeeper
  16. Управление приложениями и их данные
  17. launchd и launchctl: система запуска macOS
  18. Свои службы и периодические задачи на launchd
  19. Автоматизация: Shortcuts, AppleScript и osascript
  20. Конфигурация как код: defaults, plist и профили
  21. APFS: снапшоты, клоны, контейнеры и шифрование
  22. Управление дисками: diskutil, образы и форматирование
  23. Time Machine и резервное копирование
  24. Внешние диски, форматы и сетевые тома
  25. Модель безопасности macOS: SIP и целостность системы
  26. Gatekeeper, нотаризация и защита от вредоносов
  27. Приватность и TCC: разрешения на доступ
  28. FileVault: полнодисковое шифрование
  29. Связка ключей и управление секретами
  30. Сетевой экран и защита сети
  31. Сеть в macOS: настройка и инструменты
  32. Диагностика сети на Mac
  33. Общий доступ: SSH, экран, файлы, удалённое управление
  34. Процессы и ресурсы: мониторинг производительности
  35. Логи macOS: unified logging и диагностика
  36. Производительность и энергия: powermetrics, диагностика
  37. Энергия, сон и обслуживание системы
  38. Профили конфигурации и основы MDM (вы здесь)
  39. Управление парком Mac: MDM, DDM и zero-touch (2026)
  40. Среда разработчика на Mac: Xcode CLT, git, версии
  41. Контейнеры на Mac: Docker Desktop, OrbStack, Apple container
  42. Виртуализация: Virtualization.framework, UTM, Linux и Windows
  43. Режимы загрузки и восстановление (Apple Silicon)
  44. Сброс, NVRAM, Safe Mode и сброс настроек
  45. Траблшутинг macOS: дерево решений по симптомам
  46. Место на диске и обслуживание системы
  47. Сквозной проект: настройка Mac как у профи + куда расти
Боль, которую мы закрываем

Один Mac ты настроишь руками за полчаса: Wi-Fi корпоративный, сертификат, запретить смену пароля раз в сто лет, выдать приложению доступ к экрану. А теперь представь пятьдесят машин. Или двести. И каждую неделю кто-то увольняется, кто-то приходит, кто-то сам залез в настройки и сломал Wi-Fi. Делать это руками - путь в ад, плюс пользователь в любой момент откатит твою настройку обратно.

Тут на сцену выходят две связанные вещи: профиль конфигурации mac (файл .mobileconfig) и MDM - система управления устройствами. Профиль - это контейнер с настройками, который накладывается поверх системы и который обычный пользователь не правит. MDM - это сервер, который раздаёт такие профили и шлёт устройствам команды по сети. В этом уроке разберём механику обоих: из чего реально состоит mobileconfig, чем установка вручную отличается от MDM, что такое Apple Business Manager и zero-touch, и в каком случае правильнее не профиль, а старый добрый defaults из предыдущих глав. И подведём к DDM - стандарту 2026 года.

Изображение

Что такое .mobileconfig изнутри

Профиль конфигурации - это XML property list (тот самый plist из главы про defaults), только с расширением .mobileconfig. Структура жёсткая: на верхнем уровне один словарь с метаданными профиля, а внутри ключ PayloadContent - массив словарей-полезных нагрузок (payload). Каждый payload настраивает одну подсистему: Wi-Fi, сертификат, ограничения, доступ к приватным данным.

Метаданные профиля - это PayloadIdentifier (уникальный обратный домен, по нему система отличает профили друг от друга), PayloadUUID, PayloadType со значением Configuration, PayloadDisplayName (что увидит пользователь) и флаг PayloadRemovalDisallowed. Вот скелет с двумя payload - корпоративный Wi-Fi и запрет менять имя компьютера:

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>PayloadDisplayName</key><string>Corp Baseline</string>
  <key>PayloadIdentifier</key><string>ru.cyberlake.baseline</string>
  <key>PayloadType</key><string>Configuration</string>
  <key>PayloadUUID</key><string>0E5B...A1</string>
  <key>PayloadVersion</key><integer>1</integer>
  <key>PayloadRemovalDisallowed</key><true/>
  <key>PayloadScope</key><string>System</string>
  <key>PayloadContent</key>
  <array>
    <dict>
      <key>PayloadType</key><string>com.apple.wifi.managed</string>
      <key>PayloadIdentifier</key><string>ru.cyberlake.baseline.wifi</string>
      <key>PayloadUUID</key><string>9A2C...44</string>
      <key>PayloadVersion</key><integer>1</integer>
      <key>SSID_STR</key><string>CYBERLAKE-CORP</string>
      <key>EncryptionType</key><string>WPA2</string>
      <key>Password</key><string>...</string>
    </dict>
  </array>
</dict>
</plist>
Разберём важное. PayloadScope - System означает, что настройка действует на всю машину; User - только на текущего пользователя. PayloadRemovalDisallowed true запрещает удаление - но запомни жёстко: этот флаг реально работает только на supervised-устройстве (об этом ниже). На обычной машине, поставленной вручную, пользователь снесёт профиль в пару кликов, флаг ему не помеха. PayloadType com.apple.wifi.managed - это тип конкретного payload, обратный домен Apple. Таких типов десятки: com.apple.security.root (корневой сертификат), com.apple.applicationaccess (restrictions, те самые ограничения), com.apple.TCC.configuration-profile-policy (PPPC - о нём отдельно).

Подписанный mobileconfig. Профиль можно (и нужно) подписать сертификатом - тогда система покажет имя организации с зелёной пометкой Verified, а не пугающее Unsigned. Подпись доказывает происхождение, а шифрование (CMS по RFC 5652) прячет содержимое - пароли Wi-Fi в открытом виде лежать не должны. После подписи XML превращается в бинарный CMS-контейнер, plutil его уже как чистый plist не прочитает.

PPPC - почему это вообще только профилем. В главах про TCC ты видел: дать приложению Доступ к экрану или Полный доступ к диску можно только кликом пользователя, и tccutil умеет только сбрасывать, но не выдавать. Так вот, payload com.apple.TCC.configuration-profile-policy - единственный легальный способ выдать TCC-разрешение заранее, без клика. Но есть жёсткое условие: PPPC-payload принимается системой только если профиль пришёл от MDM, которому устройство доверяет. Руками поставленный PPPC-профиль macOS проигнорирует. Это и есть граница между ручной установкой и MDM.

Вручную против MDM: где проходит граница

Раньше профиль ставили из терминала командой profiles -I. Забудь: начиная с macOS 11 эту лавочку прикрыли, install через CLI больше не работает и API для этого нет. Ставить вручную теперь можно ровно одним способом - дважды кликнуть по .mobileconfig (или открыть из Safari/Почты), после чего идти в Системные настройки -> Основные -> Управление устройствами (раньше это была панель Профили) и нажать Установить.

А вот смотреть установленные профили из терминала всё ещё можно, и это твой основной диагностический инструмент:

Код: Выделить всё

$ sudo profiles list -all
There are 2 configuration profiles installed
  attribute: profileIdentifier: ru.cyberlake.baseline
  attribute: profileIdentifier: com.apple.mdm.cyberlake.ru...

$ sudo profiles show -type configuration
Команда show вываливает полный разбор каждого профиля - его payload, источник, можно ли удалить. Если профиль пришёл от MDM, в выводе ты увидишь, что он installSource: mdm и removable: false. Это первое, что смотришь, когда настройка на машине ведёт себя странно: не баг системы, а наложенный сверху профиль, которого ты не ждал.

Теперь ключевое различие. Поставленный вручную профиль - это разовая статичная штука: пользователь с правами админа снесёт его, обновить централизованно ты его не можешь, PPPC и FileVault-с-эскроу он не примет. Профиль от MDM - живой: сервер видит, стоит он или нет, может переустановить, обновить, удалить удалённо, и принимает привилегированные payload. Грубо: вручную - для своей одной машины или лабы, MDM - для парка.

Что такое mdm mac и протокол Apple

MDM (Mobile Device Management) - это не магия, а конкретный протокол поверх HTTPS, который Apple описала в Device Management спецификации. Схема такая. На устройстве лежит специальный MDM-профиль (com.apple.mdm payload) с адресом твоего сервера и клиентским сертификатом. Когда серверу надо что-то сделать, он не лезет на устройство напрямую - он шлёт короткий пинг через APNs (Apple Push Notification service). Устройство, получив пуш, само ходит на сервер за командой - забирает её, выполняет, отчитывается. Поэтому MDM работает и за NAT: входящих соединений к Mac не нужно, всё инициирует само устройство.

Команды устройству - это XML-плунжеры (plist): InstallProfile, RemoveProfile, DeviceInformation (отдать инвентарь - модель, серийник, версию ОС), InstallApplication, EraseDevice (удалённый стереть), DeviceLock. Сам MDM-сервер ты обычно не пишешь - берёшь готовый: Jamf Pro, Kandji, Mosyle, Microsoft Intune, SimpleMDM, open-source Fleet или MicroMDM. Все они говорят на одном протоколе Apple, отличаются интерфейсом и ценой.

Классический MDM - реактивный: сервер спрашивает - устройство отвечает, опросы по расписанию, задержки, лишний трафик. Это важная деталь, к которой мы вернёмся в финале про DDM.

Apple Business Manager и zero-touch enrollment

Ручная установка MDM-профиля - всё ещё ручная: кто-то должен кликнуть, и пользователь теоретически может отказаться или потом снести управление. Для парка это не годится. Решение - Apple Business Manager (для школ - Apple School Manager) и механизм ADE (Automated Device Enrollment), он же исторически DEP, он же zero-touch.

Идея. Mac, купленный через авторизованный канал (Apple или реселлер, привязанный к твоему ABM), Apple на своей стороне помечает как принадлежащий твоей организации - по серийному номеру. Ты в портале business.apple.com связываешь эти серийники со своим MDM-сервером. Дальше коробку можно слать сотруднику напрямую, ты её даже не распаковываешь. Сотрудник включает Mac, проходит первичную настройку, подключается к сети - и на этапе Setup Assistant устройство само идёт в ABM, узнаёт свой MDM и тихо в него заворачивается. Ноль касаний админом отсюда и zero-touch.

Два жирных бонуса ADE. Первый - supervised. Устройство, заехавшее через ADE, становится supervised (под надзором), и вот тут наконец-то по-настоящему работают жёсткие ограничения: запрет снять MDM-профиль, отключить AirDrop, заблокировать стирание контента. Тот самый PayloadRemovalDisallowed становится непробиваемым. Второй - enrollment можно сделать обязательным: пользователь не пропустит шаг управления, не отвертится. Это и отличает корпоративный Mac от личного, на котором профиль - дело добровольное.

Проверить статус enrollment на самой машине:

Код: Выделить всё

$ profiles status -type enrollment
Enrolled via DEP: Yes
MDM enrollment: Yes (User Approved)
MDM server: https://mdm.cyberlake.ru/...
Enrolled via DEP: Yes - значит машина приехала через ADE и она supervised. User Approved - что enrollment одобрен (для части привилегированных payload это обязательное состояние). Если видишь No / No - машина в управлении не состоит, и большинство строгих политик к ней неприменимы.

Когда профиль, а когда скрипт defaults

Частый и больной вопрос для Mac-админа: управление mac профилем или скриптом с defaults из прошлых глав? Граница простая, держи её в голове.
  • Профиль, когда настройку нужно навязать и удержать: пользователь не должен её менять. Профиль накладывается поверх системы как защищённый слой, многие managed-ключи становятся серыми (недоступными) в интерфейсе. Сменишь профиль - настройка вернётся к твоему значению. Сними профиль - настройка чисто откатится. Это декларативно: ты описываешь желаемое состояние, система его держит.
  • defaults (и любой скрипт), когда нужно один раз проставить дефолт, который пользователю не грех потом поменять: предпочтения по умолчанию, мелкие косметические штуки. Минусы: пользователь тут же это перепишет, удаление настройки придётся писать руками (она не откатывается сама), и многое из защищённого (PPPC, FileVault-эскроу, расширения ядра) через defaults в принципе недоступно.
Грубое правило: политика - профилем, преференция - скриптом. И ещё: profiles - это про конфигурацию состояния, а раскатка софта, запуск скриптов по событию, инвентарь - это задача MDM-агента и launchd (глава про launchctl), не профиля. Профиль сам по себе скрипты не выполняет.

Типичные грабли
  • PayloadRemovalDisallowed на неуправляемой машине. Поставил профиль с этим флагом вручную, думаешь - защита. Нет: на не-supervised машине профиль всё равно снимается из интерфейса управления устройством. Флаг кусается только под ADE/supervised.
  • PPPC поставили вручную и удивляются, что не работает. Payload com.apple.TCC.* система принимает только от доверенного MDM. Двойной клик по такому профилю даст разрешения на TCC, которые просто не применятся.
  • Дубликат PayloadIdentifier. Идентификатор - первичный ключ профиля. Поставишь второй профиль с тем же PayloadIdentifier - он перезатрёт первый, а не добавится рядом. Удобно для обновления, но легко отстрелить ногу, если идентификаторы скопипастил не думая.
  • profiles -I больше нет. Гайды из интернета пятилетней давности велят ставить из терминала - на macOS 11+ и тем более на Tahoe это не работает. Только двойной клик или MDM.
  • Профиль не подписан - пользователь видит Unsigned. Технически работает, но красный Unsigned пугает людей и провоцирует отказ от установки. Для любой раздачи вне MDM подписывай профиль.
  • Забыл, что профиль наложен, и долго дебажишь настройку. Серая (недоступная) опция в Системных настройках почти всегда означает managed-ключ. Первым делом sudo profiles show, а не пляски с defaults.
Мини-лаба: руками

Делай на своей машине, MDM не нужен - смотрим и читаем, ничего опасного не ставим.
  • 1. Посмотри, что уже стоит:

    Код: Выделить всё

    sudo profiles list -all
    На личной машине часто пусто или один-два профиля. На рабочей увидишь MDM.
  • 2. Полный разбор:

    Код: Выделить всё

    sudo profiles show -type configuration
    Найди в выводе installSource и removable у каждого профиля. Отличи mdm от ручного.
  • 3. Проверь enrollment:

    Код: Выделить всё

    profiles status -type enrollment
    Прочитай: приехала ли машина через DEP, состоит ли в MDM.
  • 4. Сделай свой безобидный mobileconfig руками. Возьми скелет из урока, оставь один payload com.apple.dock или com.apple.applicationaccess, задай свой PayloadIdentifier. Прогони через

    Код: Выделить всё

    plutil -lint baseline.mobileconfig
    чтобы убедиться, что XML валидный. Это и есть основа любого профиля - чистый, проверенный plist.
  • 5. (Если есть доступ) загляни в business.apple.com под пробным аккаунтом и найди раздел привязки серийников к MDM. Просто посмотри логику ADE глазами.
Контрольные вопросы
  • 1. Почему PPPC-разрешение нельзя выдать профилем, который ты поставил двойным кликом, и что для этого нужно?
  • 2. Чем отличается удержание настройки профилем от проставления её через defaults - что произойдёт с настройкой, когда ты снимешь профиль, и что будет, если пользователь её поменяет?
  • 3. Зачем в схеме MDM нужен APNs, если у сервера и так есть адрес устройства, - почему сервер не ходит на Mac напрямую?
  • 4. Что даёт устройству заезд через ADE по сравнению с ручной установкой MDM-профиля, и при чём здесь слово supervised?
Итог

Профиль конфигурации - это подписанный plist с payload, защищённый слой настроек поверх системы, который пользователь не правит. Вручную (двойным кликом) ставится разовый профиль для своей машины; привилегированные вещи вроде PPPC и FileVault-эскроу принимает только MDM. MDM - протокол Apple поверх APNs: сервер будит устройство пушем, устройство само забирает команды. Apple Business Manager плюс ADE дают zero-touch и supervised - тогда ограничения становятся непробиваемыми, а enrollment обязательным. Политику держи профилем, преференцию - скриптом defaults. А реактивный опрос классического MDM в 2026-м постепенно вытесняет DDM (Declarative Device Management): устройство получает JSON-декларации и само проактивно держит заданное состояние, без постоянных опросов сервера - именно с DDM мы продолжим в следующих главах про управление парком.
👍4 ❤️3 🔥1 😄 🤔2
Аватара пользователя
kalgus
Сообщения: 1
Зарегистрирован: 21 май 2026, 14:07

Re: Профили конфигурации и основы MDM

Сообщение kalgus »

Дошло наконец, почему мой PPPC-профиль с доступом к экрану просто игнорился - ставил его двойным кликом, а не через MDM. Спасибо, полдня на это убил.
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
dockerpro
Сообщения: 1
Зарегистрирован: 03 июн 2026, 03:48

Re: Профили конфигурации и основы MDM

Сообщение dockerpro »

А подскажите: если машина не через ADE заехала, а MDM-профиль поставили руками, supervised она уже никак не станет? Или есть способ доразметить серийник в ABM задним числом?
👍1 ❤️1 🔥1 😄 🤔1
Ответить
← Предыдущая глава
Энергия, сон и обслуживание системы
Следующая глава →
Управление парком Mac: MDM, DDM и zero-touch (2026)

Все главы курса «macOS для профи: администрирование, терминал и Homebrew»

Поделиться темой: ✈ Telegram VK
Похожие запросы: Установка и первый конфиг nginxnginx в DockerMDM и управление парком Mac

Вернуться в «macOS для профи: администрирование, терминал и Homebrew»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость