> 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/deployment/deploy-with-macos/macos-deployment-via-mdm.md).

# MDM経由のmacOSデプロイ

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-e39abeefe0a7daa2db40eb42ea46cf07db4eab51%2Fimage%20(496).png?alt=media" alt=""><figcaption></figcaption></figure>

本ページでは、MDMプラットフォーム (Jamf、Intune、Kandji、Mosyleなど) 経由で、ユーザー操作なしにKeeperエンドポイント特権マネージャー (Keeper EPM) を管理対象Macへデプロイする方法を取り扱います。正しいMDMデプロイでは、3つの構成プロファイルを配布し、署名済み `.pkg` をインストールし、必要に応じて再起動してシステム拡張とフルディスクアクセス (FDA) の付与を反映します。

ここでは、Keeper EPMがMDM側に求める要件に焦点を当てます。プロファイルのアップロード、デバイスグループへの割り当て、`InstallEnterpriseApplication` (または同等) コマンドの配信など、お使いのMDM製品の操作は既知である前提です。対話型インストール、サービス管理、手動登録については、[macOSでのデプロイ](/keeperpam/jp/endpoint-privilege-manager/deployment/deploy-with-macos.md)をご参照ください。

{% hint style="info" icon="pencil-line" %}
KEPM 2.1.1.2以降では、ヘッドレスなmacOS MDMインストールに対応しています。事前承認プロファイルがある場合のシステム拡張の自動有効化と、準拠したMDMデプロイ時のPost Install Stepsウィンドウの抑制が含まれます。
{% endhint %}

***

### MDMが配布すべきもの <a href="#what-mdm-must-deliver" id="what-mdm-must-deliver"></a>

準拠したMDMデプロイは、3つの構成プロファイル、署名済みインストーラーパッケージ、および任意の再起動コマンドで構成されます。すべてのプロファイルは**System** (デバイス) チャネルにスコープする必要があります。

<table><thead><tr><th width="53.6666259765625">#</th><th width="169">プロファイル</th><th width="188.6666259765625">ペイロードタイプ</th><th>目的</th></tr></thead><tbody><tr><td>1</td><td>登録キー</td><td><code>com.apple.ManagedClient.preferences</code></td><td>インストール後にエージェントが自動登録するよう登録トークンを書き込む</td></tr><tr><td>2</td><td>システム拡張の事前承認</td><td><code>com.apple.system-extension-policy</code></td><td>Endpoint Security拡張を事前承認し、サイレント有効化を可能にする</td></tr><tr><td>3</td><td>フルディスクアクセス (PPPC)</td><td><code>com.apple.TCC.configuration-profile-policy</code></td><td>KEPMバイナリとシステム拡張にフルディスクアクセスを付与する</td></tr></tbody></table>

<table><thead><tr><th width="129.333251953125">項目</th><th>要件</th></tr></thead><tbody><tr><td>パッケージ</td><td>署名済み <code>keeper-privilege-manager.&#x3C;version>.&#x3C;arch>.pkg</code> (Developer ID Installer)</td></tr><tr><td>Team ID</td><td><code>234QNB7GCA</code> (Callpod Inc. / Keeper Security本番ビルド)</td></tr><tr><td>プロファイルのスコープ</td><td>すべてのプロファイルを <strong>System</strong> スコープ (デバイスチャネル)</td></tr><tr><td>再起動</td><td>初回インストール後に拡張の有効化とTCCの反映のため<strong>推奨</strong></td></tr></tbody></table>

{% hint style="info" icon="pencil-line" %}
`PayloadIdentifier` は製品照合には使いません。外側・内側の識別子はMDMテナント内で一意である必要があり、GUID形式 (Intuneで一般的) も利用できます。Keeper EPMは、Keeper固有のプロファイルID文字列ではなく、ペイロードの内容によってシステム拡張およびFDAプロファイルを検出します。
{% endhint %}

3つのプロファイルがすべてインストールされ、パッケージがディスク上にあり、拡張が `[activated enabled]` と報告され、有効化されたビルドが埋め込みシステム拡張のバージョンと一致している場合、Post Install Stepsウィンドウは表示されません。埋め込み拡張が新しいインプレースPKGアップグレードで、かつその拡張がすでに有効化済みの場合、`com.keeper.keeperse` はMDMインストールと手動インストールの両方で、サイレントに置換リクエストを送信します。初回のサイレント有効化には、引き続きシステム拡張のMDMプロファイルが必要です。

***

### デプロイの順序 <a href="#deployment-order" id="deployment-order"></a>

