iOS용 앱 SDK Intune - 웹 보기 기능
애플리케이션 내에서 웹 콘텐츠 표시
iOS에서 웹 보기를 사용하여 앱의 컨텍스트를 벗어나지 않고도 다양한 웹 콘텐츠를 표시할 수 있습니다. 일부 애플리케이션은 여러 플랫폼에서 기능 및 UI를 공유하는 방법으로 웹 보기를 사용할 수도 있습니다.
웹 보기는 앱 내에 존재하기 때문에 잠재적인 데이터 누출에 노출됩니다. 사용자가 앱 내에서 임의의 외부 웹 페이지로 이동할 수 있는 경우(의도적인 앱 디자인을 통해 또는 렌더링된 웹 페이지의 html 콘텐츠에서 노출된 링크를 통해 영리하게 기동하여) 사용자는 앱에서 관리되는 데이터를 유출할 수 있습니다.
Intune MAM SDK는 관리되는 콘텐츠와 관리되지 않는 콘텐츠가 앱 내의 웹 보기를 통해 표시되는 다양한 시나리오를 처리하기 위한 여러 API를 제공합니다. 이러한 API는 앱에 로그인한 관리되는 사용자가 있는 경우에만 호출해야 합니다. API가 어떤 시나리오에 적용되는지 빠른 가이드로 아래 표를 참조하세요.
시나리오 | API |
---|---|
임의 웹 페이지의 위험이 없는 사용자 및 조직 콘텐츠만 | API가 필요하지 않음 |
비 사용자 및 비조직 콘텐츠만 | 에서 를 설정합니다 TreatAllWebViewsAsUnmanaged . Info.plist |
사용자/조직 및 비사용자/비조직 콘텐츠 혼합(대부분의 비사용자/비조직) | 에서 Info.plist 를 설정하고 TreatAllWebViewsAsUnmanaged 사용자 또는 조직 데이터를 포함하는 웹 보기에서 를 IntuneMAMWebViewPolicyCurrentIdentity 사용합니다setWebViewPolicy:forWebViewer: . |
사용자/조직 및 비사용자/비조직 콘텐츠 혼합(대다수 사용자/조직) | 사용자 또는 조직 데이터가 포함되지 않은 웹 보기에서만 를 사용합니다 setWebViewPolicy:forWebViewer: IntuneMAMWebViewPolicyUnmanaged . |
사용자 또는 조직 콘텐츠이지만 임의 웹 페이지의 위험이 있음 | 및 setWebViewPolicy:forWebViewer: 의 적절한 사용에 따라 임의 TreatAllWebViewsAsUnmanaged 웹 페이지로 이동할 수 있는 웹 보기에 을 구현 IntuneMAMWebViewPolicyDelegate 합니다. |
웹 보기 시나리오 1: 사용자 또는 조직 콘텐츠를 표시하는 웹 페이지만
앱이 사용자 또는 조직 콘텐츠를 렌더링하는 방법으로 웹 보기만 사용하고 웹 보기가 임의의 외부 웹 페이지로 이동할 위험이 없는 경우 API 또는 설정을 사용할 필요가 없습니다. 기본적으로 SDK는 앱 내에 표시된 모든 웹 보기를 현재 UI 정책 ID에 속하는 콘텐츠로 처리합니다.
관리되는 사용자가 앱 내에서 웹 보기를 열면 웹 보기의 잘라내기/복사 데이터가 관리되는 콘텐츠로 처리됩니다. 웹 보기에 붙여넣으면 관리되는 계정의 정책에 따라 처리됩니다.
관리되지 않는 사용자가 앱 내에서 웹 보기를 열면 웹 보기의 잘라내기/복사 데이터가 관리되지 않는 콘텐츠로 처리됩니다. 웹 보기에 붙여넣는 작업은 관리되지 않는 계정에서 수행하는 것처럼 처리되며 추가 제한은 적용되지 않습니다.
웹 보기 시나리오 2: 사용자 또는 조직 콘텐츠를 표시하지 않는 웹 페이지만
앱이 웹 보기 내에서 사용자 또는 조직 콘텐츠를 표시하지 않는다는 것을 알고 있는 경우 앱의 Info.plist
에서 로 설정할 TreatAllWebViewsAsUnmanaged
YES
수 있습니다. 이렇게 하면 웹 보기 내의 모든 사용자가 수행한 모든 잘라내기, 복사 및 붙여넣기 작업이 관리되지 않는 것으로 처리됩니다. 작업을 수행하는 데 사용되는 계정의 관리 상태 관계없이 작업은 관리되지 않는 사용자가 수행하는 것처럼 처리됩니다.
이렇게 하면 관리되는 앱 콘텐츠가 웹 보기를 통해 앱 외부에서 유출되지 않습니다. 앱에서 웹 보기만 사용하여 개인 정보 알림, EULA 또는 사용자가 볼 필요가 없는 기타 정적 페이지 콘텐츠를 표시하는 경우 이 플래그를 설정하는 것이 좋습니다.
이 설정되면 TreatAllWebViewsAsUnmanaged
웹 보기 자체가 관리되지 않는 것으로 간주되므로 웹 보기 내에 표시되는 모든 콘텐츠를 복사하여 관리되지 않는 다른 앱에 붙여넣을 수 있습니다.
웹 보기 시나리오 3: 사용자/조직 및 비사용자/비조직 콘텐츠 혼합
더 복잡한 앱은 사용자/조직 및 비사용자/비조직 웹 보기의 조합을 사용할 수 있습니다. 앱은 웹 보기를 사용하여 개인 정보 알림을 표시할 수 있지만 웹 보기를 사용하여 사용자 콘텐츠를 표시할 수도 있습니다. 이 경우 의 setWebViewPolicy:forWebViewer:
API를 IntuneMAMPolicyManager
사용할 수 있습니다. 이 API를 사용하면 앱이 개별 웹 보기를 관리되지 않는 것으로 표시하거나 개별 웹 보기에 TreatAllWebViewsAsUnmanaged
대한 효과를 실행 취소할 수 있습니다.
API는 두 개의 인수를 사용합니다. 첫 번째는 형식의 열거형 값입니다 IntuneMAMWebViewPolicy
. 두 번째는 자식 뷰 계층 구조에 WKWebView를 포함할 수 있는 UIView 또는 UIViewController일 수 있습니다. WKWebView 자체는 두 번째 인수로 직접 전달될 수도 있습니다.
WKWebView가 두 번째 인수로 전달된 UIView 또는 UIViewController의 자식인 경우 이 API가 호출될 때 뷰 계층 구조 내에 존재할 필요가 없습니다. UIView 또는 UIViewController에 전달된 의 모든 자식 WKWebView는 추가될 때 적절한 정책을 적용합니다.
-
IntuneMAMWebViewPolicyUnset
- 모든 WKWebViews에 대한 기본 정책입니다. 웹 보기는 플래그에TreatAllWebViewsAsUnmanaged
따라 처리됩니다. -
IntuneMAMWebViewPolicyUnmanaged
- 이 정책으로 태그가 지정된 웹 보기에서 사용자가 수행하는 모든 잘라내기/복사/붙여넣기 작업은 관리되지 않는 ID에 의해 수행되는 것처럼 처리됩니다. 이 정책은 플래그를 덮어씁 수 있습니다TreatAllWebViewsAsUnmanaged
. -
IntuneMAMWebViewPolicyCurrentIdentity
- 이 정책으로 태그가 지정된 웹 보기에서 사용자가 수행하는 모든 잘라내기/복사/붙여넣기 작업은 현재 UI 정책 ID에 의해 수행되는 것처럼 처리됩니다. 이 정책은 플래그를 덮어씁 수 있습니다TreatAllWebViewsAsUnmanaged
.
대다수 비사용자 및 비조직 데이터
앱 내의 웹 보기 대부분이 관리되지 않는 콘텐츠를 TreatAllWebViewsAsUnmanaged
표시하는 경우 앱 Info.plist
에서 를 설정할 수 있으며 setWebViewPolicy:forWebViewer:
IntuneMAMWebViewPolicyCurrentIdentity
사용자 또는 조직 콘텐츠 웹 보기에서 를 호출할 수 있습니다.
대다수 사용자 및 조직 데이터
앱 내의 웹 보기 대부분이 사용자 또는 조직 콘텐츠를 표시하는 경우 모든 웹 보기는 기본적으로 관리되는 것으로 처리되므로 관리되지 않는 웹 보기에서 만 setWebViewPolicy:forWebViewer:
IntuneMAMWebViewPolicyUnmanaged
호출해야 합니다.
웹 보기 시나리오 4: 사용자 또는 조직 콘텐츠이지만 임의 웹 페이지의 위험이 있음
웹 보기를 사용하여 사용자 또는 조직 콘텐츠를 표시하지만 임의의 외부 URL로 이동할 위험이 있는 경우 및 setWebViewPolicy:forWebViewer:
와 TreatAllWebViewsAsUnmanaged
함께 추가 API를 사용할 수 있습니다. 예를 들어 검색 엔진에 대한 직접 또는 간접 링크가 있는 기능 제안 또는 피드백 웹 페이지가 있습니다.
IntuneMAMWebViewPolicyDelegate
를 사용하여 IntuneMAMPolicyManager
setWebViewPolicyDelegate:forWebViewer:
를 구현하고 웹 보기로 설정할 수 있습니다. 에 IntuneMAMWebViewPolicyDelegate
필요한 메서드가 하나 있습니다 isExternalURL:
.
메서드는 setWebViewPolicyDelegate:forWebViewer:
WKWebView 또는 SFSafariViewController에서 직접 호출해야 합니다.
웹 보기가 새 페이지 isExternalURL:
로 이동할 때마다 대리자 메서드가 호출됩니다. 애플리케이션은 대리자 메서드에 전달된 URL이 사용자 또는 조직 데이터를 붙여넣을 수 있는 내부 웹 사이트 또는 조직 데이터를 유출할 수 있는 외부 웹 사이트를 나타내는지 확인해야 합니다.
NO
반환하면 로드되는 웹 사이트가 사용자 또는 조직 데이터를 공유할 수 있는 조직 위치임을 SDK에 알릴 수 있습니다.
YES
반환하면 현재 정책 설정에 필요한 경우 SDK가 WKWebView 또는 SFSafariViewController가 아닌 관리되는 브라우저에서 URL을 엽니다. 이렇게 하면 앱 내의 사용자 또는 조직 데이터가 외부 웹 사이트로 유출될 수 없습니다.
웹 보기 API 예제
앱은 5개의 웹 보기(A, B, C, D 및 E)로 빌드됩니다. 웹 보기 A, B 및 C는 사용자 또는 조직 데이터를 표시하지 않습니다. 웹 보기 D는 회사의 모든 사용자가 사용할 수 있는 organization 페이지를 표시합니다. 웹 보기 E는 링크를 포함할 수 있는 사용자의 문서를 렌더링합니다.
대부분의 웹 보기는 관리되지 않으므로(A, B 및 C) 를 호출setWebViewPolicy:forWebViewer:
해야 하는 횟수를 줄이도록 설정할 TreatAllWebViewsAsUnmanaged
수 있습니다.
웹 보기 D 및 E는 사용자 콘텐츠를 표시하고 모든 웹 보기는 기본적으로 관리되지 않으므로 를 사용하여 IntuneMAMWebViewPolicyCurrentIdentity
태그를 setWebViewPolicy:forWebViewer:
지정해야 합니다.
웹 보기 E에는 사용자가 클릭할 수 있고 임의의 URL로 이동하는 데 사용할 수 있는 링크가 포함되어 있으므로 를 구현 IntuneMAMWebViewPolicyDelegate
하고 를 사용하여 setWebViewPolicyDelegate:forWebViewer:
웹 보기 E로 설정해야 합니다.
isExternalURL:
구현에서는 들어오는 URL을 검사 문서의 URL과 동일한지 확인할 수 있습니다. 일치하지 않으면 외부 URL이며 를 반환 YES
할 수 있습니다. 일치하는 경우 내부 URL이며 를 반환 NO
할 수 있습니다.
이러한 API를 구현하고 호출하면 관리되는 사용자 또는 조직 콘텐츠가 웹 보기 A, B 및 C로 누출될 수 없습니다. 또한 관리되는 콘텐츠는 문서 내의 링크를 클릭하여 E에서 탐색할 수 있는 외부 URL로 누출될 수 없습니다. 또한 관리되는 콘텐츠는 웹 보기 D 및 E의 데이터가 앱 외부에서 누출되지 않도록 방지하여 보호됩니다.
SwiftUI 지원
새로 만든 SwiftUI 앱은 UIScenes를 지원하지만 기본적으로 구현된 UISceneDelegate는 없습니다. 앱이 UIScenes를 지원하고 Intune 앱 SDK를 사용하려는 경우 UISceneDelegate를 구현해야 합니다. UIScenes UIApplicationSceneManifest
를 지원하지 않으려면 앱의 Info.plist에서 ("애플리케이션 장면 매니페스트"라고도 함) 설정을 제거해야 합니다.