🔐

macOSで一時的に管理者権限へ昇格するアプリを試してみた

に公開

この記事は

この記事は、カンムアドベントカレンダー16日目の記事です。
前日は、Naokyanさんによる、カンムのB2B新規事業チームを紹介してみるでした。
0->1を生み出すすごいチームです。(語彙力)
気になるぜ!って人は、是非採用ページを眺めてもらえればと

前置き

管理者権限あると便利だけと常に付与された状態だとちょっと怖いなということで、
昔はMakeMeAnAdminをよく利用していたのですが、更新が7年前でとまっておりmacOS Tahoeでうまく動かなかったので、macOS-enterprise-privilegesを試してみることにしました。

macOS-enterprise-privilegesは、構成プロファイルで色々と設定を決め打ちできたり、昇格理由を必須とすることができるので管理者にとってもうれしい機能が多いです。

利用環境

  • Jamf Pro 11.22.1
  • macOS Tahoe 26
  • macOS-enterprise-privileges 2.4.2

設定

パッケージの設定

  1. Privilegesというアプリが必要になるので、Releaseからpkgファイルをダウンロードします。
    この記事を書いている(2025/12現在は、Ver2.4.2でした)
  2. ダウンロードしたpkgファイルをJamf Proに登録します。
    登録方法は、色々なところで解説されているので公式ドキュメント等で確認してください。
  3. 自動インストールしたいので、Once Per ComputerでRecurring Check-inと登録完了時に、実行するように構成しました。

構成プロファイルの設定

PPPC

プライバシー環境設定ポリシーコントロールの設定
この設定を入れなさいとどこかのドキュメントで見たのですが、ソースがわからなくなりました(笑

AppCatalog
https://appcatalog.cloud/apps/privileges

設定

私の環境では以下のように、設定を入れています。
JSONスキーマも公開されていますが、そこまで多くの項目を設定しないため、私はplistを直接書いてしまっています。

  • 昇格時間は20分
  • 昇格時理由選択肢を、いくつか事前セット
  • WebhookにマシンIDを等を埋め込む
  • 設定メニュー非表示
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>AllowCLIBiometricAuthentication</key>
    <true/>
    <key>ShowInMenuBar</key>
    <true/>
    <key>ShowRemainingTimeInMenuBar</key>
    <true/>
    <key>ExpirationInterval</key>
    <integer>20</integer>
    <key>ReasonRequired</key>
    <true/>
    <key>ReasonPresetList</key>
    <array>
       <dict>
         <key>default</key>
         <string>環境設定をするため</string>
       </dict>
       <dict>
         <key>default</key>
         <string>ソフトウェアインストールのため</string>
       </dict>
       <dict>
         <key>default</key>
         <string>情シス担当者指示のため</string>
       </dict>
   </array>
   <key>HelpButtonCustomURL</key>
   <string>https://www.example.co.jp/page</string>
   <key>HideSettingsFromStatusItem</key>
   <true/>
   <key>RequireBiometricAuthentication</key>
   <true/>
   <key>AllowCLIBiometricAuthentication</key>
   <true/>
   <key>DockToggleMaxTimeout</key>
   <integer>600</integer>
   <key>RemoteLogging</key>
    <dict>
        <key>ServerType</key>
        <string>webhook</string>
        <key>ServerAddress</key>
        <string>https://www.example.co.jp/webhook</string>
        <key>WebhookCustomData</key>
        <dict>
            <!-- Jamf やマシン情報を埋め込む -->
            <key>jss_id</key>
            <string>$JSSID</string>
            <key>serial_number</key>
            <string>$SERIALNUMBER</string>
            <key>computer_name</key>
            <string>$COMPUTERNAME</string>
            <key>username</key>
            <string>$USERNAME</string>
        </dict>
    </dict>
    <key>QueueUnsentEvents</key>
    <true/>
    <key>QueuedEventsMax</key>
    <integer>10</integer>
</dict>
</plist>

設定した構成プロファイルをテスト端末等に流し混みます。

動作確認

  • パッケージファイルがインストールされると、アプリケーションフォルダにPrivileges.appが表示されているはずです。

  • メニューバーにも、鍵マークアイコンが表示されてきます。

  • アプリを起動すると、以下のような画面が表示されるので、昇格理由を入力するか、プルダウンから理由を選択して、【権限を要求】をクリックします。

  • 「管理者権限が付与されました」と通知が表示されたら、管理者権限に昇格が完了しています。

  • メニューバー上でカウントダウンがはじまり、20分経過すると自動的に管理者権限は剥奪されます。

権限降格

  • 権限昇格中にメニューバーの鍵アイコンをクリックし、【権限を元に戻す】をクリックすると、20分経過する前に権限を降格することができます。

利用が終わったら不要な権限は剥奪しておくのが良いので、手動降格しておくといいと思います。

SlackへのWebhookについて

そのままだとSlackのWebhookに送ってもSlack側で受け付けてもらえず通知させることができません。
間に1つSlack Webhook送信用のスクリプトを挟んでSlackへ送信する必要があります。

まとめ

不要な管理者権限を持たない・持たせないと言う環境を簡単につくれるので良いですね。
権限昇格している等も視覚的にわかりやすいです。
アップデートもそれなりにされているようですので、しばらくはこちらのツールを利用していきたいと思います。

失敗談

App Auto Patchを利用しているのですが、Privileges が対象アプリに入っておりインストール時に以下ダイアログが表示されてしまい、昇格して対応したいのに昇格出来ずに何もできない。みたいな端末を発生させてしまいました。恒久的に管理者権限に昇格させるスクリプトを別途用意していたのでSelf Service+からそちらを実行してもらい、ひとまず事なきを得ました。

App Auto PatchからPrivilegesを除外してアップデートはポリシー手動更新としました。

おわり。

株式会社カンム

Discussion