すべての構成プロファイルをインストールパッケージより先に配信してください。パッケージの実行前にデバイス上にプロファイルが存在している必要がありますが、デバイスのベースライン構成の一部として数時間または数日前に配信しておくこともできます。以下は、一般的な1セッションでのデプロイ順序です。

1. Registration Key profile
2. System Extension profile
3. FDA (PPPC) profile
4. `InstallEnterpriseApplication` (`.pkg`)
5. `RestartDevice` (optional, recommended on first deploy)

<table><thead><tr><th width="200.6666259765625">ルール</th><th>重要な理由</th></tr></thead><tbody><tr><td>パッケージ実行前にプロファイルを配信</td><td>macOSは、ディスク上のファイルではなく、Keeper EPMのTeam IDとバンドル識別子に対してシステム拡張およびPPPCペイロードを評価します。パッケージの実行前にプロファイルがインストールされていれば、バイナリが配置されたときにTCC付与とシステム拡張の有効化が正しく適用されます。</td></tr><tr><td>初回デプロイ後に再起動</td><td>システム拡張プロファイルがある場合、システム拡張ホストアプリ（<code>com.keeper.keeperse</code> LaunchDaemon）が拡張の有効化リクエストを自動送信します。再起動により、有効化、FDAの適用、登録用の起動ジョブがクリーンなブート順で実行されます。</td></tr><tr><td>MDMコマンド間に短い間隔</td><td>通常は1～2秒の遅延を設けると、続くコマンドが届く前にデバイスがチェックインして各ペイロードを適用できます。正確な間隔は環境によって異なるため、ネットワーク状態、MDMプラットフォーム、デバイスのハードウェアに応じて、環境内で安定して動作する値に調整してください。</td></tr></tbody></table>

{% hint style="info" %}
3つのプロファイル（登録キー、システム拡張、FDA）は分かりやすくするために分けて示していますが、3つの異なる `.mobileconfig` ファイルとして配信する必要はありません。MDMのワークフローに適している場合は、3つのペイロードを1つの構成プロファイルにまとめることができます。Keeper EPMは、どのプロファイルに含まれているかではなく、内容によってシステム拡張およびFDAペイロードを検出します。
{% endhint %}

***

### プロファイル1: 登録キー <a href="#profile-1-registration-key" id="profile-1-registration-key"></a>

**ペイロードタイプ:** `com.apple.ManagedClient.preferences`

**書き込み先:** `/Library/Managed Preferences/com.keeper.keeper-privilege-manager.plist`

**キー:** `KEEPERREGCODE` (デプロイ用登録トークン。形式は `hostname:deployment-uid:private-key`)

#### ペイロードの例 <a href="#example-payload" id="example-payload"></a>

```xml
<key>PayloadType</key>
<string>com.apple.ManagedClient.preferences</string>
<key>PayloadContent</key>
<dict>
  <key>com.keeper.keeper-privilege-manager</key>
  <dict>
    <key>Forced</key>
    <array>
      <dict>
        <key>mcx_preference_settings</key>
        <dict>
          <key>KEEPERREGCODE</key>
          <string>YOUR_REGISTRATION_TOKEN</string>
        </dict>
      </dict>
    </array>
  </dict>
</dict>
```

インストールとサービス開始後、Keeper EPMは管理対象プリファレンスを読み取り、自動登録します。MDMモードでは登録ダイアログは表示されません。

#### デバイス上での確認 <a href="#verify-on-device" id="verify-on-device"></a>

```bash
# Content match (PayloadIdentifier may be a GUID)
profiles show -type configuration -output stdout-xml | grep -A5 'KEEPERREGCODE'
sudo plutil -p "/Library/Managed Preferences/com.keeper.keeper-privilege-manager.plist" 2>/dev/null | grep KEEPERREGCODE
curl -ks https://localhost:6989/api/Keeper/registration | python3 -m json.tool
```

***

### プロファイル2: システム拡張の事前承認 <a href="#profile-2-system-extension-pre-approval" id="profile-2-system-extension-pre-approval"></a>

**ペイロードタイプ:** `com.apple.system-extension-policy`

**拡張バンドルID:** `com.keeper.keeper-privilege-manager.monitor`

**Team ID:** `234QNB7GCA`

**拡張タイプ:** `EndpointSecurityExtension`

#### ペイロードの例 <a href="#example-payload-1" id="example-payload-1"></a>

