iOS 用 Intune App SDK - Web-View 機能

アプリケーション内での Web コンテンツの表示

iOS では、Web ビューを使用して、アプリのコンテキストを離れることなく、さまざまな Web コンテンツを表示できます。 一部のアプリケーションでは、複数のプラットフォーム間で機能や UI を共有する方法として Web ビューを使用する場合もあります。

Web ビューはアプリ内に存在するため、データ漏洩の可能性にさらされます。 ユーザーがアプリ内の任意の外部 Web ページに移動できる場合 (意図的なアプリ設計またはレンダリングされた Web ページの html コンテンツ内の公開されているリンクを巧みに操作することにより)、ユーザーは管理対象データをアプリからリークできる可能性があります。

Intune MAM SDK には、マネージド コンテンツとアンマネージド コンテンツの両方がアプリ内の Web ビューを介して表示されるさまざまなシナリオを処理するためのいくつかの API が用意されています。 これらの API は、アプリにサインインしているマネージド ユーザーがいる場合にのみ呼び出す必要があります。 どの API がどのシナリオに適用されるかに関するクイック ガイドとして、次の表を参照してください。

シナリオ API
任意の Web ページのリスクがないユーザーと組織のコンテンツのみ API は必要ありません
非ユーザーおよび組織に外のコンテンツのみ TreatAllWebViewsAsUnmanaged を設定します Info.plist
ユーザー/組織と非ユーザー/組織外のコンテンツの混在 (大半が非ユーザー/組織以外) Info.plistTreatAllWebViewsAsUnmanagedを設定し、ユーザーまたは組織データを含む Web ビューでIntuneMAMWebViewPolicyCurrentIdentitysetWebViewPolicy:forWebViewer:を使用する
ユーザー/組織と非ユーザー/組織外コンテンツの組み合わせ (過半数のユーザー/組織) setWebViewPolicy:forWebViewer: は、ユーザーまたは組織のデータが含まれていない Web ビューのIntuneMAMWebViewPolicyUnmanagedでのみ使用してください
任意の Web ページが存在するリスクがある、ユーザーまたは組織のコンテンツ TreatAllWebViewsAsUnmanagedsetWebViewPolicy:forWebViewer:を適切に使用した後、任意の Web ページに移動する可能性のある Web ビューのIntuneMAMWebViewPolicyDelegateも実装します

Web ビュー シナリオ 1: ユーザーまたは組織のコンテンツを表示する Web ページのみ

アプリがユーザーまたは組織のコンテンツをレンダリングする方法として Web ビューのみを使用し、Web ビューが任意の外部 Web ページに移動するリスクがない場合は、API または設定を使用する必要はありません。 既定では、SDK はアプリ内に表示されるすべての Web ビューを、現在の UI ポリシー ID に属するコンテンツとして扱います。

マネージド ユーザーがアプリ内で Web ビューを開くと、Web ビューからのすべての切り取り/コピー データはマネージド コンテンツとして扱われます。 Web ビューへの貼り付けは、管理対象アカウントのポリシーに従って処理されます。

管理されていないユーザーがアプリ内の Web ビューを開くと、Web ビューからの切り取り/コピー データはアンマネージド コンテンツとして扱われます。 Web ビューへの貼り付けは、アンマネージド アカウントによって行われたかのように扱われ、追加の制限は課されません。

Web ビュー シナリオ 2: ユーザーまたは組織のコンテンツを表示しない Web ページのみ

Web ビュー内にユーザーまたは組織のコンテンツが表示されないことがわかっている場合は、アプリのInfo.plistTreatAllWebViewsAsUnmanagedYES に設定できます。 これにより、Web ビュー内で任意のユーザーが実行するすべての切り取り、コピー、貼り付け操作が管理されていないものとして扱われます。 アクションを実行するために使用したアカウントの管理状態に関係なく、アクションは管理されていないユーザーによって実行されたかのように扱われます。

そうすることで、マネージド アプリのコンテンツが Web ビューを通じてアプリ外部にリークされなくなります。 アプリが Web ビューのみを使用して、プライバシーに関する通知、EULA、またはユーザーが表示する必要のないその他の静的ページ コンテンツを表示する場合、このフラグを設定することをお勧めします。

TreatAllWebViewsAsUnmanagedを設定すると、Web ビュー自体が管理されていないと見なされるので、Web ビュー内に表示されるすべてのコンテンツを他の管理されていないアプリにコピーして貼り付けることができます

Web ビュー シナリオ 3: ユーザー/組織コンテンツと非ユーザー/組織外コンテンツの混在

より複雑なアプリでは、ユーザー/組織ビューと非ユーザー/組織以外の Web ビューの組み合わせを使用する場合があります。 アプリは、プライバシーに関する通知を表示するために Web ビューを使用する場合がありますが、ユーザー コンテンツを表示するために Web ビューを使用することもできます。 この場合、 IntuneMAMPolicyManagersetWebViewPolicy:forWebViewer: API を使用できます。 この API を使用すると、アプリは個々の Web ビューをアンマネージドとしてマークしたり、個々の Web ビューに対する TreatAllWebViewsAsUnmanaged の効果を元に戻したりできます。

この API は 2 つの引数を受け取ります。 1 つ目は、 IntuneMAMWebViewPolicy 型の列挙値です。 2 つ目は、子ビュー階層に WKWebView を含む可能性のある UIView または UIViewController のいずれかです。 WKWebView 自体を 2 番目の引数として直接渡すこともできます。

