macOSのアップデートをなかなかやってくれないユーザーがいたので、Nudgeを設定してみました。
同様なことができる有名どころとしては、S.U.P.E.R.M.A.N.などがあります。
Nudgeって何?
macOSのアップデートを強く奨励する通知を出すためのアプリケーションです。 多言語対応しています。
今回の前提条件
- 対象端末はmacOS 11以上であること
- MDMとして今回はJamf Proを利用(他のMDMでも対応はできる)
Jamf Proへパッケージをアップロードする
- こちら から、Nudge_Suiteのpkgファイルをダウンロードします。
- Jamf Proへログインし、歯車アイコン→「コンピュータ管理」→【パッケージ】をクリックします。
- 【新規】をクリックし、ダウンロードしたpkgファイルをアップロードします。
SmartComputerGroupを定義する
以下の条件でSmartComputerGroupを作成します。 Application Versionは確認して修正してください。
構成プロファイルを作成する
- Jamf Proにログインし新規構成プロファイルを作成します。
- Generalは以下のように定義します。
- 名前:Nudge
- 説明:
- レベル:Computer Level
- 配布方法:Install Automatically
- 「アプリケーションとカスタム設定」→【外部アプリケーション】をクリックします
- 右上の【追加】をクリックします。
- ソースから「カスタムスキーマ」を選択し、環境設定ドメインに「com.github.macadmins.Nudge」と入力します。
- 【スキーマを追加】をクリックします。
- こちらのページ にある内容をコピーし貼り付けます。
- 【保存】をクリックします
- マネージドキーの値を設定し、Nudgeをカスタマイズします。最低限必要なのは以下の2つのパラメーターです。
- requiredInstallationDate
- requiredMinimumOSVersion
- 今回は以下のように設定してみました。
- requiredInstallationDate: 2022-09-30T12:00Z
- requiredMinimumOSVersion: 12.5.1
- 「Scope」タブを選択し、対象端末を指定します
ポリシーを作成する
- ポリシーを新規作成します。
- 以下の内容でポリシーを定義します。
- General
- 表示名:Nudge Suite (1.1.8.x)
- トリガー: Recurring Check-in
- 実行頻度: Ongoing
- パッケージ
- 事前にアップロードしたNudge Suite pkgを選択
- メンテナンス
- インベントリをアップデート
- スコープ
- 事前に作成したSmartComputerGroupを指定
- General
端末での動作を確認する
即時実行したい場合には、ターミナルで以下のコマンドを実行することで確認ができます。
/Applications/Utilities/Nudge.app/Contents/MacOS/Nudge
パッケージと構成プロファイルが端末に適用されると、OSのバージョンをチェックし指定された最低バージョンより低いOSの場合には以下のようなダイアログを表示します。
ここで【デバイスの更新】をクリックすると、ソフトウェアアップデート画面が呼び出されます。
今はアップデートしたくないという場合には、延期プルダウンからどのくらい延期するかを選択することができます。 単純に「後で」を選択すると、30分後に再表示されます。
指定日時以降の動作
管理者が指定した日時を過ぎた場合には、以下のような画面が表示され延期をすることができなくなります。
通知内容をカスタマイズする
このままでも問題なく利用できますが、エンドユーザーへの通知文を自社にあわせた文言にしたり、問い合わせ窓口を書いたりすることもできます。
構成プロファイルの、UserInterface → updateElementsをカスタマイズすることで実現が可能です。
項目との対応は以下の画像を参考にしてみてください。
( 2021 Campfire Session 1.1: Updating macOS – A Nudge in the Right Direction: By Neil Martinより引用 )
Zoom等Web会議など実行時には通知を控える
こちらも構成プロファイルの、acceptableApplicationBundleIDsを設定することで対応ができます。
参考までに、設定例plistです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>optionalFeatures</key>
<dict>
<key>acceptableApplicationBundleIDs</key>
<array>
<string>us.zoom.xos</string>
<string>com.apple.iWork.Keynote</string>
<string>com.apple.Keynote</string>
<string>com.microsoft.Powerpoint</string>
<string>com.cisco.webexmeetingsapp</string>
<string>com.webex.meetingmanager</string>
<string>Cisco-Systems.Spark</string>
<string>com.microsoft.skype.teams</string>
</array>
</dict>
<key>osVersionRequirements</key>
<array>
<dict>
<key>requiredInstallationDate</key>
<string>2022-09-30T12:00:00Z</string>
<key>requiredMinimumOSVersion</key>
<string>12.5</string>
</dict>
</array>
<key>userInterface</key>
<dict>
<key>updateElements</key>
<array>
<dict>
<key>_language</key>
<string>ja</string>
<key>mainContentText</key>
<string> macOSのアップデートが必要です。\nOSを最新バージョンにする必要があります。</string>
<key>subHeader</key>
<string>情報システム部からのお知らせです</string>
</dict>
</array>
</dict>
</dict>
</plist>
まとめ
完全にアップデートを強制することはできませんが、通知ではなく画面に大きくダイアログがでるので、エンドユーザーへ通知としてはいいのではないかと思います。
基本的にアップデートを自発的にしていただきたいですが、ずっと放置してしまうユーザーがいることも事実です。
ので、通達を出すことと条件付きアクセス等を利用して、最低バージョン未満のOS利用者はSaaSへアクセスさせない等の設定を入れるということも検討していいかもしれません。
業務影響が大きいのでここは会社次第だと思いますが、脆弱性を突かれてすべてのデータを抜かれたりしてしまうリスクと天秤にかけて検討するのがいいかなと思います。