Open3

エンタープライズiOSの世界

kamimikamimi

iOSDC Japan 2020: キーワード多すぎ!なエンタープライズiOSの世界を概観する / oishi

https://youtu.be/j3LHNwhUHZQ

標準アプリを見せたくない場合

  • できる

  • Supervised Mode

    • iOSにも2つのモードがある
      • normal→普段使っているモード
      • supervised(監視モード)
  • Apple Configurator2

    • 有線接続した端末の管理
    • 役割
      • 情報収集
      • 制御
      • 設定流し込み
      • アプリ流し込み
  • 構成プロファイル(.mobileconfig

    • XMLで記述できる
    • 作成方法
      • Apple Configurator2
        • 構成プロファイル用のプロファイルエディタがついている
      • MDM
      • スクリプト・手書き
    • 設定内容
      • 例えばSiriを使えないようにする、カメラをオフにするなど
      • supervised modeでないと、有効にならない機能がいくつかある

https://developer.apple.com/business/documentation/Configuration-Profile-Reference.pdf

何台もある場合、全部有線で接続して構成ファイルを流し込みするのか?

  • 難しい...

    • 有線が必要だし
    • macOSが必須
    • Apple Configurator2のみで運用するのは厳しい
  • MDM(Mobile Device Management)

    • 法人におけるiOS端末管理
    • クラウド型のサービス
    • 2桁以上のお客様はクラウドサービスとして契約することが多い
    • ブラウザベース
  • メリット

    • ワイアレス
    • ブラウザベース
    • できること
      • 遠隔情報収集
      • 遠隔制御
      • 遠隔設定配布
        • Apple Configurator2で作成した構成ファイルの配布など
        • MDMのサービス内で作成できるようになっている場合もある
      • 遠隔アプリ配布
        • 特定のアプリをApp Storeからインストールするなど
          • iTunesStore IDを渡す
  • 運用方法

    • MDMをメインとして、Apple Configurator2を補助的に使う
  • いろんなサービスがある

    • MDM Protocol Referenceに従って作られている

https://developer.apple.com/business/documentation/MDM-Protocol-Reference.pdf

  • MDMの仕組み
    • Checkin
      • デバイス側から、MDMへ「あなたの監視下に入ってOKですよ」の設定をする
    • MDMからAPNsを通じて通知する
      • payloadに命令を突っ込んでいるわけではなく、mdmdというデーモンを叩き起こす
    • mdmdがMDMのサーバに対して命令の内容を問い合わせる

AppStoreの有償アプリを全員分購入してインストールしたい

  • Dropboxみたいな

  • 以下の問題があるので、無償アプリのようにiTunesStoreIDを構成ファイルに登録しておくだけではダメ

    • 支払い
    • ライセンス管理
  • ABM(Apple Business Manager)

    • 業務用のアプリ、デバイス、AppleIDを管理するためのサイト
    • 役割
      • 業務用アプリの一括購入/一括入手
        • 監視モードではサイレントインストールが可能。
          • 普通はインストールしていいかの通知が出るが、それが出ずに勝手にインストールされる
      • 業務用アプリのライセンス管理

2019年以降の企業内アプリ配布

  • 2019年以降、Apple Developer Enterprise Programの取得は難しくなり、Custom Appへの誘導がされるようになった

  • 公開すると、ABMのCustom Appで見えるようになる
    • Custom AppでもTestFlightを使うことができる
      • 外部テスト、内部テストどちらも可能

初期導入・追加導入の労力最小化

  • まだ課題がある

    • チェックイン作業を500台もやるのか?
    • 監視モードにするには、遠隔では不可能。どうするか?
  • DEP(Device Enrollment Program)

    • 特別なiOS端末を購入できる法人むけ制度
    • DEP端末と呼ぶ
    • 電源をONにすると、自動チェックイン、自動で監視モードになる!

  • Apple StoreまたはApple VARで発注する
  • DEP端末はABMで一元管理
  • 現地に直接送ってもらう
  • Zero Touch Deploymentと呼ぶ
kamimikamimi

MDMを使って業務用アプリの初期設定を自動化する技術 / oishi

https://youtu.be/RVmVKOlwD-0

Managed App Configurationとは

  • MDMからアプリ用の設定値を配布する仕組み
  • 企業ごとに異なるが同一企業内では一緒の初期設定

  • 以下のようなユースケースの場合に困る
    • 初回のみだが、全従業員に入力してもらう→これ多い
    • 全従業員分を入力してから配布する
    • 設定値埋め込みの自社専用ビルドを依頼する
      • 初期値が元々入るように開発会社側で実装してビルドする
      • お客さんは楽だけど、開発会社は大変

  • MDM上で登録している付随情報として、設定値を任意の個数、設定することができる

  • メリット

    • 起動するだけ
    • 顧客ごとのビルドは不要=ソース管理1本化
  • MDMとApp側双方の対応が必要

    • MDM
      • Managed App Configuratiobn対応が必要
      • 2013のWWDCで発表されたが、ほぼほぼ対応している
    • アプリ側の実装
      • 指定のキーcom.apple.configruation.managedでUserDefaultsから値を取得できる

https://developer.apple.com/library/archive/samplecode/sc2279/Introduction/Intro.html

https://www.appconfig.org/ios/

  • MDMベンダーのjamfがSwiftのコードを公開している

https://github.com/jamf/ManagedAppConfigLib

  • シミュレータではテストできず、MDM配下の実機が必要

  • 一般ユーザ向けアプリを企業向けカスタマイズ版アプリとして提供することもできそう

    • BtoCとBtoB向けでソースコードを変えずに提供できそう

  • MDMによっては、MDM専用のキーを指定することで、こんなこともできる

  • Managed App Configurationに必要なもの

    • Managed App Configuration対応のMDM
    • MDMサービス上でのkey-value登録
    • MDMにチェックイン済みのiOS端末
      • 監視モードである必要はない
    • Managed App Configuration用のアプリ実装
    • Apple Business Manager
      • Inhouseアプリの場合は不要だが、AppStoreの公開アプリまたはCustomApp
  • 端末ごとに異なる値も入れたい

    • MDMによっては、key-valueのvalue側に変数を設定することもできる
    • 大体端末ごとにIDを振って、それぞれ管理していることが多い

  • 各端末の設定値を返すサーバがあれば、それを返すことで実現できる

  • パスワードに関しては、MDM protocol referenceで、センシティブな情報は含めないようにと規定している
    • それに準拠しているベンダーが多い

  • Managed App Configurationが広まらない理由
    • deploymentの世界に存在する技術で、あまりdeploy側の人は目がいかない
    • けどdeveloperの人の力があればできる!

kamimikamimi

App Config Communityとは

  • エンタープライズにおけるモバイルアプリを構成、保護するための一貫性のあるオープンでシンプルな方法のツールとベストプラクティスを紹介するコミュニティ
  • 標準化
  • デバイス管理ベンダーによって支援されている
  • ここで決まったAppConfigスキーマを利用して開発されたアプリは、ここに参画しているベンダー間で一貫して機能する
    • 今まではEMMベンダーによって違う実装をする必要があったが、このコミュウティにそうことで開発するときに固有の統合を必要としなくなる

https://www.optimalbiz.jp/blog/app-config/

https://solutionsreview.com/mobile-device-management/what-is-appconfig-community-and-what-does-it-do-for-the-enterprise/