Appleプラットフォームのセキュリティ
WidgetKitのセキュリティ
WidgetKitは、デベロッパがウィジェットとWatchコンプリケーションを提供するために使用するフレームワークです。どちらにも機密情報が表示されることがあり、「常にオン」画面があるデバイスでは特に、非常に目に付きやすくなる可能性があります。
iOSでは、ロック画面上と「常にオン」のときに機密データを表示するかどうかを、ユーザが構成できます。「設定」では、「設定」>「Face IDとパスコード」の「ロック中にアクセスを許可」セクションで、ロック画面ウィジェットのデータアクセスを無効にすることができます。
Apple Watchでは、「設定」>「画面表示と明るさ」>「常にオン」>「機密コンプリケーションを非表示」と選択することで、「常にオン」のときに機密データを表示するかどうかをユーザが構成できます。また、すべてのコンプリケーションまたは個々のコンプリケーションに墨消し済みの内容を表示することを選択することもできます。
ユーザが個人情報と見なされる内容を非表示にすることを選択した場合、WidgetKitはプレースホルダまたは墨消しをレンダリングします。墨消しを構成するには、デベロッパは次のことを実行する必要があります:
1. redacted(reason:)
コールバックを実装します。
2. privacy
プロパティを読み出します。
3. カスタムプレースホルダビューを提供します。
また、デベロッパはunredacted()
ビュー修飾子を使用してビューを墨消しなしとしてレンダリングすることもできます。
デベロッパは、個々のビューをプライバシーセンシティブとしてマークする代わりに、例えばウィジェットの内容全体がプライバシーセンシティブである場合は、ウィジェット機能拡張にデータ保護機能を追加することができます。ユーザがデバイスのロックを解除して、選択されているプライバシーレベルを照合するまで、WidgetKitにはウィジェットの内容ではなくプレースホルダが表示されます。デベロッパは、Xcodeでウィジェット機能拡張のデータ保護機能を有効にしてから、提供したいプライバシーのレベルに合う値にData Protection
エンタイトルメントを設定する必要があります:
NSFileProtectionComplete
NSFileProtectionCompleteUnlessOpen
デバイスがパスコードで保護されている場合、WidgetKitはこれらのウィジェットのコンテンツを非表示にし、デバイスが再起動されてからユーザが認証されるまで、プレースホルダを表示します。また、これらのiOSウィジェットをMacでiPhoneウィジェットとして使用することはできません。