```xml
<key>PayloadType</key>
<string>com.apple.system-extension-policy</string>
<key>AllowedSystemExtensions</key>
<dict>
  <key>234QNB7GCA</key>
  <array>
    <string>com.keeper.keeper-privilege-manager.monitor</string>
  </array>
</dict>
<key>AllowedSystemExtensionTypes</key>
<dict>
  <key>234QNB7GCA</key>
  <array>
    <string>EndpointSecurityExtension</string>
  </array>
</dict>
<key>AllowUserOverrides</key>
<false/>
```

{% hint style="info" icon="pencil-line" %}
MDMの事前承認だけでは拡張は登録されません。Keeper EPM 2.1.1.2以降では、このTeam IDとバンドルIDを承認する `system-extension-policy` プロファイルがインストールされ、ホストアプリが起動したときに、自動的に `OSSystemExtensionRequest` を送信します。検出はペイロード内容に基づき、プロファイルの `PayloadIdentifier` はIntuneが割り当てるGUIDを含む任意の一意な値で構いません。
{% endhint %}

#### デバイス上での確認 <a href="#verify-on-device-1" id="verify-on-device-1"></a>

```bash
# Content match — do not rely on a specific PayloadIdentifier string
profiles show -type configuration -output stdout-xml | grep -E 'system-extension-policy|keeper-privilege-manager.monitor|234QNB7GCA'
systemextensionsctl list | grep keeper-privilege-manager.monitor
# Expect: [activated enabled]
```

***

### プロファイル3: フルディスクアクセス (PPPC) <a href="#profile-3-full-disk-access-pppc" id="profile-3-full-disk-access-pppc"></a>

**ペイロードタイプ:** `com.apple.TCC.configuration-profile-policy`

**サービス:** `SystemPolicyAllFiles` (TCCキー `kTCCServiceSystemPolicyAllFiles`)

Keeper EPMは、**ラッパーアプリ**、**デーモン**、**ホストアプリ**、**システム拡張**にFDAが必要です。各PPPCエントリの `CodeRequirement` は、親や接頭辞のIDではなく、バイナリの実際のcodesign `Identifier` を使う必要があります。

#### 必要なFDA対象 <a href="#required-fda-targets" id="required-fda-targets"></a>

| UI名 (システム設定)                                | バンドルID / パス                                               | CodeRequirement内のcodesign `Identifier`                    |
| ------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- |
| KeeperPrivilegeManager                      | `com.keeper.endpoint-privilege-manager.launcher`          | `com.keeper.endpoint-privilege-manager.launcher`          |
| (ラッパーパス)                                    | `/Library/Keeper/KeeperPrivilegeManager.app`              | launcherと同じ                                               |
| (デーモン署名ID)                                  | `com.keeper.endpoint-privilege-manager.privilege-manager` | `com.keeper.endpoint-privilege-manager.privilege-manager` |
| (デーモンパス)                                    | `/Library/Keeper/sbin/KeeperPrivilegeManager`             | daemonと同じ                                                 |
| Keeper Endpoint Privilege Manager           | `com.keeper.keeper-privilege-manager`                     | `com.keeper.keeper-privilege-manager`                     |
| Keeper Endpoint Privilege Manager Extension | `com.keeper.keeper-privilege-manager.monitor`             | `com.keeper.keeper-privilege-manager.monitor`             |
| (埋め込み拡張パス)                                  | ホストアプリ配下 `Contents/Library/SystemExtensions/...`          | monitorと同じ                                                |

{% hint style="danger" %}
裸の `com.keeper.endpoint-privilege-manager` や `.service` は**使わないでください**。本番ビルドでは `.launcher` (ラッパー) と `.privilege-manager` (デーモン) を使います。`exec` 後にデーモンがラッパーからFDAを継承するとは**想定しないでください**。デーモンにも明示的に付与してください。
{% endhint %}

#### PPPCルール <a href="#pppc-rules" id="pppc-rules"></a>

* **`Allowed`** のみを使用します (`<integer>1</integer>` または `<true/>`)。同一エントリで `Allowed` と `Authorization` を併用しないでください。macOSがペイロードを拒否します。
* `CodeRequirement` の `identifier "..."` は、そのバイナリの `codesign -dv` の `Identifier=` と一致させる必要があります。本番 (Callpod Inc.) のTeam IDは `234QNB7GCA` です。
* 外側プロファイルの **`PayloadScope`** を**System**に設定します。
* 独自プロファイルを作成する場合は、一意の `PayloadUUID` と `PayloadIdentifier` を生成します。GUIDも利用できます。
* `MDMOverrides.plist` に `Allowed=1` があっても十分ではありません。`CodeRequirement` が不一致だと実行時のFDAは無効のままです (例: DownloadsでEPERM)。

