macOSのシステムおよびカーネル機能拡張
macOS 10.15以降を使用すると、デベロッパは、カーネルレベルではなくユーザ領域で実行されるシステム機能拡張をインストールおよび管理することでmacOSの機能を拡張できます。システム機能拡張は、ユーザ領域で実行することにより、macOSの安定性とセキュリティを向上させます。kextにはもともとオペレーティングシステム全体へのフルアクセス権がありますが、ユーザ領域で実行される機能拡張には、指定された機能を実行するために必要な特権のみが付与されます。
システム機能拡張は、MDMを使用する堅牢な管理をサポートします。これには、特定のデベロッパまたは特定の種類(ネットワーク機能拡張など)のすべての機能拡張をユーザの操作なしで読み込むことを許可する機能が含まれます。必要に応じて、ユーザが独自のシステム機能拡張の読み込みを承認することをMDMで禁止できます。
macOS 11.3からmacOS 11.6.4まででは、システム機能拡張プロファイルに変更を加えると、機能拡張の状態に直接影響を及ぼします。例えば、特定の機能拡張が承認待ちのとき、その機能拡張を許可する構成プロファイルがプッシュされると、機能拡張の読み込みが許可されます。逆に、承認が取り消されると、そのシステム機能拡張は読み込みが解除され、Macの次回の再起動時に削除するものとしてマークされます。特定のシステム機能拡張がそれ自体の読み込みの解除を試行すると、読み込みの解除を認可するために管理者の資格情報を求めるインタラクティブな認証ダイアログが表示されます。
macOS 12.0.1以降では、RemovableSystemExtensions
というシステム機能拡張ペイロードのディクショナリを使用して、どのアプリが自身のシステム機能拡張を削除できるようにするかをMDM管理者が指定できます。システム拡張機能の削除には、ローカル管理者の認証が必要ありません。これは、自社アプリの自動アンインストーラを提供する可能性があるベンダーに特に便利です。
カーネル拡張
macOS 11以降、他社製のカーネル機能拡張(kext)は、有効になっている場合はオンデマンドでカーネルに読み込むことができません。kextには、カーネルに変更を読み込むためにユーザの承認とmacOSの再起動が必要であり、Appleシリコン搭載のMacではセキュアブートが「低セキュリティ」に構成されている必要があります。
デベロッパは、DriverKitやNetworkExtensionなどのフレームワークを使用して、USBおよびヒューマンインターフェイスドライバ、エンドポイントセキュリティツール(データ損失防止やその他のエンドポイントエージェントなど)、VPNおよびネットワークツールのすべてを、kextを作成しなくても作成できます。他社製のセキュリティエージェントを使用する必要があるのは、これらのAPIを利用する場合、またはそれらに移行してカーネル機能拡張から離れるための堅牢なロードマップがある場合のみです。
重要: macOSではkextは推奨されなくなりました。kextはオペレーティングシステムの整合性と信頼性を危険にさらします。ユーザはむしろカーネルの拡張を必要とせず、代わりにシステム機能拡張を使用するソリューションを好むでしょう。
IntelプロセッサまたはAppleシリコンを搭載したmacOS 11以降のMacでkextを追加する
カーネル拡張を使用する必要がある場合は、登録タイプに基づく承認方法を確認してください。
MDM登録タイプ | 承認方法 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
未登録 ユーザ登録 | 新しいkextがインストールされ、それを読み込もうとする場合は、以下の場所の警告ダイアログからユーザが再起動を開始する必要があります:
この再起動により、カーネルのブート前にAuxKCの再構築が開始されます。 | ||||||||||
デバイス登録 自動デバイス登録 | 新しいkextがインストールされ、それを読み込もうとするたびに、次のいずれかの方法で再起動を開始する必要があります:
注記: kext許可リストプロファイルは、kextを指定するMDMソリューションによって最初にインストールされる必要があります。macOS 11.3以降では、ユーザの都合のよい時点で再起動を完了するようMDMからユーザに通知することがオプションで許可されます。 |
Appleシリコンを搭載したMacでkextを追加するための追加手順
Appleシリコンを搭載したMacにカーネル拡張を追加する場合は、追加手順を実行する必要があります。
MDM登録タイプ | 承認方法 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
未登録 | ユーザによるkext管理では、セキュリティ設定をダウングレードするにはrecoveryOSを再起動する必要があります。ユーザがrecoveryOSで再起動し、管理者として認証されるには、電源ボタンを押したままにする必要があります。電源ボタンを押してrecoveryOSに入った場合にのみ、Secure Enclaveでポリシーの変更が受け入れられます。次に、ユーザは「低セキュリティ」チェックボックスと「確認済みの開発元から提供されたカーネル機能拡張のユーザ管理を許可」オプションを選択し、Macを再起動する必要があります。 | ||||||||||
ユーザ登録 | ユーザがセキュリティ設定をダウングレードするには、recoveryOSで再起動する必要があります。ユーザがrecoveryOSで再起動し、ローカル管理者として認証されるには、電源ボタンを押したままにする必要があります。電源ボタンを押してrecoveryOSに入った場合にのみ、Secure Enclaveでポリシーの変更が受け入れられます。次に、ユーザは「低セキュリティ」を選択し、「確認済みの開発元から提供されたカーネル機能拡張のユーザ管理を許可」にチェックマークを付けて、Macを再起動する必要があります。 | ||||||||||
デバイス登録 | ユーザがセキュリティ設定をダウングレードするにはrecoveryOSで再起動する必要があることが、MDMソリューションからユーザに通知されるはずです。ユーザがrecoveryOSで再起動し、管理者として認証されるには、電源ボタンを押したままにする必要があります。電源ボタンを押してrecoveryOSに入った場合にのみ、Secure Enclaveでポリシーの変更が受け入れられます。次に、ユーザは「低セキュリティ」を選択し、「確認済みの開発元から提供されたカーネル機能拡張のリモート管理を許可」にチェックマークを付けて、Macを再起動する必要があります。 お使いのデバイスでこの機能がサポートされているかどうかについては、MDMベンダーの資料を参照してください。 | ||||||||||
自動デバイス登録 (Macのシリアル番号がApple School Manager、Apple Business Manager、またはApple Business Essentialsに表示され、サービスにリンクされているMDMソリューションにMacが登録されている必要があります。) | これはMDMソリューションで自動的に管理できます。 お使いのデバイスでこの機能がサポートされているかどうかについては、MDMベンダーの資料を参照してください。 |
カーネル機能拡張とシステム整合性保護
SIP(システム整合性保護)が有効になっている場合、各kextの署名は、AuxKCに含められる前に検証されます。
SIPが無効になっている場合、kext署名は適用されません。
このアプローチにより、Apple Developer Programに参加していないデベロッパやユーザが署名される前にkextをテストするための、「セキュリティ制限なし」フローを使用できます。