m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

MicroMDMとKMFDDMで宣言型デバイス管理を試す

宣言型デバイス管理ってなに?

私も詳しくはわかっていないけど 端末の設定情報を把握するのにMDM(モバイルデバイス管理)では定期的にサーバ側から更新しないといけないのが DDM(宣言型デバイス管理)では端末自身が更新をサーバに送信して同期を行える仕組みとのこと

MDMのイメージ

MDM+DDMのイメージ

WWDC(動画)

developer.apple.com

developer.apple.com

developer.apple.com

※日本語字幕できます

appleのリファレンスはこの辺

・Leveraging the declarative management data model to scale devices https://developer.apple.com/documentation/devicemanagement/leveraging_the_declarative_management_data_model_to_scale_devices?language=objc
・Enable Declarative Management https://developer.apple.com/documentation/devicemanagement/enable_declarative_management?language=objc
・Declarative Management Checkin https://developer.apple.com/documentation/devicemanagement/declarative_management_checkin?language=objc
・Declarations https://developer.apple.com/documentation/devicemanagement/declarations?language=objc

前置き長いけどここから今回やること

MicroMDMの設定とKMFDDMの設定を組み合わせて、DDMの処理を行う

条件

  • kmfddm:v0.4.1
  • micromdm:v1.11.0

KMDDDM設定

ダウンロードして、解凍

cd
mkdir -p kmfddm
cd kmfddm/
wget https://github.com/jessepeterson/kmfddm/archive/refs/tags/v0.4.1.zip
unzip v0.4.1.zip

ビルド&起動

cd kmfddm-0.4.1/
make
./kmfddm-linux-amd64 \
    -api supersecret \
    -enqueue 'https://mdm.ryuouen.link/v1/commands/' \
    -enqueue-key mshige1979mdmtest \
    -micromdm \
    -debug
  • -api:KMFDDMへコマンドを実行するためのキー
  • -enqueue:MicroMDMへコマンドを実行するURL
  • -enqueue-key:MicroMDMへの認証用APIキー
  • -micromdm:MicroMDM用のパラメータ変換用パラメータ、NanoMDMでは不要
  • -debugデバッグログがたくさん出ます

MicroMDM設定

起動

sudo build/linux/micromdm serve \
  -server-url=https://mdm.ryuouen.link \
  -api-key mshige1979mdmtest \
  -filerepo /home/ec2-user/micromdm/micromdm-1.11.0 \
  -tls-cert /etc/letsencrypt/live/mdm.ryuouen.link/fullchain.pem \
  -tls-key  /etc/letsencrypt/live/mdm.ryuouen.link/privkey.pem \
  -print-flags \
  -http-debug \
  -dm 'http://[::1]:9002/'

検証用準備

環境変数設定

export BASE_URL='http://[::1]:9002'              # kdfddmの初期値
export API_KEY='supersecret'                     # kmfddmのキー
export ID="00008110-9999999999999E" # 端末のUDID

検証手順

以下を参照

github.com

$ ./tools/api-status-declaration-get.sh $ID | jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   452  100   452    0     0  85010      0 --:--:-- --:--:-- --:--:-- 90400
{
  "00008110-9999999999999E": [
    {
      "identifier": "com.example.act",
      "active": true,
      "valid": "valid",
      "server-token": "06ea4d1bb05926ba",
      "ManifestType": "activations",
      "current": true,
      "status_received": "2023-10-19T00:24:26.096224033Z"
    },
    {
      "identifier": "com.example.test",
      "active": true,
      "valid": "valid",
      "server-token": "9862ef6a61cc5a2c",
      "ManifestType": "configurations",
      "current": true,
      "status_received": "2023-10-19T00:24:26.096224033Z",
      "reasons": [
        {
          "code": "KMFDDMv3"
        }
      ]
    }
  ]
}
$

とりあえず、ここまで

他参考

Apple 宣言的MDMめも

WWDC2021セッション等の要約(1) #iOS - Qiita