数分でできる!削除したアプリの再インストール
悪意の有無に関わらず、重要なソフトウェアが削除されるリスクはどこでも発生しえます。対象のソフトウエアが業務上重要なアプリであれば生産性の低下、セキュリティ上重要なものであった場合はセキュリテイ上の脅威にもさらされてしまいます。
今回ブログでは、Jamf Pro と Jamf Protect の強力な組み合わせを利用して、特定のアプリケーションが削除された場合に、自動的に再インストールするための方法をご案内したいと思います。
前提・概要
アプリの削除には以下の2通りあり、
・ゴミ箱に捨てる
・コマンドで削除
それぞれについて Jamf Protect で振る舞いを検知し、Jamf Pro からアプリのインストールを行うワークフローについてご説明いたします。
また、上記に加えてアプリのインストール失敗をリカバリするために1時間毎にアプリのインストール確認とインストールの再試行を行うポリシーの作成についてもご説明いたします。
全体的に操作の流れはこんな感じとなります:
1. Jamf Protect の設定
1-1. Jamf Protect について
Jamf Protect とは? というかたはこちらをご覧ください。
1-2. カスタムAnalyticsの作成
今回は Jamf Protect を使用して2つのシステム動作を検出します:
・特定アプリをゴミ箱へ移動したとき
・特定アプリを削除したとき
上記の挙動を検出するために、カスタムAnalyticsを使用します。
・カスタムAnalyticsの作成方法 (参照)
以下のスクリーンショット、情報にそって、2つのカスタムAnalyticsを作成しておきましょう。
1-2-1. 特定アプリをゴミ箱へ移動したときの検知
Predicateはこちらです:
$event.type == 3 AND $event.path CONTAINS[cd] ".Trash/Adobe\ Acrobat\ Reader." AND $event.prevFile CONTAINS[cd] "/Applications/Adobe\ Acrobat\ Reader.app"
Jamf Pro に Analytics の検出を送信するには、Analytic Actionsにて「Add to Jamf Pro Smart Group」 を選択し、Jamf Protect 拡張属性に入力する値を設定する必要があります。
ここの例では Identifier を「movedAdobeAcrobatReaderToTrash」としていますが、任意の値で結構です。
1-2-2. 特定アプリを削除したときの検知
Predicateはこちらです:
$event.type == 1 AND $event.path CONTAINS "Adobe\ Acrobat\ Reader.app/Contents/Info.plist"
Analytic Actions:
ここの例では Identifier を「deleteAdobeAcrobatReader」としていますが、任意の値で結構です。
最後に、作成したカスタムAnalytics を Analytic Set に追加し、その Analytic Set を Plan に追加してください。
2. Jamf Pro の設定
Jamf Pro のコンソールでは、最初は Jamf Protect に関する構成、つまり拡張属性とスマートコンピュータグループの作成を行います。
・Jamf Pro での Analytic 修復の設定 (参照)
2-1. Jamf Protect の拡張属性作成
Analytics により自動入力されるコンピュータの拡張属性を Jamf Pro に追加する必要があります。
設定 > コンピュータ管理 > 拡張属性にて「テンプレートから新規作成」 をクリックして、Jamf Applications 以下でJamf Protect - Smart Groups を選択して保存します。
2-2. Jamf Protect のスマートコンピュータグループ作成
Jamf Proで、Jamf Protectスマートグループを使用して、検出されたAnalyticに応答してグループメンバーシップを制御するスマートコンピュータグループを作成します。
Jamf Pro で、コンピュータをクリックします。
スマートコンピュータグループ をクリックします。
新規 をクリックします。
コンピュータグループ タブで、グループ名等を設定します。
クライテリア タブで、追加 > アドバンスクライテリアを表示 をクリックします。
先ほど作成した Jamf Protect 拡張属性を選択します。
以下の写真に類似している クライテリア、 オペレータ と 値 フィールドを構成します。
値 フィールドには 1-2-1. 、1-2-2. のAnalytic Action の Identifierに設定した値を入れてください。保存 をクリックします。
2-3. スクリプト作成
特定のアプリケーションを再インストールし、デバイスを Jamf Protect Smart Group から削除するスクリプトとなります。
設定 > コンピュータ管理 > スクリプト にて作成してください。
スクリプト:https://github.com/Magichat-Inc/Jamf-Pro-Protect_reinstall-deleted-application/blob/main/reinstallAppAndRemoveFromProtectGroup.sh
オプション > Parameter Labels に次を指定します。
・パラメータ 4:ポリシー ID (アプリケーションインストール用)
2-4. ポリシー作成
上記のスクリプトを使用して、ポリシーを作成します。
ここまでの設定で、Jamf Protect を使用してアプリの削除を監視し、削除されたタイミングでインシデントレスポンスとしてアプリのインストールポリシーを実行する「検出と修復のワークフロー」が実現できます。
2-5. 再インストール失敗の場合に備えた定期実行
2-4. まででご説明した検出と修復のワークフローでも
インストールの失敗まではケアできないので、これからご説明する1時間毎の定期インストールチェック&インストール処理(Launch Daemon)と組み合わせることで保護されていない状態を短くすることができます。
2-5-1. スクリプト作成
・Launch Daemonをスケジュールするタスク (reinstallTask.sh)
・アプリの存在確認スクリプト (reinstallSpecificApplication.sh)
設定 > コンピュータ管理 > スクリプト にて以下のように作成してください。
Launch Daemonをスケジュールするタスク (reinstallTask.sh)
バックグラウンドでプロセスとして走り、1 時間ごとに実行されます。
実行時に、他スクリプトを呼び出して (reinstallSpecificApplication.sh) 特定アプリが存在するかをチェックします。
スクリプト: https://github.com/Magichat-Inc/Jamf-Pro-Protect_reinstall-deleted-application/blob/main/reinstallTask.sh
アプリの存在確認スクリプト (reinstallSpecificApplication.sh)
スクリプトは特定アプリがインストールされてるかどうかをチェックします。特定のアプリがインストールされていない場合、再インストールを行います。
sudo jamf policy -id "${policyID}"
再インストールが終わったら、インベントリー更新を行います。
sudo jamf recon
スクリプトの上にある $4 & $5 はパラメータとなります。ポリシーから値をもらうことになります。
スクリプト: https://github.com/Magichat-Inc/Jamf-Pro-Protect_reinstall-deleted-application/blob/main/reinstallSpecificApplication.sh
オプション > Parameter Labels に次を指定します。
パラメータ 4:アプリ名 (例: Adobe Acrobat Reader.app)
パラメータ 5:ポリシー ID (アプリケーションをインストール用)
2-5-2. ポリシー作成
それぞれのスクリプト用にポリシーを作成します。
・Launch Daemon をスケジュールするポリシー
・アプリの存在確認をするポリシー
Launch Daemonをスケジュールするポリシー
アプリの存在確認をするポリシー
最後に reinstallTask.sh スクリプトを以下のように修正します:
・com.magichat. で始まる名を会社名に変更します。
・コード内の28行目にポリシーIDを編集します。
(2-5-2.で作った「アプリの存在確認スクリプト用のポリシー」の ID を入れます。)
<!-- 特定のアプリケーションの再インストールスクリプトのポリシーID -->
<string>859</string
3. まとめ
このワークフローの設定は最初は少し難しく見えるかもしれませんが、設定する必要があるのは1回のみです。最終的には、必要なアプリケーションがユーザーのコンピュータから削除された場合でも、管理者が介入する必要がなく自動的に修復されます。
このアプローチにより、Jamf Pro と Jamf Protect の機能を組み合わせることで、ダウンタイムを最小限に抑えつつ生産性を向上するだけでなく、同時にエンドポイントのセキュリティも強化できます。
以上、 エンジニアのメリンダが担当いたしました。
最後まで読んでいただき、ありがとうございました。
ご参考
・関する GitHub リポジトリ
・Jamf Proドキュメンテーション
・Jamf Protectドキュメンテーション
・Jamf Proでの Analytic 修復の設定