Appleプラットフォームのセキュリティ
iOS、iPadOS、およびmacOSでの機能拡張のサポート
iOS、iPadOS、およびmacOSでは、機能拡張を提供することで、アプリの機能をほかのアプリに提供できます。機能拡張は、署名された特殊な目的を持つ実行可能バイナリで、アプリ内にパッケージ化されています。アプリのインストール時に機能拡張が自動的に検出され、対応するシステムを持ったほかのアプリで利用できるようになります。
拡張ポイント
機能拡張をサポートするシステム領域は、拡張ポイントと呼ばれます。それぞれの拡張ポイントがAPIを提供し、その領域のポリシーを適用します。システムは、拡張ポイント固有のマッチングルールに基づいて、利用できる機能拡張を判断します。システムは必要に応じて機能拡張プロセスを自動的に起動し、そのプロセスの終了まで管理します。また、エンタイトルメントを使うと、機能拡張の利用可否を特定のシステムアプリに制限できます。例えば、「今日」表示ウィジェットは通知センターにだけ表示され、共有機能拡張は「共有」パネルからのみ利用できます。拡張ポイントの例としては、「今日」ウィジェット、共有、アクション、写真編集、ファイルプロバイダ、カスタムキーボードなどがあります。
機能拡張との通信方法
機能拡張は、自身のアドレス空間内で実行されます。機能拡張と機能拡張を起動したアプリ間の通信には、システムフレームワークが仲介するプロセス間通信が使用されます。互いのファイルやメモリ空間にはアクセスできません。機能拡張は、機能拡張同士、機能拡張を含むアプリ本体、および機能拡張を使用するアプリからは互いに分離されるように設計されています。ほかの他社製アプリと同様にサンドボックス化され、機能拡張を含むアプリ本体のコンテナとは別のコンテナを持ちます。ただし、プライバシーコントロールへのアクセスは、アプリ本体と同じものになります。そのため、ユーザがアプリに「連絡先」へのアクセス権を付与した場合、このアクセス権はそのアプリに埋め込まれた機能拡張に対しては適用されますが、そのアプリが起動する別のアプリの機能拡張には適用されません。
カスタムキーボードの使用方法
カスタムキーボードは特殊な種類の機能拡張であり、ユーザがシステム全体に対して有効にするものです。キーボード機能拡張が有効になると、パスコード入力とセキュリティ保護されたテキストの表示を除くすべてのテキストフィールドで使用されます。ユーザデータの転送を制限するため、カスタムキーボードはデフォルトで厳しく制限されたサンドボックス内で実行されます。これにより、ネットワーク、プロセスに代わってネットワーク操作を実行するサービス、および入力データの漏えいが可能なAPIへのアクセスがブロックされます。カスタムキーボードのデベロッパは、機能拡張にOpen Accessを付与することを要求できます。これにより、その機能拡張は、ユーザの同意を得たあとにデフォルトのサンドボックス内で実行できるようになります。
MDMと機能拡張
モバイルデバイス管理(MDM)ソリューションに登録されたデバイスでは、書類とキーボードの機能拡張はManaged Open Inルールに従って動作します。例えば、MDMソリューションは、ユーザが管理対象アプリから管理対象外ドキュメントプロバイダに書類を書き出したり、管理対象アプリ内で管理対象外キーボードを使用したりすることを禁止できます。また、アプリのデベロッパはアプリ内で他社製のキーボード機能拡張の使用を禁止することもできます。