MDMを使って業務用アプリの初期設定を自動化する技術
iOSDC Japan 2021MDMを使って業務用アプリの初期設定を自動化する技術@oishi
View Slide
大石 裕一株式会社フィードテイラー2008〜 iPhoneアプリ開発事業2010〜エンタープライズiOSアプリ開発・導入支援事業2016 iOSアプリ開発事業整理2020〜 エンタープライズiOS 研究所 設立@oishi
エンタープライズiOS研究所 ( https://www.micss.biz/ )
MDM (Mobile Device Management)iOSManaged App ConfigurationABM (Apple Business Manager)Single App ModeASAM (Autonomous Single App Mode)VPP (Volume Purchase Program)ADP (Apple Deployment Program)ADEP (Apple Developer Enterprise Program)DEP (Device Enrollment Program)Apple Configurator2 Configuration ProfileCustom AppCustom B2BGuided AccessPer App VPNSupervised ModeApple VAR
MDM (Mobile Device Management)iOSManaged App ConfigurationABM (Apple Business Manager)Single App ModeASAM (Autonomous Single App Mode)VPP (Volume Purchase Program)ADP (Apple Deployment Program)ADEP (Apple Developer Enterprise Program)Apple Configurator2 Configuration ProfileCustom AppCustom B2BGuided AccessPer App VPNSupervised ModeApple VARキーワード多すぎ!なエンタープライズiOSの世界を俯瞰する iOSDC2020
Managed App Configuration(MDMからアプリ用の設定値を配布する仕組み)
「企業ごとに異なるが、同一企業内では一緒」の初期設定値サーバURL業務用アプリあるある
A. 初回のみだが、全従業員に入力して貰うB. 全従業員分を入力してから、端末配布するC. 設定値埋め込みの自社専用ビルドを依頼するサーバURL従業員が数人なら良いが500人なら...500人全員にこの設定を?
App Store Connect ABM MDMApp StoreManaged App Configuration を使うと...
App Store Connect ABM MDMApp StoreAppManaged App Configuration を使うと...
App Store Connect ABM MDMApp StoreAppManaged App Configuration を使うと...App Configserverurl = https://feedtailor.example.com/
MDMから配布される値を参照して起動時に自動設定https://feedtailor.example.com/Zero Touch AppConfiguration🙌😀
MDMから配布される値を参照して起動時に自動設定https://feedtailor.example.com/Zero Touch AppConfiguration🙌😀● 起動するだけ● 顧客ごとのビルドは不要=ソース管理1本化
App Store Connect ABM MDMApp StoreApp送り手と受け手の連携
MDM側● Managed App Configuration 対応が前提● 配信するアプリの付随情報として key - value を登録BizMobile Go!
アプリ側専用キーを指定して UserDefaults から dictionary を取得
公式サンプルhttps://developer.apple.com/library/archive/samplecode/sc2279/Introduction/Intro.html
jamfによる公開ソースhttps://github.com/jamf/ManagedAppConfigLib
具体例1Managed App ConfigurationなしManaged App Configurationあり
具体例2https://feedtailor.example.com/list.jsonhttps://example.com/list.jsonorganization = feedtailor一般ユーザ向けアプリを企業向けカスタマイズ版アプリとして提供する実験
具体例3AppStoreから個人端末に業務用アプリをインストールして使用することを阻止
具体例3AppStoreから個人端末にインストールして使用することを阻止lineworks_key= xxxxxxxxxxxxxxxLINE WORKS会社端末UserCompanyPasswordlineworks_key個人端末UserCompanyPassword
Managed App Configuration に必要なもの● Managed App Configuration 対応のMDM● MDMサービス上での key-value 登録● MDMにチェックイン済みのiOS端末● Managed App Configuration 用のアプリ側実装● Apple Business Manager※ iOS端末は監視モード(Supervised Mode)でなくても良い
端末ごとに異なる値も入れてあげたい応用技https://feedtailor.example.com/🤔
端末ごとに異なる値を指定できるMDMもある(変数展開)応用技deviceiddeviceid
ABM MDMApp StoreApp Configdeviceid = $device_idApp
ABM MDMApp Storedeviceid = FT-01 deviceid = FT-03 deviceid = FT-05
ABM MDMApp Storedeviceid = FT-01 deviceid = FT-03 deviceid = FT-07Settings InfoServerFT-03用の設定下さい JSON for FT-03自前の設定情報サーバを用意すれば端末ごとに異なる設定も自由自在
変数展開されたMDM由来の値を参照してデバイス毎に自動設定https://feedtailor.example.com/Zero Touch App Configuration😀testuser03テストユーザ03
Do not store passwords or privatekeys in these dictionaries.
App Store Connect ABM MDMPUBLICPRIVATEPRIVATE
App Store Connect ABM MDMPUBLICPRIVATEPRIVATEDEVELOPMENT DEPLOYMENT
MDMプロトコルリファレンスhttps://developer.apple.com/business/documentation/MDM-Protocol-Reference.pdfManaged App Configuration 公式サンプル (Objective-C)https://developer.apple.com/library/archive/samplecode/sc2279/Introduction/Intro.htmlGitHub : jamf/ManagedAppConfigLib (swift)https://github.com/jamf/ManagedAppConfigLibLINE WORKS ヘルプセンター - 外部MDM連携https://guide.worksmobile.com/jp/admin/admin-guide/security/mobile-security/3rd-party-mdm/キーワード多すぎ!なエンタープライズiOSの世界を俯瞰する (@iOSDC2020)https://www.youtube.com/watch?v=j3LHNwhUHZQ参考資料