蘋果企業(yè)級MDM

根據(jù)2013年蘋果為企業(yè)級MDM提供的文檔 得出以下結(jié)論

一、蘋果MDM可以提供的功能

1、概述:

a、基本工作流程

蘋果企業(yè)級MDM方案通過提供一種叫做Configuration Profiles的文件來實(shí)現(xiàn)企業(yè)級MDM的安全驗(yàn)證;通過IOS MDM COMMAND來實(shí)現(xiàn)的各種功能。

這種Configuration Profiles文件實(shí)際上是一種XML文件,包含了使設(shè)備同企業(yè)級系統(tǒng)協(xié)作的權(quán)限。

這種文件是被簽名和加密過的,所以無法改變,也無法分享給其他機(jī)器。

這種文件被安裝在設(shè)備上,安裝的途徑如下:

a、使用蘋果官方的「iPhone 配置實(shí)用工具.app」創(chuàng)建描述文件,將配置描述文件安裝到通過 USB 端口與電腦連接的設(shè)備上;

b、通過電子郵件或網(wǎng)頁分發(fā)配置描述文件;

上述兩種方式是常規(guī)的配置文件安裝方式

企業(yè)級MDM安裝方式如下:

c、移動(dòng)設(shè)備管理服務(wù)器,則可以分發(fā)僅包含服務(wù)器配置信息的初始描述文件,然后讓設(shè)備以無線方式獲取所有其他描述文件。

它的工作流程如下:


第一步:將包含了Third-Party MDM Server信息的Configuration Profile發(fā)送到設(shè)備。這將會(huì)給用戶呈現(xiàn)哪些信息將會(huì)被第三方服務(wù)器管理和查詢。

第二步:設(shè)備安裝Configuration Profile。

第三步:設(shè)備接入,第三方服務(wù)器驗(yàn)證設(shè)備允許接入。

第四步:第三方服務(wù)器通過蘋果推送服務(wù)器向設(shè)備發(fā)送推送通知,來通知設(shè)備執(zhí)行管理和查詢等操作。(這里涉及到蘋果系統(tǒng)推送通知,后文會(huì)介紹)

第五步:設(shè)備執(zhí)行完任務(wù)后,直接與第三方服務(wù)器通信,發(fā)送執(zhí)行結(jié)果。

b、IOS MDM COMMAND

在第四步里,設(shè)備執(zhí)行管理和查詢操作是通過IOS MDM COMMAND來實(shí)現(xiàn)的,它實(shí)現(xiàn)了一種 MDM COMMAND的協(xié)議

所有的指令都是通過plist屬性文件來完成的

比如 下面是一個(gè)請求UUID信息的command的plist。它定義了RequestType、具體的Command指令


請求的響應(yīng)也是通過plist文件呈現(xiàn)的,如下


蘋果企業(yè)級MDM并不是提供私有API接口,而是將私有API接口的調(diào)用包裝起來,僅僅提供這個(gè)包裝的接口。

企業(yè)級MDM通過這種方式來保護(hù)內(nèi)部API的調(diào)用機(jī)制。

2、提供的功能

a、設(shè)備信息查詢


b、設(shè)備管理


簡單的說 就是提供了以下功能

保證設(shè)備安全:遠(yuǎn)程鎖定設(shè)備、遠(yuǎn)程擦除設(shè)備數(shù)據(jù)等

獲取設(shè)備信息:如IMEI、UDID等

應(yīng)用分發(fā):非越獄用戶可以不通過AppStore下載應(yīng)用程序、MDM擁有下載安裝app的接口

設(shè)備配置:管理員可以通過遠(yuǎn)程向iOS設(shè)備推送配置文件,配置設(shè)備的網(wǎng)絡(luò)連接、網(wǎng)絡(luò)安全和應(yīng)用程序設(shè)置等

備份和恢復(fù):可以將設(shè)備上的數(shù)據(jù)遠(yuǎn)程備份到指定的服務(wù)器上

二、蘋果MDM申請布置流程

1、基本流程

參考:http://www.lxweimin.com/p/fef831dfe12c

基本步驟如下

a、申請企業(yè)開發(fā)者賬號(hào);(個(gè)人開發(fā)者賬號(hào)不能申請MDM證書)(這一步據(jù)說需要至少一個(gè)月的時(shí)間)

b、申請MDM證書;

c、配置MDM服務(wù)器,生成Configuration Profile、MDM證書,并將它們安裝在設(shè)備上

d、推送通知,執(zhí)行MDM命令,獲取結(jié)果

2、推送機(jī)制

這里順便提一下IOS系統(tǒng)的推送機(jī)制(了解的同學(xué)可跳過)

蘋果的推送有兩種:本地推送、遠(yuǎn)程推送。這里企業(yè)級MDM推送指令是使用的遠(yuǎn)程推送。

a、申請推送證書。這個(gè)證書是用來驗(yàn)證開發(fā)者和對應(yīng)的開發(fā)應(yīng)用的,同時(shí)這個(gè)證書還用來生成每臺(tái)設(shè)備的UDID。