#### 3つの識別子の整合 <a href="#three-way-identifier-alignment" id="three-way-identifier-alignment"></a>

MDMのPPPC付与をサイレントに適用するには (システム設定でユーザーに確認を求めない)、対象プロセスごとに以下の3つの識別子がすべて一致している必要があります。

<table><thead><tr><th width="67.6666259765625">#</th><th width="406.6666259765625">場所</th><th>一致すべき値</th></tr></thead><tbody><tr><td>1</td><td>アプリバンドルのコード署名 (<code>codesign -dvvvv … | grep ^Identifier</code>)</td><td>PPPCプロファイルエントリ内のバンドルID</td></tr><tr><td>2</td><td>アプリの <code>Info.plist</code> 内の <code>CFBundleIdentifier</code></td><td>上記と同じ</td></tr><tr><td>3</td><td>アプリを起動するLaunchDaemon plist内の <code>AssociatedBundleIdentifiers</code> 配列</td><td>上記と同じ</td></tr></tbody></table>

いずれかが欠落または不一致だと、macOSはPPPC付与を実行中プロセスに対応付けできません。MDMプロファイルがインストール済みでも、ユーザーは **\[システム設定]** → **\[プライバシーとセキュリティ]** → **\[フルディスクアクセス]** で手動承認を求められます。

#### KeeperPrivilegeManagerの整合確認 <a href="#verify-keeperprivilegemanager-alignment" id="verify-keeperprivilegemanager-alignment"></a>

```bash
# All three should return com.keeper.endpoint-privilege-manager.launcher
codesign -dvvvv /Library/Keeper/KeeperPrivilegeManager.app 2>&1 | grep ^Identifier
/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" \
  /Library/Keeper/KeeperPrivilegeManager.app/Contents/Info.plist
/usr/libexec/PlistBuddy -c "Print :AssociatedBundleIdentifiers:0" \
  /Library/LaunchDaemons/com.keeper.keeper-privilege-manager.plist
```

{% hint style="info" icon="pencil-line" %}
`AssociatedBundleIdentifiers` はmacOS 13.0 (Ventura) で導入されました。古いmacOSでは無視され、エラーにはなりません。Keeper EPMの最小システムバージョンはmacOS 13.0のため、このキーは無条件に含めて問題ありません。
{% endhint %}

#### FDAプロファイル適用の確認 <a href="#verify-fda-profile-application" id="verify-fda-profile-application"></a>

```bash
# Content match — PPPC grants for KEPM clients (PayloadIdentifier may be a GUID)
profiles show -type configuration -output stdout-xml | grep -E 'SystemPolicyAllFiles|endpoint-privilege-manager|keeper-privilege-manager'
```

TCCを深く確認するには、`MDMOverrides.plist` を調べます。このファイルを読むには、呼び出し元アプリ (例: ターミナル) 自身にもFDAが必要です。

```bash
sudo plutil -p "/Library/Application Support/com.apple.TCC/MDMOverrides.plist" | grep -i keeper
```

***

### パッケージのインストール <a href="#package-installation" id="package-installation"></a>

署名済み `.pkg` を管理対象Macから到達可能なHTTPSでホストし、MDM経由で配信します。

* **リクエストタイプ:** `InstallEnterpriseApplication`
* **マニフェスト:** pkg URLと任意のSHA-256チャンクマニフェストを持つ `software-package` アセット

#### 要件 <a href="#requirements" id="requirements"></a>

* 有効な **Developer ID Installer** 署名 (Callpod Inc.)
* MacがDNS解決、TLS完了、ファイアウォール経由でのURL到達が可能であること
* WebサーバーがHTTP**200**を返し、サーバーがファイルを読める権限であること

{% hint style="info" icon="pencil-line" %}
MDMが `InstallEnterpriseApplication` に対して**Acknowledged**を返しても、パッケージがインストールされた保証にはなりません。失敗に見える場合はデバイスログやディスク上のパスを確認してください。
{% endhint %}

#### デバイス上での確認 <a href="#verify-on-device-2" id="verify-on-device-2"></a>

```bash
pkgutil --pkgs | grep -i keeper
ls -ld "/Library/Keeper" "/Applications/Keeper"
launchctl list | grep keeper
```

想定されるlaunchdエントリは以下のとおりです。

* `com.keeper.keeper-privilege-manager` (メインサービス)
* `234QNB7GCA.com.keeper.keeper-privilege-manager.monitor` (システム拡張)
* `com.keeper.keeperse` (拡張有効化用ホストアプリ)

***

