macOS: システム拡張の構成

macOSシステム拡張 (KeeperSystemExtension) は、macOS上の特権昇格リクエストとパッケージインストールをKEPMが可視化するためのカーネルレベルコンポーネントです。AppleのEndpoint Security Frameworkを通じて認可要求がインターセプトされます。これはmacOSがUACに相当する昇格プロンプトに使うのと同じメカニズムです。許可または拒否の前に、リクエストはKEPMポリシーエンジンにルーティングされます。
本ページでは、システム拡張の役割、構成方法、MDMによる展開、一般的な問題のトラブルシューティングについて取り扱います。
動作の仕組み
ユーザーが sudo 付きでコマンドを実行したり、.pkg ファイルをインストールしたり、管理対象Mac上でその他の認可要求をトリガーしたりすると、macOSが処理する前にシステム拡張によってリクエストがインターセプトされます。内部MQTTブローカー経由でリクエストがKEPMポリシーエンジンに送信され、ポリシー判定を待ってから、許可、拒否、またはコントロールフロー (正当化、MFA、承認) のトリガーに応じて応答されます。
.dmg ディスクイメージのオープンについては、バーストイベントが統合されます。macOSが同一ファイルに対していくつのopenイベントを生成しても、ユーザーにはポリシープロンプトが1回だけ表示され、エージェントはマウント操作ごとに1件のポリシーリクエストだけを処理します。
システム拡張はカーネルレベルで動作し、インストール前にユーザーの明示的な承認 (またはMDMによる事前承認) が必要です。
フルディスクアクセス
システム拡張とKeeperPrivilegeManagerアプリの両方に、ファイル操作の監視と認可イベントのインターセプトのためにフルディスクアクセスが必要です。
対話型インストール: ユーザーがコンソールにログインしている場合、インストーラは自動的に [設定] のフルディスクアクセス画面を開き、承認が必要な2項目を一覧表示するフローティングアラートを表示します。
Keeper Endpoint Privilege Manager ExtensionKeeper Endpoint Privilege Manager(/Library/Keeper/KeeperPrivilegeManager.app)
MDM / ヘッドレスインストール: MDM経由で展開する場合 (対話型ターミナルなし) 、FDAダイアログは自動的にスキップされます。以下のPrivacy Preferences Policy Controlペイロードを使ってフルディスクアクセスを付与してください。
フルディスクアクセス用 MDM 構成プロファイル
xml
構成ファイル
システム拡張は SystemExtension.json で構成します。配置場所は以下のとおりです。
すべての設定にはデフォルト値があり、通常動作のためにファイルが存在する必要はありません。デフォルトと異なる設定だけを上書きしてください。
MQTT 障害時の動作
デフォルトでは、システム拡張が内部MQTTブローカーへの接続を失うと (サービス再起動中に一時的に発生することがあります) 、すべての昇格リクエストをブロックするのではなく、認可要求の処理が許可されます。これは、KEPMサービスが一時的に利用できない場合にマシンが使用不能になるのを防ぐための、意図的なフェイルオープン動作です。
mqtt.failsafe.enabled
true
true のとき、MQTT障害中も要求を許可
mqtt.failsafe.maxOutageDurationSeconds
300
MQTTが利用不能になってからこの秒数経過後にフェイルセーフが作動
mqtt.reconnect.initialIntervalMs
1000
最初の再接続試行間隔
mqtt.reconnect.maxIntervalMs
30000
最大再接続試行間隔 (指数バックオフの上限)
セキュリティに関する注意: セキュリティ要件上、MQTT障害時にフェイルクローズ (すべて拒否) が必要な場合は、mqtt.failsafe.enabled を false に設定してください。これにより、KEPMサービスの中断があると、サービスが復旧するまで対象Mac上のすべての特権昇格がブロックされる点に留意してください。
ポリシーレスポンスのタイムアウト
ポリシーエンジンが構成されたタイムアウト内に認可要求へ応答しない場合、システム拡張は保留中の要求をどう処理するか決定する必要があります。
policy.response.timeoutSeconds
300
タイムアウト時のアクションを適用する前にポリシー判定を待つ秒数
policy.response.timeoutAction
"allow"
タイムアウト時のアクション: "allow" または "deny"
5分のタイムアウトは、ユーザーが承認者の応答を待つ必要がある承認ゲート付きワークフローに適しています。承認リクエストを使わない環境では、昇格リクエストが無期限に保留されないよう、30〜60秒に短縮できます。
パスフィルタリング
システム拡張はシステム全体のファイルアクセスイベントを監視します。パフォーマンスへの影響を抑えるため、ポリシー対象外のディレクトリをスキップするパス除外を構成できます。
filtering.excludedPaths
[]
ポリシー評価から除外するパスプレフィックスの配列
filtering.excludeSystemPaths
true
既知のmacOSシステムパスを監視対象から自動除外
例: 特定のアプリケーションディレクトリを除外する
json
ポリシー対象が不要と確信できるパスだけを除外してください。除外範囲を広げすぎると、ポリシー適用に抜け穴が生じる可能性があります。
ポリシーによる設定の更新
システム拡張の設定は、各エンドポイントでの手動ファイル編集なしに、管理コンソールからUpdateSettingsポリシーでプッシュできます。フリート全体の構成変更には、この方法が推奨されます。詳しくは設定更新ポリシータイプをご参照ください。
拡張機能の状態確認
bash
Keeper拡張機能は [activated enabled] ステータスで表示されるはずです。[terminated waiting for user] と表示される場合は、[設定] → [プライバシーとセキュリティ] でユーザーの承認が必要です。
トラブルシューティング
拡張機能はインストール済みだが、特権昇格がインターセプトされない 拡張機能とアプリの両方にフルディスクアクセスが付与されていることを確認してください。[設定] → [プライバシーとセキュリティ] → [フルディスクアクセス] で、Keeper Endpoint Privilege Manager Extension と Keeper Endpoint Privilege Manager の両方が一覧に表示され、有効になっている必要があります。
認可要求がタイムアウトし、ユーザーがブロックされる KEPMサービスが実行されていないか、ポリシーエンジンが応答していない可能性があります。サービスが実行中であること、KeeperPolicyプラグインがRunning状態であることを確認してください。サービスが正常な場合は、タイムアウト値が承認ワークフローに対して短すぎないか確認してください。
パッケージのインストールがインターセプトされない systemextensionsctl list で拡張機能が [activated enabled] 状態であることを確認してください。有効化されているのにパッケージがインターセプトされない場合、インストール試行時にKEPMサービスが実行されていたか、サービスログにMQTTレベルのエラーがないかを確認してください。
拡張機能が systemextensionsctl list で terminated と表示される これはmacOSアップグレード後によく発生します。/Library/Keeper/ からKeeperPrivilegeManagerアプリケーションを再度開いて拡張機能の再インストールをトリガーし、[設定] で承認してください。
最終更新