b、app請求使用推送功能,蘋果推送服務(wù)器會(huì)通過它的推送證書為這臺(tái)設(shè)備生成一個(gè)UDID發(fā)送給設(shè)備。

c、設(shè)備拿到UDID后,保存起來,并發(fā)送給自己的服務(wù)器存儲(chǔ)起來。

b、每當(dāng)有遠(yuǎn)程推送需求的時(shí)候,自己的服務(wù)器將向蘋果服務(wù)器發(fā)送一個(gè)指令,要給哪臺(tái)設(shè)備(UDID)發(fā)送怎樣的推送,然后由蘋果服務(wù)器給設(shè)備發(fā)送推送通知。(當(dāng)然,在注冊使用推送的時(shí)候,用戶要同意接收這個(gè)app的推送通知)

三、用與不用蘋果MDM的區(qū)別

1、當(dāng)前實(shí)現(xiàn)的demo中介紹

手機(jī)狀態(tài)監(jiān)控模塊實(shí)現(xiàn)如下:

地理位置同步 模塊實(shí)現(xiàn)如下:

應(yīng)用列表管理模塊實(shí)現(xiàn)如下:

2、用與不用MDM企業(yè)級的區(qū)別

由于MDM中涉及到的功能基本都是需要使用apple的私有API的。

而使用私有API的風(fēng)險(xiǎn)如下:

a、不清楚蘋果內(nèi)部調(diào)用這些特定私有API的機(jī)制。也不清楚這些機(jī)制會(huì)不會(huì)隨著版本的變更而變動(dòng)。

如,獲取應(yīng)用管理列表這個(gè)功能里,需要事先獲取LSApplicationWorkspace的defaultworkspace,然后再在里面獲取每一個(gè)應(yīng)用的信息合集LSApplicationProxy。

如,短信監(jiān)聽里 需要在IMDaemon中_loadServices里去調(diào)用didReceiveMessage函數(shù)。直接調(diào)用didReceiveMessage是沒用的。

b、API隨著系統(tǒng)版本的提升不斷的改變。

如,鎖屏API 在IOS5、6、7中可以調(diào)用GraphicsServices.framework/GraphicsServices中的GSEventLockDevice()函數(shù);在8、9中GraphicsServices.framework/GraphicsServices已經(jīng)沒有這個(gè)函數(shù)了

如,獲取IMEI函數(shù) 在IOS5、6中可以通過[self?coreTelephonyInfoForKey:@"kCTMobileEquipmentInfoIMEI"];在IOS7中可以通過getValue(@"device-imei");來實(shí)現(xiàn) 在IOS8、9中均失效

可以肯定的是,apple將會(huì)逐步完善保護(hù)私有API不被泄露使用,同時(shí)apple內(nèi)部的API調(diào)用機(jī)制不被人知。

class-dump可以dump出OC函數(shù),然而并不能dump出C函數(shù),apple正是逐步將隱私API轉(zhuǎn)換成C函數(shù)。

不用蘋果MDM并不是不能夠開發(fā)出企業(yè)級MDM的功能(如上面所述也開發(fā)出來了應(yīng)用列表管理),只不過以上的風(fēng)險(xiǎn)使得開發(fā)的難度變得很大,難度主要在

a、不同IOS版本各種功能的適配

b、搞清楚這些API的調(diào)用機(jī)制、這些API的變動(dòng)需要花費(fèi)非常多的時(shí)間

c、目前系統(tǒng)內(nèi)部并沒有一套完善的解析IOS系統(tǒng)內(nèi)部機(jī)制的方法(應(yīng)該要使用逆向工程);以上開發(fā)出來的功能都是我在網(wǎng)上找的,網(wǎng)上有的就可以試試,沒有的就沒辦法了

而使用蘋果企業(yè)MDM 仍然無法了解其系統(tǒng)內(nèi)部的機(jī)制 原因在IOS MDM COMMAND中有闡述過

使用蘋果企業(yè)MDM 除了第一、二部分介紹的流程外,強(qiáng)調(diào)一點(diǎn):

它不需要使用app,僅僅需要在手機(jī)上配置描述文件(Configuration Profile)、建立服務(wù)器即可。

參考資料:http://blog.csdn.net/zhaoxy_thu/article/details/10473193

2、描述文件安全概覽

http://www.lxweimin.com/p/fef831dfe12c

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,523評論 25 708
  • 老爸覺得這盒子好看 讓我?guī)砗贾?一開始 我是拒絕?的 公司小零件太多 什么筆削 鏡子 ?? 如今一掃而光 安安靜...
    PWong閱讀 355評論 0 0
  • 邊際人脈 翻看自己的微信聯(lián)系人Or QQ好友,數(shù)一數(shù)未來1.2年內(nèi)甚至一輩子都很有可能見不到一次面的朋友有多少,最...
    井底浛閱讀 1,379評論 0 3