### 想定される最終状態 <a href="#expected-end-state" id="expected-end-state"></a>

MDMデプロイと再起動が成功したあと:

| 確認項目                    | 想定結果                                               |
| ----------------------- | -------------------------------------------------- |
| Keeperの3プロファイルすべて       | インストール済み (`profiles show -type configuration`)     |
| システム拡張                  | `systemextensionsctl list` で `[activated enabled]` |
| Post Install Stepsウィンドウ | **表示されない**                                         |
| エージェント登録                | `/api/Keeper/registration` で `IsRegistered: true`  |
| システム設定のFDA              | MDM付与が有効でもトグルが**オフ**に見える場合がある (MDM管理のFDAでは正常)      |

***

### クイック検証チェックリスト <a href="#quick-verification-checklist" id="quick-verification-checklist"></a>

デプロイ後、管理対象Macで実行します。

```bash
# Profiles — match product content (identifiers may be GUIDs)
profiles show -type configuration -output stdout-xml | grep -E 'system-extension-policy|SystemPolicyAllFiles|KEEPERREGCODE|keeper-privilege-manager.monitor'

# Extension
systemextensionsctl list | grep keeper-privilege-manager.monitor

# Registration
curl -ks https://localhost:6989/api/Keeper/registration

# Daemons
launchctl list | grep keeper
```

本番グループへ展開する前に、すべての確認を通過させてください。

***

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

| 症状                                    | 想定原因                                                            | 対応                                                                                                                                                                                       |
| ------------------------------------- | --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| FDAプロファイルはインストール済みだがTCC付与なし           | パッケージより前にFDAを配信                                                 | インストール**後**にFDAプロファイルを再配信                                                                                                                                                                |
| FDAプロファイルはインストール済みだが、ユーザーが手動承認を求められる  | LaunchDaemon plistに `AssociatedBundleIdentifiers` がない、または識別子不一致 | 3つの整合を確認: codesign ID = `Info.plist` の `CFBundleIdentifier` = `/Library/LaunchDaemons/com.keeper.keeper-privilege-manager.plist` の `AssociatedBundleIdentifiers[0]`。KEPM 2.1.0.1789以降を使用 |
| MacがFDAプロファイルを拒否                      | 不正なPPPCペイロード (`Allowed` + `Authorization`、不正なUUID)              | `profiles show` でペイロードを検証し、エントリごとに制御キーワードを1つに                                                                                                                                            |
| 拡張が `[activated enabled]` でない         | システム拡張プロファイル欠落、またはホストアプリ未実行                                     | sysextポリシー内容 (Team ID + monitorバンドルID) を確認し、再起動または再デプロイ                                                                                                                                  |
| Post Install Stepsウィンドウが表示される (FDAのみ) | ホストアプリ起動時にFDA PPPC内容がない                                         | PPPCの `SystemPolicyAllFiles` 付与を確認し、FDAを再配信                                                                                                                                              |
| エージェント未登録                             | regcode管理プリファレンス欠落、または古いKEPMビルド                                 | `/Library/Managed Preferences/com.keeper.keeper-privilege-manager.plist` を確認。KEPM 2.1.1.2以降を使用                                                                                           |
| パッケージはAcknowledgedだが未インストール           | HTTP 403、署名不良、ハッシュ不一致                                           | ホスティングを修正。`pkgutil --check-signature` で署名を確認                                                                                                                                             |
| Intuneデプロイ後にPost Install Stepsウィンドウ   | プロファイル識別子がGUID (想定どおり)                                          | Keeperの逆DNS識別子ではなく、`profiles … -output stdout-xml` でペイロード**内容**を確認                                                                                                                       |

***

### 関連ページ <a href="#related-pages" id="related-pages"></a>

* [システム拡張の構成](/keeperpam/jp/endpoint-privilege-manager/deployment/deploy-with-macos/macos-system-extension-configuration.md)
* [保護パスの設計意図](/keeperpam/jp/endpoint-privilege-manager/deployment/deploy-with-macos/protected-path-design-intent.md)
* [二層バイパスアーキテクチャ](/keeperpam/jp/endpoint-privilege-manager/deployment/deploy-with-macos/two-layer-bypass-architecture.md)
* [署名付き証明書のサポート](/keeperpam/jp/endpoint-privilege-manager/deployment/deployment-reference/signed-certificate-support.md)


---

# 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, and the optional `goal` query parameter:

```
GET https://docs.keeper.io/keeperpam/jp/endpoint-privilege-manager/deployment/deploy-with-macos/macos-deployment-via-mdm.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
