見出し画像

備忘! Mac の Jamf Proへの再登録方法

Jamf Proの運用をしていると、端末登録時のネットワーク瞬断等で不完全な登録になったり、何らかの原因でプロファイルやバイナリが破損することがあります。その際のリカバリとして再登録を行うこともあると思います。

今回は備忘として、Mac の Jamf Proへの再登録方法をまとめます。

概要

MacのJamf Proへの再登録にはいろいろな方法がありますが、今回は下記5パターンの登録方法をご紹介します。

  1. 管理外にしてからユーザによる登録
    (User Initiated Enrollment ・ Webエンロール)

  2. 管理外にしてからTerminalからprofilesコマンドで再登録

  3. APIを使用して管理フレームワークを再配備して再登録

  4. QuickAddパッケージのダウンロード&インストール

  5. enrollコマンドで管理ユーザを指定してエンロール

それぞれの方法が利用できる前提や、良い点・イマイチな点についても可能な範囲でコメントしたいと思います。

再登録方法の詳細

1. 管理外にしてからユーザによる登録
(User Initiated Enrollment ・ Webエンロール)

自動デバイス登録対象外の端末向けの対応です。
一旦、端末の登録を解除してからユーザによる登録を実施します。

■ 1. の手順
1−1. 下記リンクの方法で端末の登録を解除します

リモートコマンドの発行ができない場合、
システム環境設定>プロファイル もしくはターミナルから「MDM Profile」を選択して直接削除して下さい。
(このタイミングでMDMから配布したプロファイルはすべて削除されます)

※自動デバイス登録等でプロファイルの直接削除ができない場合、パターン2以降の手順をお試し下さい。

1−2. ブラウザのURL欄に下記の入力をして、ユーザによる登録を実施します

https://インスタンス名.jamfcloud.com/enroll

■1. の方法が採用できる前提
・手元に端末がある
・管理者権限でプロファイルの削除やインストールができる

■1. の良い点 ○・イマイチな点 ✕
 ○ : すべて画面操作で実施できてわかりやすい
  ✕ : 端末利用者側の作業が多い


2. 管理外にしてからTerminalからprofilesコマンドで再登録

自動デバイス登録対象の端末向けの対応です。
一旦、端末の登録を解除してから、ターミナルから自動デバイス登録でエンロールします。

■ 2. の手順
2−1. 端末の登録を解除します
1. と同じく下記のリンクを参考にして下さい。

2−2. 再登録対象の端末のターミナルから下記の入力をして、自動デバイス登録します

sudo profiles renew -type enrollment

下記のような画面が表示されますのでクリックして登録に進んで下さい。
(画面右上の時計のあたり。通知センターに入っていることもあるので表示されない場合はそちらもご確認下さい。)

この画面をクリックして登録に進んで下さい
次はこの画面が表示されますので「許可」します

この後の管理者権限の認証画面で認証するとプロファイルがインストールされま
す。

なお、管理外にしなかった場合でも、プロアファイルの更新が可能なケースもあるので、プロファイルの削除ができなかった場合でもそのままお試し下さい。
その際に表示されるプロファイル更新画面は下記のとおりです。

この画面をクリックしてアップデートに進んで下さい
次はこの画面が表示されますので「アップデート」します

■2. の方法が採用できる前提
・手元に端末がある
・管理者権限でプロファイルの削除やインストールができる

■2. の良い点 ○・イマイチな点 ✕
 ○ : 自動デバイス登録できる
  ✕ : 端末利用者側でターミナル操作が必要になる


3. APIを使用して管理フレームワークを再配備して再登録

Jamf Pro のバージョン10.36.0から利用可能になった、Jamf Pro API の jamf-management-frameworkを使用して管理フレームワークを再配備して再登録する方法です。
端末の登録を解除することなく、リモートから再登録することができます。

■ 3. の手順
3−1. 対象端末のコンピュータIDを確認します
インベントリ情報の一般ペイロードの項目「Jamf Pro コンピュータ ID」もしくは、インベントリ情報URLの中にあるidから、コンピュータIDを特定することが可能です。

3-1. コンピュータIDの確認

3−2. Jamf Pro API画面を開きます
下記のURLのAPIのページから、Jamf Pro APIの画面を開いて下さい。

https://インスタンス名.jamfcloud.com/api

3−2. Jamf Pro API画面を開く

3−3. Jamf Proサーバの管理者権限ユーザで認証してトークンを生成します
画面上部に認証欄があるので、そこから認証して下さい。

3−3. Jamf Proサーバの管理者権限ユーザで認証してトークンを生成する

3−4. コンピュータIDを指定してAPIを起動します
[Try it out]ボタンを押下して表示された、ID入力欄へコンピュータIDを入力して [Execute] ボタンを押下して下さい。

3−4. コンピュータIDを指定してAPIを起動する

3−5. 処理結果を確認します
実行後、2〜3分程度待つと処理結果が確認できるようになります。
それぞれの端末のインベントリ情報にて、下記のような項目で再登録結果の確認をして下さい。

  • 最終登録が更新されている

  • 最終チェックインが更新されている

  • インベントリの最終アップデートが更新されている

  • 「管理」タブにリモートコマンドの実行ボタンが表示されている(=Managedであることの確認)

■3. の手順番外 スクリプトを使用する方法
APIを使用した方法については、下記リンク先のようなスクリプトを使用して直接ターミナルから実施したり、Jamf Pro のポリシーから実施することも可能です。

https://github.com/Magichat-Inc/Jamf-Pro_Script/blob/main/redeployJamfManagementFramework.sh

<注意>
・変数  jss_url, api_user, api_pw, computer_id は適宜変更して下さい。
・computer_id を複数件指定することも可能です。

#!/bin/bash

