引言

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 的介绍是这样的:

通过部署移动设备管理 (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 下发命令流程

  1. 首先看下图的 Enroll 箭头,这是整个流程的准备阶段,意思是设备需要先注册到 MDM。这个操作只需要进行一次,只要设备没有退出 MDM,这个步骤不需要再发生。
  2. 向 MDM 服务下发指令,MDM 服务缓存指令。这里的 MDM Server 很关键,苹果没有统一的 MDM 服务,需要我们自己按照苹果的协议去实现。但是也不用担心,开源世界给我们提供了很好的工具,具体部署和使用方法见下文。
  3. MDM 服务向苹果 APNs 推送消息。注意,这里只是推送一个“有新 MDM 命令”的消息,不会携带 MDM 指令详情。
  4. 设备向 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 等动手实战的内容,近期面世,敬请期待。

iOS MDM HeadFirst的更多相关文章

  1. Apple iOS MDM service 简介

    Apple iOS MDM service 簡介 藉由MDM服務,企業可以用來控管配發給員工的iOS Device.可以採用Apple官方推出的工具,也可以採用第三方開發的服務. MDM server ...

  2. Apple iOS MDM开发流程

    一年前曾参与过中石油的一个移动平台项目,实现了通过MDM对iOS设备进行管理.由于苹果对于mdm这块的接口及开发流程只向几个合作伙伴进行了分享,并没有对具体实现的文档进行公开,所以这方面的资料非常少. ...

  3. [转]iOS hacking resource collection

    Link:http://www.securitylearn.net/tag/apple-ios-hacking-slides/ A collection of iOS research present ...

  4. ios设备mdm的实现过程

    一)配置IIS加密连接,ios系统升级7.1后已经无法使用http进行企业内部署,为了满足mdm的加密需求以及大厅的初始化安装需要进行生成自签名证书 1)配置MIMEcer application/x ...

  5. MDM基于IOS设备管控功能的所有命令介绍

    前面我们介绍了IOS上MDM几个简单的控制命令的发送和返回数据的解析处理,下面我们介绍一下MDM涉及到的命令的操作介绍: 一.Control Commands(控制类命令) 1.Device Lock ...

  6. 基于IOS和Android设备MDM技术方案服务价格

    导读:前段时间 www.mbaike.net 博客被恶意攻击,导致程序崩溃,目前已经替换了以前的Wordpress程序,现提供IOS和Android版本MDM的代码和相关文档咨询服务. 一.IOS版M ...

  7. 转:基于IOS上MDM技术相关资料整理及汇总

    一.MDM相关知识: MDM (Mobile Device Management ),即移动设备管理.在21世纪的今天,数据是企业宝贵的资产,安全问题更是重中之重,在移动互联网时代,员工个人的设备接入 ...

  8. 基于IOS上MDM技术相关资料整理及汇总

    (转自:http://www.mbaike.net/special/1542.html) 一.MDM相关知识:MDM (Mobile Device Management ),即移动设备管理.在21世纪 ...

  9. 苹果的MDM简介

    MDM(Mobile Device Management)移动设备管理,一般会用于企业管理其移动设备,鉴于iOS是比较封闭的系统很多的功能都难以实现,所以利用苹果的MDM可以达到远程控制设备,像远程定 ...

  10. iOS开发:开发证书知识点总结

    1. Error: An App ID with identifier "*" is not avaliable. Please enter a different string. ...

随机推荐

  1. windows内核学习一

    变量类型 kernel user ULONG unsigned long PULONG unsigned long* UCHAR unsigned char PUCHAR unsigned char* ...

  2. JVM系统参数

    JVM(Java虚拟机)是Java程序的运行环境,它可以通过一些系统参数进行配置和优化.以下是一些常用的JVM系统参数: 1. -Xmx: 用于设置JVM堆的最大内存大小.例如,-Xmx1g表示将堆的 ...

  3. PyInstaller 完美打包 Python 脚本,输出结构清晰、便于二次编辑的打包程序

    引入问题 如果我要写一个 Python 项目,打包成 exe 运行(方便在没有 Python 的电脑上使用),我需要打包出的根目录结构美观,没有多余的.杂乱的依赖文件在那里碍眼,而且需要在发现 bug ...

  4. 使用numpy计算分子内坐标

    技术背景 当我们打开一个用于表示分子构象的xyz文件或者pdb文件,很容易可以理解这种基于笛卡尔坐标的空间表征方法.但是除了笛卡尔坐标表示方法之外,其实也有很多其他的方法用于粗粒化或者其他目的的表征方 ...

  5. Spring Boot集成Dubbo 3.X

    关注王有志,一个分享硬核Java技术的互金摸鱼侠 欢迎加入Java人的提桶跑路群:共同富裕的Java人 上一篇我们一起认识了Dubbo与RPC,今天我们就来一起学习如何使用Dubbo,并将Dubbo集 ...

  6. Blazor前后端框架Known-V1.2.2

    V1.2.2 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行. 概述 基于C#和Blazor实现的快速开发框架,前后端分离,开箱即用. 跨平台,单 ...

  7. 聊天室(二)__ unipush 推送实现详细教程

    一.推送作用 推送作用我就不废话了,能做推送的都知道作用,直接上干货. 二.unipush 快速开通   Dcloud 开发者实名认证注册账号,绑定对应的 app 信息. uni-push产品有2个入 ...

  8. Vue基础技术之——数据绑定

    Vue数据大致绑定分为两类: 1.单向数据绑定(v-bind): 数据只能从data流向页面. 2.双向数据绑定(v-model):数据不仅能从data流向页面,还能从页面流向data. 话不多说,先 ...

  9. 即构SDK新增焦点语音功能,可实现特定用户语音的聚焦

    2021年,即构SDK每月迭代如期而至.今年,我们会着重介绍每月SDK的重要新增功能,让大家更清晰的了解到这些新功能的特性及应用场景. 重点新增功能 多人语音通话场景下的焦点语音功能 功能介绍 即构S ...

  10. 教师节专题:AI互动课来了,即构方案助推在线教育创新升级

    打开热门综艺,乘风破浪的姐姐们告诉你"用瓜瓜龙英语给孩子启蒙":走出家门,电梯口.公交站的大幅广告跟你说"2-8岁上斑马". 如果说去年的AI互动课还是浮于媒体 ...