iOS のセキュリティ機能とプライバシー機能
この記事では、iOS でのセキュリティとプライバシーの操作と、それらが Xamarin.iOS アプリに与える影響について説明します。
Apple は、iOS 10 (以降) のセキュリティとプライバシーの両方にいくつかの機能強化を行いました。これにより、開発者はアプリのセキュリティを強化し、エンド ユーザーのプライバシーを確保できます。 この記事では、Xamarin.iOS アプリでのこれらの機能の実装について説明します。
一般的な機能強化
iOS 10 のセキュリティとプライバシーに対して、次の一般的な変更が行われました。
- Common Data Security Architecture (CDSA) API は非推奨になりました。非対称キーを生成するには、SecKey API に置き換える必要があります。
- 新しい
NSAllowsArbitraryLoadsInWebContent
キーはアプリの Info.plist ファイルに追加でき、引き続き Apple Transport Security (ATS) 保護がアプリの他の部分で有効な状態で、Web ページが正しく読み込まれます。 詳細については、Microsoft のアプリ トランスポート セキュリティのドキュメントを参照してください。 - iOS 10 と macOS Sierra の新しいクリップボードでは、ユーザーがデバイス間でコピーして貼り付けることができるため、クリップボードを特定のデバイスに制限でき、特定の時点でタイムスタンプが自動的にクリアされるように API が拡張されました。 さらに、名前付きペーストボードは永続化されなったため、共有ペーストボード コンテナーに置き換える必要があります。
- すべての SSL/TLS 接続で、RC4 対称暗号が既定で無効になりました。 さらに、Secure Transport API は SSLv3 をサポートしなくなったため、開発者は SHA-1 暗号化および 3DES 暗号化の使用をできるだけ早く停止することをおすすめします。
プライベート ユーザー データへのアクセス
iOS 10 (またはそれ以降) で実行されているアプリは、アプリがアクセスを望む理由をユーザーに説明する 1 つ以上のプライバシー キーを Info.plist ファイルに入力して、特定の機能またはユーザー情報にアクセスする意図を静的に宣言する必要があります。
重要
必要なキーを提供できないアプリは、制限された機能またはユーザー情報のいずれかにアクセスしようとすると、エラーなしでシステムによってサイレント終了されます。 iOS 10 でアプリが予期せず失敗し始めた場合は、必要な Info.plist がすべて指定されていることを確認してください。
次のプライバシー関連のキーを使用できます。
- プライバシー - Apple Music の使用状況の説明 (
NSAppleMusicUsageDescription
) - 開発者は、アプリがユーザーのメディア ライブラリにアクセスする理由を説明できます。 - プライバシー - Bluetooth 周辺機器の使用状況の説明 (
NSBluetoothPeripheralUsageDescription
) - 開発者は、アプリがユーザーのデバイス上の Bluetooth にアクセスする理由を説明できます。 - プライバシー - 予定表の使用状況の説明 (
NSCalendarsUsageDescription
) - 開発者は、アプリがユーザーの予定表にアクセスする理由を説明できます。 - プライバシー - カメラの使用状況の説明 (
NSCameraUsageDescription
) - 開発者は、アプリがデバイスのカメラにアクセスする理由を説明できます。 - プライバシー - 連絡先の使用状況の説明 (
NSContactsUsageDescription
) - 開発者は、アプリがユーザーの連絡先にアクセスする理由を説明できます。 - プライバシー - ヘルスケア共有の使用状況の説明 (
NSHealthShareUsageDescription
) - 開発者は、アプリがユーザーの健康データにアクセスする理由を説明できます。 詳細については、Apple の HKHealthStore クラス リファレンスを参照してください。 - プライバシー - ヘルスケア更新の使用状況の説明 (
NSHealthUpdateUsageDescription
) - 開発者は、アプリがユーザーの健康データを編集する理由を説明できます。 詳細については、Apple の HKHealthStore クラス リファレンスを参照してください。 - プライバシー - HomeKit の使用状況の説明 (
NSHomeKitUsageDescription
) - 開発者は、アプリがユーザーの HomeKit 構成データにアクセスする理由を説明できます。 - プライバシー - 位置情報 (常時) の使用状況の説明 (
NSLocationAlwaysUsageDescription
) - 開発者は、アプリが常にユーザーの場所にアクセスできるようにする理由を説明できます。 - [非推奨] プライバシー - 位置情報の使用状況の説明 (
NSLocationUsageDescription
) - 開発者は、アプリがユーザーの位置情報にアクセスする理由を説明できます。 注: このキーは、iOS 8 以降では非推奨になりました。 代わりに、NSLocationAlwaysUsageDescription
タグまたはNSLocationWhenInUseUsageDescription
タグを使用してください。 - プライバシー - 位置情報 (使用時) の使用状況の説明 (
NSLocationWhenInUseUsageDescription
) - 開発者は、アプリの実行中にユーザーの位置情報にアクセスする理由を説明できます。 - [非推奨] プライバシー - メディア ライブラリの使用状況の説明 - 開発者は、アプリがユーザーのメディア ライブラリにアクセスする理由を説明できます。 注: このキーは、iOS 8 以降では非推奨になりました。 代わりに、
NSAppleMusicUsageDescription
を使用してください。 - プライバシー - マイクの使用状況の説明 (
NSMicrophoneUsageDescription
) - 開発者は、アプリがデバイスのマイクにアクセスする理由を説明できます。 - プライバシー - モーションの使用状況の説明 (
NSMotionUsageDescription
) - 開発者は、アプリがデバイスの加速度計にアクセスする理由を説明できます。 - プライバシー - フォト ライブラリの使用状況の説明 (
NSPhotoLibraryUsageDescription
) - 開発者は、アプリがユーザーのフォト ライブラリにアクセスする理由を説明できます。 - プライバシー - リマインダーの使用状況の説明 (
NSRemindersUsageDescription
) - 開発者は、アプリがユーザーのリマインダーにアクセスする理由を説明できます。 - プライバシー - Siri の使用状況の説明 (
NSSiriUsageDescription
) - 開発者は、アプリがユーザー データを Siri に送信する理由を説明できます。 - プライバシー - 音声認識の使用状況の説明 (
NSSpeechRecognitionUsageDescription
) - 開発者は、アプリが Apple の音声認識サーバーにユーザー データを送信する理由を説明できます。 - プライバシー - TV プロバイダーの使用状況の説明 (
NSVideoSubscriberAccountUsageDescription
) - 開発者は、アプリがユーザーの TV プロバイダー アカウントにアクセスする理由を説明できます。
Info.plist キーの操作の詳細については、Apple の Information Property List Key リファレンスを参照してください。
プライバシー キーの設定
iOS 10 (以降) で HomeKit にアクセスする次の例を考えてみましょう。開発者はアプリの Info.plist ファイルに NSHomeKitUsageDescription
キーを追加し、アプリがユーザーの HomeKit データベースにアクセスする理由を宣言する文字列を提供する必要があります。 この文字列は、アプリを初めて実行するとユーザーに表示されます:
Xamarin.iOS for Visual Studio では、現在、既定の iOS マニフェスト エディター内からの Info.plist プライバシー キーの編集はサポートされていません。 代わりに、汎用 PList エディターを使用する必要があるため、次の操作を行います。
ソリューション エクスプローラーで、Info.plist ファイルを右クリックし、[プログラムから開く...] を選択します。
プログラムの一覧から汎用 PList エディターを選択してファイルを開き、[OK] をクリックします。
エディターの + 最後の行にあるボタンをクリックして、新しいエントリを一覧に追加します。 これは "カスタム プロパティ" と呼ばれ、タイプが
String
に設定され、空の値が設定されます。プロパティ名をクリックすると、ドロップダウンが表示されます。
ドロップダウン リストから、プライバシー キー (プライバシー - HomeKit の使用状況の説明 など) を選択します。
アプリが特定の機能またはユーザー情報にアクセスする理由の説明を [値] 列に入力します。
変更をファイルに保存します。
重要
上記の例では、Info.plist ファイルで NSHomeKitUsageDescription
キーを設定しないと、iOS 10 (またはそれ以降) で実行すると、アプリは、エラーなしで (実行時にシステムによって閉じられている) がサイレントに失敗します。
まとめ
この記事では、Apple が iOS 10 で行ったセキュリティとプライバシーの変更と、それらが Xamarin.iOS アプリに与える影響について説明しました。