MicroMDMとKMFDDMで宣言型デバイス管理を試す
宣言型デバイス管理ってなに?
私も詳しくはわかっていないけど 端末の設定情報を把握するのにMDM(モバイルデバイス管理)では定期的にサーバ側から更新しないといけないのが DDM(宣言型デバイス管理)では端末自身が更新をサーバに送信して同期を行える仕組みとのこと
MDMのイメージ
MDM+DDMのイメージ
WWDC(動画)
※日本語字幕できます
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.1micromdm
: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
検証手順
以下を参照
↓
$ ./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" } ] } ] } $
とりあえず、ここまで