引言
Apple MDM (Mobile Device Management) 字面理解就是一种管理移动设备的方式,覆盖 iOS 5 及更高版本的 iPhone/iPod touch/iPad、Mac OS X 10.7 及更高版本的 Mac、TVOS 9 及更高版本的 Apple TV,标题中的 “iOS” 非常片面,因为我只在 iOS 中应用过,其他平台大致相同罢。网络上对 MDM 的介绍还是比较少的,希望这篇文章能补充一些空白。距离上次 《iOS应用发布方式盘点+苹果商务详解》 发表已经有两年多的时间,当时在文章里提到了可以通过 MDM 分发应用,后来很多同学留言或私信我想多了解一点 MDM,实在抱歉,今天它终于来了。
插播一条广告,对 iOS 相关技术有兴趣的同学可以私信我,拉你进某信群聊,简书评论区实在不方便交流。
原创文章,如需转载请在下面留言让我知道。不留言不在开头标明出处链接的坏同学,1字1元索赔
读完本文你可以
- 了解 MDM 是什么,能做什么。
- 了解 MDM 系统组成和工作原理。
- 搭建一个属于你自己的生产级别的 MDM 服务(太好玩儿啦🤩🤩)。
目标读者
- 有管理多个 iOS 设备需求的企业 IT 经理、资产和设备管理员;
- 想要了解苹果 MDM 功能和机制的同学;
- 苹果和科技发烧友;
MDM 是什么
其实很多公司都在用 MDM 管理企业或员工的 iOS 设备,比如阿里的同学必装的“阿里郎”。
被管理的 iOS 设备会在 设置 - 通用 - 设备管理 里面多出一个描述文件,如下图。这表示你的设备被阿里郎远程管理了。
苹果对 MDM 的介绍是这样的:
通过部署移动设备管理 (MDM) 解决方案,管理员可以安全地远程配置注册设备。管理员使用 Apple 校园教务管理或 Apple 商务管理来注册组织拥有的设备,用户也可以注册自己的设备。注册设备后,管理员可以更新软件和设备设置、监控组织政策的遵守情况、远程擦除或锁定设备,以及安装内部开发或通过 Apple 校园教务管理或 Apple 商务管理购买的 app 和书籍。
因为 MDM 的权限和能做的事情还是很多的,看完苹果的定义很难有直观的理解。别着急,我们继续来深入探索一下。
监督 (Supervised) 和非监督设备
加入 MDM 的设备分为监督
和非监督
,管理员可以决定设备加入哪种类型的 MDM。
一般来说比较敏感的操作只能在“监督”设备上执行,加入(注册到)“监督” MDM 的设备需要在注册时抹掉设备(除非你的设备是全新的),并且在设置或锁屏页面中会出现非常明显的提示。适合应用于企业或学校等机构购买的设备,控制能力强。再也不需要担心员工或学生登陆自己的 AppleID 并开启“查找我的 iPhone”这类功能,抹掉设备后不需要登录 AppleID 解除 ID 锁,这点对我工作的场景非常实用。当然,监督设备独享的敏感操作和限制等功能还有很多。
非监督设备也有一定优势,比如加入非监督 MDM 的设备不需要先抹掉,只要访问一个网址或者从电子邮件附件中安装一个特定的描述文件就可以了。退出 MDM 也很容易,用户只要在 iOS 设备上删掉描述文件就可以了。比较适合应用于员工自己的手机,比如你作为企业的 IT 人员,想让员工手机连接办公室 Wi-Fi,但又不想让员工知道 Wi-Fi 密码,就可以把员工手机加入到非监督 MDM。
具体要把设备注册为哪种类型,要看设备所属和你需要的功能是否是监督设备专用的。
能做什么
限制和配置
- Wi-Fi 配置
- VPN 配置
- HTTP、DNS 代理
- 网络内容过滤器
- 密码强度
- 应用黑白名单
- 单App模式
- FaceTime、iMessage
- AirDrop
- 截屏、录屏、投屏
- Siri
- 安装、卸载应用
- 应用内购
- iCloud照片流、备份、文档、钥匙串
- 抹掉设备内容和设置
- VPN
- Wi-Fi强制开启
- 蓝牙、蜂窝数据、eSIM设置
- 设备名、壁纸
- 密码、Touch ID、Face ID
- 查找我的iPhone
上面的清单很长,几乎控制到了 iOS 设备的方方面面,连 壁纸 都能设置,但这可能还不是完整的清单,随着时间的推移,苹果会加入更多功能,大家自己探索一下吧。这些功能和具体的信息(比如要连接的 Wi-Fi 名称和密码、加密方式、证书等等)大部分都是通过描述文件 (Profile,文件后缀 .mobileconfig) 承载的,只要把描述文件安装到设备上就可以生效。安装途径有很多种,比如把 iOS 设备通过 USB 数据线连接到 Mac 上、通过 MDM 命令远程安装(详见下文)、加入 MDM 时随注册描述文件一同安装等(设备注册到 MDM 方法见下文)。
创建描述文件的方法有很多种,最简单的就是使用 Apple Configurator 2
应用,可以在 Mac App Store 中下载到,是一款苹果官方出品的 macOS 应用。打开应用后点击菜单栏 File - New Profile,会弹出一个窗口用于编辑限制和配置信息,如下图:
从上图可以看出,苹果给的功能真的很多,我选中的是 Globle HTTP Proxy 选项,右侧是代理的具体参数配置页面。值得注意的是右上方有一个
supervised only
,意思是只有“监督”设备才能使用这个功能。
查询
- 获取已安装应用、描述文件
- 设备容量、可用容量
- 电池电量
- OS版本
- UDID、设备名
- 型号、序列号
- 蓝牙、以太网、Wi-Fi的MAC地址
- 运营商名称、国家
- 电话号
- 某个应用的名称、大小、版本
- 密码、防火墙、文件保险箱等安全性
这些都是作为企业、组织或学校等机构,可以查询到的设备的信息。查询动作都是通过服务器远程进行的,只要设备联入了互联网就可以做到。
命令
- 请求、更改密码
- 开关蓝牙
- 开关丢失模式
- 播放丢失模式声音
- 获取设备位置
- 开关远程管理
- 安装OS更新
- 锁定设备
- 擦除
- 推送或删除App、图书、设置
- 请求、停止 AirPlay
- 重启、关闭设备
命令和查询类似,也是通过服务器给设备下发的。这里我们看到了一些很敏感的操作,比如擦除设备,这种都是需要监督设备才能支持的,所以在决定设备是否需要“监督”之前,可以先了解一下你想要的功能或限制是否为 supervised only
。
MDM 下发命令流程
- 首先看下图的 Enroll 箭头,这是整个流程的准备阶段,意思是设备需要先注册到 MDM。这个操作只需要进行一次,只要设备没有退出 MDM,这个步骤不需要再发生。
- 向 MDM 服务下发指令,MDM 服务缓存指令。这里的 MDM Server 很关键,苹果没有统一的 MDM 服务,需要我们自己按照苹果的协议去实现。但是也不用担心,开源世界给我们提供了很好的工具,具体部署和使用方法见下文。
- MDM 服务向苹果 APNs 推送消息。注意,这里只是推送一个“有新 MDM 命令”的消息,不会携带 MDM 指令详情。
- 设备向 MDM 服务获取指令详情并回复响应数据。
上图中的 APNs 就是 Apple Push Notification service,iOS上所有的推送消息都是通过这个服务到达用户设备上的(如微信消息),这套机制大家应该很熟悉。MDM 消息不同点是不会让用户感知到,无任何提示。
这里有个问题,为什么 MDM 服务不直接给设备发指令 ,而是要通过 APNs 通知呢? 如果直接给设备发指令,需要服务和设备直接保持长连接,功耗会增加。所以 MDM "复用"了 APNs 这个 iOS 的统一推送服务,无需为设备增加额外的长连接。
解决了我的哪些问题
下面是我使用过的功能,对于建设一个标准化自动化测试机房来说非常有用。
- 每台设备手动连接办公 Wi-Fi,费时费力
- iOS 系统升级弹窗频繁出现,影响自动化测试工作,容易误操作升级(通过系统全局 HTTP 代理实现,将 iOS 检查更新请求代理到不存在的网址)
- 自动设置 http 代理,方便开发调试查看网络流量
- 限制用户设置网络代理、限制 Wi-Fi 被关闭,防止设备无法访问互联网
- 新设备初始化速度慢,需要手动操作通过设置引导(注册到 MDM 时可跳过设置向导,详见下文)
- 安装企业级应用后需要手动信任开发者(通过 MDM 安装的企业级应用,开发者会被自动信任)
- 自动安装 App Store 应用(只需要提供应用 BundleID,就可以自动在已登录 App Store 账号的设备上自动安装应用)
- 开启和关闭 AirPlay 操作复杂易出错(远程控制开关 AirPlay)
结语
MDM 内容比较多,所以我分两篇文章呈现。上篇主要是入门和原理性的内容,到此结束。下篇主要是 MDM 系统搭建和设备注册到 MDM 等动手实战的内容,近期面世,敬请期待。