WKWebView が 2 番目の引数として渡された UIView または UIViewController の子である場合は、この API の呼び出し時にビュー階層内に存在している必要はありません。 渡された UIView または UIViewController の子 WKWebView には、追加時に適切なポリシーが適用されます。

  • IntuneMAMWebViewPolicyUnset - これは、すべての WKWebView のデフォルトポリシーです。 Web ビューは、 TreatAllWebViewsAsUnmanaged フラグのみに従って処理されます。
  • IntuneMAMWebViewPolicyUnmanaged - このポリシーでタグ付けされた Web ビューでユーザーが実行する切り取り/コピー/貼り付け操作は、アンマネージド ID によって実行されたものとして扱われます。 このポリシーは、 TreatAllWebViewsAsUnmanaged フラグを上書きします。
  • IntuneMAMWebViewPolicyCurrentIdentity - このポリシーでタグ付けされた Web ビューでユーザーが実行する切り取り/コピー/貼り付け操作は、現在の UI ポリシー ID によって実行されたかのように扱われます。 このポリシーは、 TreatAllWebViewsAsUnmanaged フラグを上書きします。

マジョリティの非ユーザーおよび組織外のデータ

アプリ内の Web ビューの大部分にアンマネージド コンテンツが表示される場合は、アプリのInfo.plistTreatAllWebViewsAsUnmanagedを設定し、ユーザーまたは組織のコンテンツ Web ビューで IntuneMAMWebViewPolicyCurrentIdentity を使用してsetWebViewPolicy:forWebViewer:呼び出すことができます。

マジョリティのユーザーと組織のデータ

アプリ内の Web ビューの大部分にユーザーまたは組織のコンテンツが表示される場合、すべての Web ビューは既定で管理対象として扱われるため、IntuneMAMWebViewPolicyUnmanagedを持つ setWebViewPolicy:forWebViewer: のみをアンマネージド Web ビューで呼び出す必要があります。

Web ビュー シナリオ 4: ユーザーまたは組織のコンテンツだが、任意の Web ページが存在するリスクがある

Web ビューを使用してユーザーまたは組織のコンテンツを表示しているが、任意の外部 URL に移動するリスクがある場合は、 TreatAllWebViewsAsUnmanaged および setWebViewPolicy:forWebViewer: と組み合わせて追加の API を使用できます。 この例は、検索エンジンへの直接的または間接的なリンクがある機能の提案またはフィードバック Web ページです。

IntuneMAMWebViewPolicyDelegate IntuneMAMPolicyManagersetWebViewPolicyDelegate:forWebViewer:を使用して Web ビューに実装および設定できます。 IntuneMAMWebViewPolicyDelegateには、必須のメソッド isExternalURL: が 1 つあります。

setWebViewPolicyDelegate:forWebViewer: メソッドは、WKWebView または SFSafariViewController で直接呼び出す必要があります。

Web ビューで新しいページに移動するたびに、 isExternalURL: デリゲート メソッドが呼び出されます。 アプリケーションは、デリゲート メソッドに渡された URL が、ユーザーまたは組織データを貼り付けることができる内部 Web サイトを表しているか、組織データを漏洩する可能性のある外部 Web サイトを表しているかを判断する必要があります。 NOを返すと、読み込まれる Web サイトは、ユーザーまたは組織のデータを共有できる組織の場所であることが SDK に伝えられます。 YESを返すと、SDK は、現在のポリシー設定で必要な場合に WKWebView または SFSafariViewController ではなく、Microsoft Edge で URL を開きます。 これにより、アプリ内からユーザーまたは組織のデータが外部 Web サイトに漏洩することがなくなります。

Web ビュー API の例

アプリは、5 つの Web ビュー (A、B、C、D、E) で構築されます。 Web ビュー A、B、C に、ユーザーまたは組織のデータが表示されません。 Web ビュー D には、会社のすべてのユーザーが利用できる organization ページが表示されます。 Web ビュー E は、リンクを含む可能性のあるユーザーのドキュメントをレンダリングします。

Web ビューの大部分はアンマネージド (A、B、C) であるため、 TreatAllWebViewsAsUnmanaged を設定して setWebViewPolicy:forWebViewer: を呼び出す必要がある回数を減らすことができます。

Web ビュー D と E はユーザー コンテンツを表示し、すべての Web ビューは既定で管理されていないため、IntuneMAMWebViewPolicyCurrentIdentity を使用して setWebViewPolicy:forWebViewer: でタグ付けする必要があります。

Web ビュー E には、ユーザーがクリックして任意の URL に移動するために使用できるリンクが含まれているため、 IntuneMAMWebViewPolicyDelegate を実装し、 setWebViewPolicyDelegate:forWebViewer: を使用して Web ビュー E に設定する必要もあります。 isExternalURL:実装では、受信 URL をチェックして、ドキュメントの URL と同じかどうかを確認できます。 一致しない場合は、それが外部 URL であることがわかり、 YESを返すことができます。 一致する場合は、内部 URL であることがわかり、 NO を返すことができます。

これらの API を実装して呼び出すことは、管理対象ユーザーまたは組織のコンテンツが Web ビュー A、B、および C にリークできないことを意味します。また、ユーザーがドキュメント内のリンクをクリックして E で移動する可能性のある外部 URL に、管理コンテンツがリークすることもできません。 また、管理されたコンテンツは、Web ビュー D および E のデータがアプリ外に漏洩するのを防ぐことで保護されます。