> For the complete documentation index, see [llms.txt](https://docs.keeper.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.keeper.io/keeperpam/jp/endpoint-privilege-manager/reference/macos-system-extension-configuration.md).

# macOS: システム拡張の構成

<figure><img src="/files/3y0wC12TD773YA0mAg0J" alt=""><figcaption></figcaption></figure>

macOSシステム拡張 (`KeeperSystemExtension`) は、macOS上の特権昇格リクエストとパッケージインストールをKEPMが可視化するためのカーネルレベルコンポーネントです。AppleのEndpoint Security Frameworkを通じて認可要求がインターセプトされます。これはmacOSがUACに相当する昇格プロンプトに使うのと同じメカニズムです。許可または拒否の前に、リクエストはKEPMポリシーエンジンにルーティングされます。

本ページでは、システム拡張の役割、構成方法、MDMによる展開、一般的な問題のトラブルシューティングについて取り扱います。

## 動作の仕組み <a href="#how-it-works" id="how-it-works"></a>

ユーザーが `sudo` 付きでコマンドを実行したり、`.pkg` ファイルをインストールしたり、管理対象Mac上でその他の認可要求をトリガーしたりすると、macOSが処理する前にシステム拡張によってリクエストがインターセプトされます。内部MQTTブローカー経由でリクエストがKEPMポリシーエンジンに送信され、ポリシー判定を待ってから、許可、拒否、またはコントロールフロー (正当化、MFA、承認) のトリガーに応じて応答されます。

`.dmg` ディスクイメージのオープンについては、バーストイベントが統合されます。macOSが同一ファイルに対していくつのopenイベントを生成しても、ユーザーにはポリシープロンプトが1回だけ表示され、エージェントはマウント操作ごとに1件のポリシーリクエストだけを処理します。

システム拡張はカーネルレベルで動作し、インストール前にユーザーの明示的な承認 (またはMDMによる事前承認) が必要です。

## フルディスクアクセス <a href="#full-disk-access" id="full-disk-access"></a>

システム拡張とKeeperPrivilegeManagerアプリの両方に、ファイル操作の監視と認可イベントのインターセプトのためにフルディスクアクセスが必要です。

**対話型インストール:** ユーザーがコンソールにログインしている場合、インストーラは自動的に **\[設定]** のフルディスクアクセス画面を開き、承認が必要な2項目を一覧表示するフローティングアラートを表示します。

* `Keeper Endpoint Privilege Manager Extension`
* `Keeper Endpoint Privilege Manager` (`/Library/Keeper/KeeperPrivilegeManager.app`)

**MDM / ヘッドレスインストール:** MDM経由で展開する場合 (対話型ターミナルなし) 、FDAダイアログは自動的にスキップされます。以下のPrivacy Preferences Policy Controlペイロードを使ってフルディスクアクセスを付与してください。

### **フルディスクアクセス用 MDM 構成プロファイル** <a href="#mdm-configuration-profile-for-full-disk-access" id="mdm-configuration-profile-for-full-disk-access"></a>

xml

```xml
<?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>PayloadType</key>
  <string>com.apple.TCC.configuration-profile-policy</string>
  <key>PayloadUUID</key>
  <string><!-- generate a UUID --></string>
  <key>Services</key>
  <dict>
    <key>SystemPolicyAllFiles</key>
    <array>
      <dict>
        <key>Identifier</key>
        <string>com.keeper.endpoint-privilege-manager.extension</string>
        <key>IdentifierType</key>
        <string>bundleID</string>
        <key>CodeRequirement</key>
        <string>anchor apple generic and identifier "com.keeper.endpoint-privilege-manager.extension"</string>
        <key>Allowed</key>
        <true/>
        <key>StaticCode</key>
        <false/>
      </dict>
      <dict>
        <key>Identifier</key>
        <string>com.keeper.endpoint-privilege-manager</string>
        <key>IdentifierType</key>
        <string>bundleID</string>
        <key>CodeRequirement</key>
        <string>anchor apple generic and identifier "com.keeper.endpoint-privilege-manager"</string>
        <key>Allowed</key>
        <true/>
        <key>StaticCode</key>
        <false/>
      </dict>
    </array>
  </dict>
</dict>
</plist>
```

## 構成ファイル <a href="#configuration-file" id="configuration-file"></a>

システム拡張は `SystemExtension.json` で構成します。配置場所は以下のとおりです。

```
/Library/Keeper/sbin/Plugins/SystemExtension.json
```

すべての設定にはデフォルト値があり、通常動作のためにファイルが存在する必要はありません。デフォルトと異なる設定だけを上書きしてください。

## MQTT 障害時の動作 <a href="#mqtt-outage-behavior" id="mqtt-outage-behavior"></a>

デフォルトでは、システム拡張が内部MQTTブローカーへの接続を失うと (サービス再起動中に一時的に発生することがあります) 、すべての昇格リクエストをブロックするのではなく、認可要求の処理が許可されます。これは、KEPMサービスが一時的に利用できない場合にマシンが使用不能になるのを防ぐための、意図的なフェイルオープン動作です。

<table data-header-hidden="false" data-header-sticky><thead><tr><th width="356.33331298828125">設定</th><th width="96.3333740234375">デフォルト</th><th>説明</th></tr></thead><tbody><tr><td><code>mqtt.failsafe.enabled</code></td><td><code>true</code></td><td><code>true</code> のとき、MQTT障害中も要求を許可</td></tr><tr><td><code>mqtt.failsafe.maxOutageDurationSeconds</code></td><td><code>300</code></td><td>MQTTが利用不能になってからこの秒数経過後にフェイルセーフが作動</td></tr><tr><td><code>mqtt.reconnect.initialIntervalMs</code></td><td><code>1000</code></td><td>最初の再接続試行間隔</td></tr><tr><td><code>mqtt.reconnect.maxIntervalMs</code></td><td><code>30000</code></td><td>最大再接続試行間隔 (指数バックオフの上限)</td></tr></tbody></table>

**セキュリティに関する注意:** セキュリティ要件上、MQTT障害時にフェイルクローズ (すべて拒否) が必要な場合は、`mqtt.failsafe.enabled` を `false` に設定してください。これにより、KEPMサービスの中断があると、サービスが復旧するまで対象Mac上のすべての特権昇格がブロックされる点に留意してください。

## ポリシーレスポンスのタイムアウト <a href="#policy-response-timeout" id="policy-response-timeout"></a>

ポリシーエンジンが構成されたタイムアウト内に認可要求へ応答しない場合、システム拡張は保留中の要求をどう処理するか決定する必要があります。

<table data-header-hidden="false" data-header-sticky><thead><tr><th>設定</th><th>デフォルト</th><th>説明</th></tr></thead><tbody><tr><td><code>policy.response.timeoutSeconds</code></td><td><code>300</code></td><td>タイムアウト時のアクションを適用する前にポリシー判定を待つ秒数</td></tr><tr><td><code>policy.response.timeoutAction</code></td><td><code>"allow"</code></td><td>タイムアウト時のアクション: <code>"allow"</code> または <code>"deny"</code></td></tr></tbody></table>

5分のタイムアウトは、ユーザーが承認者の応答を待つ必要がある承認ゲート付きワークフローに適しています。承認リクエストを使わない環境では、昇格リクエストが無期限に保留されないよう、30〜60秒に短縮できます。

## パスフィルタリング <a href="#path-filtering" id="path-filtering"></a>

システム拡張はシステム全体のファイルアクセスイベントを監視します。パフォーマンスへの影響を抑えるため、ポリシー対象外のディレクトリをスキップするパス除外を構成できます。

<table data-header-hidden="false" data-header-sticky><thead><tr><th>設定</th><th>デフォルト</th><th>説明</th></tr></thead><tbody><tr><td><code>filtering.excludedPaths</code></td><td><code>[]</code></td><td>ポリシー評価から除外するパスプレフィックスの配列</td></tr><tr><td><code>filtering.excludeSystemPaths</code></td><td><code>true</code></td><td>既知のmacOSシステムパスを監視対象から自動除外</td></tr></tbody></table>

### **例: 特定のアプリケーションディレクトリを除外する** <a href="#example-exclude-a-specific-application-directory" id="example-exclude-a-specific-application-directory"></a>

json

```json
{
  "id": "KeeperSystemExtension",
  "settings": {
    "filtering.excludedPaths": [
      "/private/var/folders",
      "/System/Library/Caches"
    ],
    "filtering.excludeSystemPaths": true
  }
}
```

ポリシー対象が不要と確信できるパスだけを除外してください。除外範囲を広げすぎると、ポリシー適用に抜け穴が生じる可能性があります。

## ポリシーによる設定の更新 <a href="#updating-settings-via-policy" id="updating-settings-via-policy"></a>

システム拡張の設定は、各エンドポイントでの手動ファイル編集なしに、管理コンソールから**UpdateSettings**ポリシーでプッシュできます。フリート全体の構成変更には、この方法が推奨されます。詳しくは[設定更新](/keeperpam/jp/endpoint-privilege-manager/policies/policy-types/advanced-policy-types/update-settings-policy-type.md)をご参照ください。

## 拡張機能の状態確認 <a href="#checking-extension-status" id="checking-extension-status"></a>

bash

```bash
# List all loaded system extensions and their status
systemextensionsctl list

# Check System Extension approval status
spctl --status
```

Keeper拡張機能は `[activated enabled]` ステータスで表示されるはずです。`[terminated waiting for user]` と表示される場合は、**\[設定]** → **\[プライバシーとセキュリティ]** でユーザーの承認が必要です。

***

## トラブルシューティング <a href="#troubleshooting" id="troubleshooting"></a>

**拡張機能はインストール済みだが、特権昇格がインターセプトされない** 拡張機能とアプリの両方にフルディスクアクセスが付与されていることを確認してください。**\[設定]** → **\[プライバシーとセキュリティ]** → **\[フルディスクアクセス]** で、`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アプリケーションを再度開いて拡張機能の再インストールをトリガーし、**\[設定]** で承認してください。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.keeper.io/keeperpam/jp/endpoint-privilege-manager/reference/macos-system-extension-configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
