システム拡張の構成

macOSシステム拡張 (KeeperSystemExtension) は、macOS上の特権昇格リクエスト、コマンドライン呼び出し、パッケージインストールをKEPMが可視化するためのユーザースペースコンポーネントです。AppleのEndpoint Security Frameworkを通じて認可要求がインターセプトされます。これはmacOSがUACに相当する昇格プロンプトに使うのと同じメカニズムです。許可または拒否の前に、リクエストはKEPMポリシーエンジンにルーティングされます。
本ページでは、システム拡張の役割、MDM管理者が許可リストに登録する際に必要な識別子とエンタイトルメント、構成方法、一般的な問題のトラブルシューティングについて取り扱います。
識別子とコード署名
KEPMのmacOSコンポーネントはKeeper Securityが署名して配布しています。以下の値は、MDM管理の許可リスト、PPPCプロファイル、またはシステム拡張ポリシーで必要です。
アプリ名
Keeper Endpoint Privilege Manager.app
アプリバンドルID
com.keeper.endpoint-privilege-manager
アプリのインストールパス
/Applications/Keeper/Keeper Endpoint Privilege Manager.app
システム拡張名
com.keeper.keeper-privilege-manager.monitor.systemextension
システム拡張バンドルID
com.keeper.keeper-privilege-manager.monitor
システム拡張バイナリパス
/Applications/Keeper/Keeper Endpoint Privilege Manager.app/Contents/Library/SystemExtensions/com.keeper.keeper-privilege-manager.monitor.systemextension/Contents/MacOS/com.keeper.keeper-privilege-manager.monitor
システム拡張タイプ
EndpointSecurityExtension
通知ヘルパーバンドルID
com.keeper.keepernotify
Apple Developer Team ID
234QNB7GCA (インストール済みのMacで codesign -dv "/Applications/Keeper/Keeper Endpoint Privilege Manager.app" により検証可能)
署名機関
Developer ID Application: Callpod Inc. (234QNB7GCA)
ランタイム識別子 (systemextensionsctl list 内)
com.keeper.keeper-privilege-manager.monitor
コード要件 (拡張機能)
anchor apple generic and identifier "com.keeper.keeper-privilege-manager.monitor" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = "234QNB7GCA")
コード要件 (アプリ)
anchor apple generic and identifier "com.keeper.endpoint-privilege-manager" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = "234QNB7GCA")
コード要件 (通知ヘルパー)
anchor apple generic and identifier "com.keeper.keepernotify" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = "234QNB7GCA")
Keeper SecurityはCallpod Inc.の完全子会社です。AppleではDeveloper ID証明書を親法人に発行する必要があるため、署名機関の文字列は Keeper Security, Inc. ではなく Callpod Inc. と表示されます。これは想定どおりの動作であり、この署名機関を持つプロファイルを不審と判断する必要はありません。
Keeperの各macOSコンポーネント (アプリ、拡張機能、通知ヘルパー、プラグインなど) は com.keeper.* 名前空間配下の個別バンドルIDで署名され、許可リスト登録、監査、制御をそれぞれ独立して行えます。
動作の仕組み
ユーザーが sudo 付きでコマンドを実行したり、.pkg ファイルをインストールしたり、管理対象Mac上でその他の認可要求をトリガーしたりすると、macOSが処理する前にシステム拡張によってリクエストがインターセプトされます。内部MQTTブローカー経由でリクエストがKEPMポリシーエンジンに送信され、ポリシー判定を待ってから、許可、拒否、またはコントロールフロー (正当化、MFA、承認) のトリガーに応じて応答されます。
.dmg ディスクイメージのオープンについては、バーストイベントが統合されます。macOSが同一ファイルに対していくつのopenイベントを生成しても、ユーザーにはポリシープロンプトが1回だけ表示され、エージェントはマウント操作ごとに1件のポリシーリクエストだけを処理します。
システム拡張はAppleのEndpoint Security Frameworkを使ってユーザースペース (カーネルではない) で動作し、有効化前にユーザーの明示的な承認 (またはMDMによる事前承認) が必要です。
アプリが /Library/Keeper/ ではなく /Applications/Keeper/ にインストールされる理由: Appleのシステム拡張とドライバのドキュメントでは、システム拡張フレームワークが有効化を許可する前に「アプリがシステムの適切なApplicationsディレクトリにインストールされている」必要があると定められています。KEPMはこの要件を満たすため、アプリを /Applications/Keeper/ に配置します。この制約の対象外のサポートバイナリ (CLIツール、プラグイン、ジョブ、構成) は引き続き /Library/Keeper/ に配置されます。
MDMデプロイ
KEPMのMDM展開を完了するには、以下の3つの構成プロファイルを順番にデプロイする必要があります。
システム拡張の許可リスト: 拡張機能を事前承認し、インストール時にサイレントで有効化
フルディスクアクセス (PPPC): アプリと拡張機能に、ポリシー適用に必要なファイルシステムの可視性を付与
通知の権限 (推奨): KEPMが昇格プロンプトと承認ステータスを表示可能にする
システム拡張の許可リストをKEPMパッケージのインストール前にデプロイしてください。許可リストプロファイルが適用される前に拡張機能がインストールされると、ユーザーに「System Extension Blocked」通知が表示され、拡張機能は [terminated waiting for user] 状態となり、システム設定での手動承認またはMDMプロファイルの到着を待つ必要があります。
フルディスクアクセス (PPPC)
システム拡張とKeeper Endpoint Privilege Managerアプリの両方に、ファイル操作の監視と認可イベントのインターセプトのためにフルディスクアクセスが必要です。
対話型インストール: ユーザーがコンソールにログインしている場合、インストーラは自動的に [設定] のフルディスクアクセス画面を開き、承認が必要な項目を一覧表示するフローティングアラートを表示します。
Keeper Endpoint Privilege Manager(/Applications/Keeper/Keeper Endpoint Privilege Manager.app)com.keeper.keeper-privilege-manager.monitor(システム拡張、バンドルIDで表示)
MDM / ヘッドレスインストール: MDM経由で展開する場合 (対話型ターミナルなし) 、インストーラはFDAダイアログを自動的にスキップします。以下のPrivacy Preferences Policy Controlペイロードを使ってフルディスクアクセスを付与してください。
CodeRequirement 内の certificate leaf[subject.OU] = "234QNB7GCA" 句は、プロファイルをKeeper署名バイナリに限定します。これがないと、同じバンドルIDを登録した非Keeperバイナリがフルディスクアクセスを継承するおそれがあります。
MDMデプロイの検証
3つのプロファイルをすべてデプロイし、KEPMパッケージをインストールしたあと、対象Macで以下を確認します。
拡張機能は [activated enabled] と表示されるはずです。TCCデータベースの auth_value=2 はアクセスが付与されていることを意味します (0=拒否、1=プロンプト、2=許可)。
構成ファイル
システム拡張は SystemExtension.json で構成します。KeeperPrivilegeManager がこのファイルを読み取り、拡張機能の初期化時または再接続時にHTTPS経由で内容を配信します。ファイルの配置場所は以下のとおりです。
設定はトップレベルの "metadata" キー配下のネストされたJSONオブジェクトとして構成されます。以下の各セクションでは、完全なJSONパス (例: metadata.mqttOutages.connectionFailureBehavior) で各設定を示します。すべての設定にはファイル内にデフォルト値が含まれており、デフォルトと異なる値だけを上書きしてください。
MQTT障害時の動作
システム拡張が内部MQTTブローカーへの接続を失うと (サービス再起動中に一時的に発生することがあります) 、保留中の認可要求に対して設定可能なフォールバック動作に切り替わります。これは、KEPMサービスが一時的に利用できない場合にマシンが使用不能になるのを防ぐための、意図的なフェイルオープンのデフォルトです。
metadata.mqttOutages.connectionFailureBehavior
"allow"
MQTT障害中の認可要求の扱い: "allow" または "deny"
metadata.mqttOutages.retries.minDelay
1
再接続試行間の最小遅延 (秒)
metadata.mqttOutages.retries.maxDelay
20
再接続試行間の最大遅延 (秒、指数バックオフの上限)
セキュリティに関する注意: セキュリティ要件上、MQTT障害時にフェイルクローズ (すべて拒否) が必要な場合は、connectionFailureBehavior を "deny" に設定してください。これにより、KEPMサービスの中断があると、サービスが復旧するまで対象Mac上のすべての特権昇格がブロックされる点に留意してください。
ポリシーレスポンスのタイムアウト
ポリシーエンジンが構成されたタイムアウト内に認可要求へ応答しない場合、システム拡張は設定可能なアクションにフォールバックします。
metadata.policy.maxResponseTimeout
5.0
タイムアウトアクションを適用する前にポリシー判定を待つ秒数
metadata.policy.onPolicyTimeout
"allow"
タイムアウト時のアクション: "allow" または "deny"
5秒のデフォルトは多くの環境に適しています。リモート承認者の応答を待つ必要がある承認ゲート付きワークフローでは、想定される承認待ち時間に合わせて値を増やしてください (例: 5分の承認ウィンドウなら 300)。値を高くしすぎると、ポリシーエンジンが利用できない場合に昇格リクエストがその期間、保留されたままになることがあります。
ポリシーレスポンスキャッシュ
拡張機能は、短時間内に同一の繰り返しリクエストを再評価しないよう、ポリシーレスポンスをキャッシュします。
metadata.policy.cache.cleanupInterval
30
キャッシュをスイープして期限切れエントリを削除する間隔 (分)
metadata.policy.cache.expireAfter
60
キャッシュされたポリシーレスポンスの有効期間 (秒)
高負荷時の緩和
ポリシーエンジンが飽和状態になり応答が遅延し始めると、拡張機能は既知の安全なシステムパスからのリクエストを自動的に許可し、過負荷のポリシー評価の背後にキューイングされるのを防ぎます。
metadata.policy.highLoad.inflightThreshold
200
高負荷緩和が作動する同時進行中のポリシーリクエスト数
metadata.policy.highLoad.fallbackAllowPaths
(下記参照)
しきい値超過中に自動許可されるパス
デフォルトの fallbackAllowPaths は標準的なmacOSシステムの場所をカバーします。
影響を検証したうえでのみ、このリストを変更してください。持続的な高負荷時にシステムパスをフォールバックリストから削除すると、システムプロセスが遅延または拒否される場合があります。
パス許可リスト
システム拡張は許可リストを使い、完全なポリシー往復を経ずに通過すべきアクティビティを識別します。通常はKeeper自身のバイナリや、監視が不要な既知のmacOSシステムパスが対象です。
metadata.fileAccess.allowPaths
ファイルアクセスポリシー評価から除外するファイルパス
metadata.commandLine.allowPaths
コマンドラインポリシー評価から除外する実行ファイルパス
metadata.privilegeElevation.allowPaths
特権昇格ポリシー評価から除外する実行ファイルパス
例: ファイルアクセス許可リストへのパス追加
ポリシー対象が不要と確信できるパスだけを追加してください。範囲を広げすぎると、ポリシー適用に抜け穴が生じる可能性があります。
ポリシーによる設定の更新
システム拡張の設定は、各エンドポイントでの手動ファイル編集なしに、管理コンソールからUpdateSettingsポリシーで更新できます。設定更新が適用されると、拡張機能は KeeperPrivilegeManager からHTTPS経由で改訂された構成を取得します。フリート全体の構成変更には、この方法が推奨されます。詳しくは設定更新ポリシータイプをご参照ください。
拡張機能の状態確認
Keeper拡張機能は systemextensionsctl list に [activated enabled] ステータスで表示されるはずです。[terminated waiting for user] と表示される場合は、システム拡張許可リストプロファイル (上記参照) がデプロイされていないか、ユーザーが [設定] > [プライバシーとセキュリティ] で拡張機能をまだ承認していません。
codesign の出力には以下が含まれるはずです。
Identifier=com.keeper.endpoint-privilege-manager(アプリ) またはIdentifier=com.keeper.keeper-privilege-manager.monitor(拡張機能)TeamIdentifier=234QNB7GCAAuthority=Developer ID Application: Callpod Inc. (234QNB7GCA)(CallpodはKeeperの親会社です。識別子の表の注記をご参照ください)
トラブルシューティング
拡張機能はインストール済みだが、特権昇格がインターセプトされない: 拡張機能とアプリの両方にフルディスクアクセスが付与されていることを確認してください。[設定] > [プライバシーとセキュリティ] > [フルディスクアクセス] で、Keeper Endpoint Privilege Manager と com.keeper.keeper-privilege-manager.monitor 拡張機能の両方が一覧に表示され、有効になっている必要があります。PPPCプロファイルをデプロイ済みでもFDAがオフのままの場合、プロファイル内の CodeRequirement Team IDが codesign -dv で返される実際の署名Team IDと一致しているか確認してください。
認可要求がタイムアウトし、ユーザーがブロックされる: KEPMサービスが実行されていないか、ポリシーエンジンが応答していない可能性があります。サービスが実行中であること、KeeperPolicyプラグインがRunning状態であることを確認してください。サービスが正常な場合は、タイムアウト値が承認ワークフローに対して短すぎないか確認してください。
パッケージのインストールがインターセプトされない: systemextensionsctl list で拡張機能が [activated enabled] 状態であることを確認してください。有効化されているのにパッケージがインターセプトされない場合、インストール試行時にKEPMサービスが実行されていたか、サービスログにMQTTレベルのエラーがないかを確認してください。
拡張機能が systemextensionsctl list で [terminated waiting for user] と表示される: システム拡張の allowlist プロファイルが届いていないか、AllowedSystemExtensions のTeam IDがバイナリと一致していません。プロファイルがインストールされているか (profiles show -type configuration) を確認し、プロファイル内のTeam IDが codesign -dv "/Applications/Keeper/Keeper Endpoint Privilege Manager.app/Contents/Library/SystemExtensions/com.keeper.keeper-privilege-manager.monitor.systemextension" の出力と一致しているか確認してください。MDM管理外のユーザー管理Macでは、/Applications/Keeper/ からKeeper Endpoint Privilege Managerアプリを再度開き、システム設定で拡張機能を手動承認してください。
macOSアップグレード後に拡張機能が [terminated] と表示される: /Applications/Keeper/ からKeeper Endpoint Privilege Managerアプリケーションを再度開いて拡張機能の再インストールをトリガーし、システム設定で承認してください (MDM管理の場合は allowlist プロファイルを再プッシュ)。
ユーザーに「Notification not delivered」が表示される、または昇格リクエストのプロンプトが出ない: 通知用PPPCプロファイルがデプロイされていないか、ユーザーが通知の権限を取り消しています。通知ヘルパーは独自バンドルID (com.keeper.keepernotify) を持つ別バイナリです。defaults read com.apple.ncprefs apps | grep com.keeper.keepernotify で確認してください。エントリには通知が有効であることを示すflags値が含まれるはずです。通知プロファイルが誤ったバンドルID (例: com.keeper.endpoint-privilege-manager) を対象にしている場合、通知は配信されません。
最終更新

