Skip to main content
この Library Item は Mac コンピュータで利用できます

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 の詳細はこちら。
  • Network Extensions: コンテンツフィルタ、DNS プロキシ、VPN クライアントなどのネットワーク拡張機能アプリを System Extension として配布します。NetworkExtension の詳細はこちら。
  • Endpoint Security: EndpointSecurity API を使用してシステムイベントを監視およびブロックし、セキュリティポリシーに準拠して悪意のあるアクティビティから保護します。Endpoint Security の詳細はこちら
これらの新しいフレームワークの外部で動作する kext(仮想化ソフトウェアなど)は、Apple が同等の System Extension フレームワークを提供するまで kext を使用し続ける必要があります。 System Extension は、別の構成プロファイルを使用して許可することもできます。 まだ Kernel Extension を使用しているアプリケーションを使用している場合は、ソフトウェアベンダーに連絡して System Extension への移行を促すことをお勧めします。

追加情報

Kernel Extensions Overview - Apple Developer Documentation Archive 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 を使用している可能性が高いです
systemextensionsctl-list.sh
System Extension がインストールされていない場合に表示される出力の例を次に示します。
terminal-output.txt
System Extension がインストールされている場合に表示される出力の例を次に示します。
systemextensionsctl-with-extensions.txt

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

次の手順に従って、アプリケーションの System Extension を事前承認する System Extension プロファイルを Iru Endpoint で作成します。 この Library Item を Iru Endpoint の Library に追加するには、Library の概要の記事に記載されている手順に従ってください。
1

プロファイルに名前を付ける

新しいプロファイルに、System Extension Allowance などのわかりやすい名前を付けます。
2

Blueprint を選択する

対象の Blueprints を選択します。
3

ユーザーの承認を設定する

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

Team ID を入力する

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

名前を指定する

必要に応じて、Team ID に関連付ける 名前 を指定します。
6

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 の種類を承認します。
7

追加の Team ID を追加する

必要に応じて、Add Team ID ボタンを選択して、1 つのプロファイルで追加の System Extension を許可できます。
8

設定を保存する

保存 を選択します。