> ## Documentation Index
> Fetch the complete documentation index at: https://docs.iru.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Iru Endpoint による macOS のシステム拡張機能

> macOS のシステム拡張機能と、Iru Endpoint でそれらを管理する方法について説明します。ネットワーク拡張機能、Endpoint Security、ドライバー拡張機能について理解します。

<Callout icon="apple" color="#B84A7A" iconType="regular">この Library Item は Mac コンピュータで利用できます</Callout>

### System Extension とは

System Extension は、macOS における Kernel Extension（kext）の最新の代替手段です。System Extension により、Apple はこれまで kext に限られていたタスクを開発者が実行するための新しいフレームワークを提供しています。System Extension の主な利点は、カーネル空間ではなくユーザー空間で実行されるため、macOS に組み込まれたセキュリティや安定性を損なうことがない点です。kext は引き続き動作しますが、Apple は特定の種類を非推奨にしており、開発者は同等のフレームワークが利用可能になった時点で kext を System Extension に移行する必要があります。

現在、kext を置き換えるために 3 つの新しい System Extension フレームワークが利用可能です。

* **DriverKit**: USB、シリアル、NIC、HID デバイス用のドライバーを作成します。[DriverKit の詳細はこちら。](https://developer.apple.com/documentation/driverkit)
* **Network Extensions**: コンテンツフィルタ、DNS プロキシ、VPN クライアントなどのネットワーク拡張機能アプリを System Extension として配布します。[NetworkExtension の詳細はこちら。](https://developer.apple.com/documentation/networkextension)
* **Endpoint Security**: EndpointSecurity API を使用してシステムイベントを監視およびブロックし、セキュリティポリシーに準拠して悪意のあるアクティビティから保護します。[Endpoint Security の詳細はこちら](https://developer.apple.com/documentation/endpointsecurity)

これらの新しいフレームワークの外部で動作する kext（仮想化ソフトウェアなど）は、Apple が同等の System Extension フレームワークを提供するまで kext を使用し続ける必要があります。

System Extension は、別の構成プロファイルを使用して許可することもできます。

まだ Kernel Extension を使用しているアプリケーションを使用している場合は、ソフトウェアベンダーに連絡して System Extension への移行を促すことをお勧めします。

#### 追加情報

[Kernel Extensions Overview](https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/KernelProgramming/Extend/Extend.html#//apple_ref/doc/uid/TP30000905-CH220) - Apple Developer Documentation Archive

[System Extensions](https://developer.apple.com/system-extensions/) - Apple Developer

### Kernel Extension とは

Kernel Extension（kext と呼ばれることもあります）を使用すると、開発者は macOS カーネルにコードを動的に読み込むことができます。複雑なアプリが正しく機能するための内部カーネルインターフェイスへのアクセスを提供します。例としては、Parallels や VMware Fusion などの仮想化アプリケーションやハイパーバイザーがあります。

### Kernel Extension と System Extension の違い

ソフトウェアが System Extension と kext のどちらを使用しているかわからない場合は、いくつかの方法で確認できます。

* ソフトウェアの製造元に問い合わせる
* ソフトウェアのインストール後、以下のコマンドを実行してアクティブなすべての System Extension を一覧表示する。System Extension が一覧に表示されない場合、そのソフトウェアはレガシーの kext を使用している可能性が高いです

```bash systemextensionsctl-list.sh theme={null}
systemextensionsctl list
```

System Extension がインストールされていない場合に表示される出力の例を次に示します。

```bash terminal-output.txt lines theme={null}
Iru Endpoint Support@TestMac1 ~ % systemextensionsctl list
0 extension(s)
```

System Extension がインストールされている場合に表示される出力の例を次に示します。

```bash systemextensionsctl-with-extensions.txt lines theme={null}
Iru Endpoint Support@TestMac1 ~ % systemextensionsctl list
1 extension(s)

--- com.apple.system_extension.endpoint_security

enabled active teamID bundleID (version) name [state]

* * 9PTGMPNXZ2 com.symantec.mes.systemextension 

(10.0.0/10.0.0) Symantec  

[activated enabled]
```

### System Extension プロファイルを作成する

次の手順に従って、アプリケーションの System Extension を事前承認する System Extension プロファイルを Iru Endpoint で作成します。

この Library Item を Iru Endpoint の Library に追加するには、[Library の概要](/ja/endpoint/library/library-items-profiles/library-overview)の記事に記載されている手順に従ってください。

<Steps>
  <Step title="プロファイルに名前を付ける">
    新しいプロファイルに、*System Extension Allowance* などのわかりやすい名前を付けます。
  </Step>

  <Step title="Blueprint を選択する">
    対象の [Blueprints](/ja/endpoint/blueprints/assignment-maps) を選択します。
  </Step>

  <Step title="ユーザーの承認を設定する">
    オプション: **Allow users to approve system extensions** の選択を解除すると、ローカル管理者を含む Mac 上のすべてのユーザーが、プロファイルで承認されていない追加の System Extension を承認できなくなります。このオプションを選択すると、ユーザーが以前に承認した System Extension も承認が取り消されます。
  </Step>

  <Step title="Team ID を入力する">
    **Team ID** を入力します。これは、上記の *systemextensionsctl list* コマンドで生成されるターミナル出力の 3 列目にある識別子です。
  </Step>

  <Step title="名前を指定する">
    必要に応じて、Team ID に関連付ける **名前** を指定します。
  </Step>

  <Step title="System Extension を設定する">
    **System Extensions** の部分で、必要に応じて **Approve all system extensions** のデフォルト値を変更できます。このオプションをデフォルト設定のままにすると、指定した Team ID のすべての System Extension が事前承認されます。必要に応じて、このオプションを次のいずれかに設定できます。

    * **Allow specific system extensions**: 承認する特定の System Extension の正確なバンドル ID を指定できます。上記の *systemextensionsctl list* コマンドで生成されたバンドル ID を使用します。また、必要に応じて、これらの特定の拡張機能の 1 つ以上を、Iru Endpoint やベンダー提供のパッケージなどの管理ツールによって自動的に削除できるように設定することもできます。
    * **Allow specific system extension types**: Endpoint Security 拡張機能、ドライバー拡張機能、ネットワーク拡張機能など、事前承認する開発者の System Extension の種類を指定できます。Symantec の例では、上記の *systemextensionsctl list* コマンドで生成された拡張機能の種類と一致するため、**Endpoint security extensions** の種類を承認します。
  </Step>

  <Step title="追加の Team ID を追加する">
    必要に応じて、**Add Team ID** ボタンを選択して、1 つのプロファイルで追加の System Extension を許可できます。
  </Step>

  <Step title="設定を保存する">
    **保存** を選択します。
  </Step>
</Steps>