# Server connection information
jss_url="https://example.jamfcloud.com"
api_user="Username_Here"
api_pw="Userpassword_Here"

# computer_id will have all the affected Macs ID that needs to send this command via API.
# Please include with the bracket like below separate with comma
# computer_id="{n,n,n}"
# Single Target
computer_id=n

# Create a Basic token with base64 encoded
basic_token=$(printf $api_user:$api_pw | /usr/bin/iconv -t ISO-8859-1 | /usr/bin/base64 -i - )

# Create an API token based on Basic token
api_token=$(curl -s -X POST "$jss_url/api/v1/auth/token" -H "accept: application/json" -H "Authorization: Basic $basic_token" | grep 'token' | sed -r 's/^[^:]*:(.*)$/\1/' | tr -d "\",")

# Redeploy Jamf Management Framework
curl -X POST \
--url "$jss_url/api/v1/jamf-management-framework/redeploy/$computer_id" \
--header "accept: application/json" \
--header "Authorization: Bearer $api_token"

# Invalidate token
curl "$jss_URL/uapi/auth/invalidateToken" \
--silent \
--request POST \
--header "Authorization: Bearer $api_token"

exit 0

■3. の方法が採用できる前提
・端末がJamf Pro に登録されていること

■3. の良い点 ○・イマイチな点 ✕
 ○ : すべて管理者側で実施でき、 端末利用者側の作業がない
   (これはスバラシイ!!)
 ○ : スクリプトを使用することで複数件の一括処理が可能


4. QuickAddパッケージのダウンロード&インストール

こちらは3の変形版で、Jamfバイナリのダウンロードとインストールを
端末側で実施する方法です。

■ 4. の手順

4−1. ブラウザのURL欄に下記の入力をして、QuickAddパッケージのダウンロード&インストールをします

https://インスタンス名.jamfcloud.com/enroll/?type=QuickAdd

通常のWebエンロールと同様、ログイン画面が表示されるので認証すると
QuickAddパッケージがダウンロードされるので、インストールをしてください。
以下が表示される画面の例

Jamf Proの「登録のみ」権限もしくは「管理者権限」等
登録可能なユーザでログインする
そのままEnrollでOK
Downloadボタンを押下
Finderから右クリックで「開く」。ダブルクリック
では開けないので注意
「開く」ボタンを押下
管理者権限ユーザで認証
途中、アプリやサービスへのアクセス許可確認のダイアログが出る場合
は許可して下さい
登録完了。インベントリの最終登録日時が書き換わっていることを確認して下さい

■4. の方法が採用できる前提
・手元に端末がある
・管理者権限でパッケージのインストールができる

■4. の良い点 ○・イマイチな点 ✕
 ○ : すべて画面操作で実施できてわかりやすい
  ✕ : 端末利用者側の作業が多い


5. enrollコマンドで管理ユーザを指定してエンロール

端末切替時など移行アシスタント等でユーザーアカウントを移行した場合などで、下記のようなデバイス証明書無効のエラーが発生して他の手段での再登録ができない場合にお試しいただきたい方法です。

There was an error.
Device Signature Error - A valid device signature is required to perform the action.

このエラーは、移行ツールによって管理ユーザの情報等を含むJamf Proの設定情報が、移行元の Jamf Pro 登録情報で上書きされた場合に発生します。
その場合、Mac での管理ユーザを指定して新たにデバイス証明書を再作成してエンロールすると改善することがあります。

■ 5. の手順

5−1. 管理者権限ユーザで、ターミナルから下記のコマンドを実行します

sudo jamf enroll -prompt

5−2. 下記の通りプロンプトが表示されますので、入力します

Password    :実行ユーザのパスワード
JSS Username :jamf Proの「管理者」権限ユーザーのUsername(この対応専用のユーザーを作っておくことをおすすめします)
JSS Password :上記「管理者」権限ユーザーのPassword
SSH Username :実行ユーザのユーザネーム (この端末のJamf Pro管理用アカウントになるユーザ)
SSH Password :実行ユーザのパスワード

5−3. 下記のように表示されたら(Enroll return code: 0)正常終了です

ターミナルへの出力内容

■5. の方法が採用できる前提
・手元に端末がある
・管理者権限でプロファイルのインストールができる
・利用者 (作業者) 側でJamf Proの管理者権限アカウントを所持している

■5. の良い点 ○・イマイチな点 ✕
 ○ : Jamf Proサーバーとの通信ができなくなった端末をプロファイルを削除せずに再登録ができること。
自動デバイス登録の端末でMDMプロファイルの削除を禁止している場合、初期化以外に端末をJamf Proの管理外にする事ができなくなるため、この方法で初期化を免れることができます
  ✕ : 端末利用者側でターミナル操作が必要になる
  ✕ : 作業の過程で、本来利用者に秘密にしておくべきJamf Pro用アカウント(Jamf Agentの起動ユーザ情報)を利用者に知られる可能性がある


おわりに

いろいろな方法をご紹介いたしましたが、基本的には下記のような流れで実施いただくとよいです。

<MDMプロファイルを削除してから再登録する方法>
自動デバイス登録かそうでないか?によってパターン1 or 2を実施する
 ・自動デバイス登録ではない場合、パターン1を実施
 ・自動デバイス登録の場合、パターン2を実施
  ↓
<MDMプロファイルの削除を伴わない方法>
パターン3の実施(パターン4でもよい)
  ↓
上記の流れで対応できない場合、パターン5を実施

再登録を行うような状況にはならないほうがよいですが、そうなってしまった場合は、本記事を参考にしていただければ幸いです。

以上、 エンジニアの中峯が担当いたしました。
最後まで読んでいただき、ありがとうございました。


新しい記事の情報をツイッターで報告しておりますので是非@magichat2011もフォローして下さい!