Windows Phone 개발툴 CTP 버전이 MIX10 행사에 맞춰서 3월에 공개 되었었는데, 4월 말에 April Refresh 버전으로 업데이트 되었습니다.

현재 Windows Phone 개발자 포럼 사이트에 공개된 샘플 프로젝트의 상당수가 3월에 최초 공개된 개발툴 버전으로 작성되었기 때문에 April Refresh 버전의 Visual Studio에서는 빌드시 오류가 발생할 수 있습니다. SDK의 클래스 구조가 상당 부분 변경되었기 때문입니다.

이 중에서 흥미로운 것은 WP7에서 실행되는 app가 시스템의 어떠한 리소스에 접근할 수 있는가에 대해서 capability 기반의 보안모델을 새로 적용한 것이 흥미롭습니다. (완전 새로운 개념은 아닙니다. 이미 안드로이드 마켓에서는 이러한 모델을 사용하고 있으니까요.)


오늘 기존에 작성된 WP7용 샘플 프로젝트를 VSWP April Refresh 버전에서 열었더니 다음과 같은 안내 메시지가 나오길래 관련 내용을 찾아보다가 간단히 글을 써볼까 합니다.

사용자 삽입 이미지

WMAppManifest.xml 파일에 <Capability> 요소를 추가하라는 내용입니다. 메시지 내용을 자세히 보면 네트워크, 위치, 센서, 마이크 등에 대한 세부 내용이 있습니다.

위 메시지 내용만으로 짐작할 수 있는 것이 App 개발시에 해당 어플리케이션이 사용하는 시스템 자원을 매니페스트에 기록해두고, 런타임시에 지정된 리소스에만 접근하도록 하겠다(UnauthorizedAccessException이 발생)는 것으로 이해할 수 있습니다.

이러한 보안모델이 필요한 이유는 무엇일까요?

스마트폰의 가장 큰 특징은 사용자가 원하는 애플리케이션을 설치하는게 자유롭다는 것입니다.
많은 개발자들이 스마트폰용 애플리케이션을 개발해서 마켓에 업로드하고, 사용자들은 이들을 설치해서 사용합니다.
문제는 마켓에 등록된 애플리케이션이 사용자에게 원하지 않는 동작을 할 수 있다는 것입니다.

예를 들면 사용자에게 아주 편리한 프로그램인데 네트워크 접속을 너무 많이 한다면, 사용자는 그만큼의 데이터 통신료를 부담해야 합니다.
또한 악의적인 목적으로 사용자 모르게 뒤에서 다른 일을 할 수도 있습니다. 예를 들어 게임 프로그램으로 가장해서 백그라운드에서는 사용자의 GPS 위치정보를 특정 서버로 계속 전송할 수도 있습니다.

그래서 이러한 보안 모델이 필요하게 됩니다.
App 개발시 사용하는 리소스에 대해서 매니페스트에 명시하고, 런타임시에 지정된 리소스 외에 다른 리소스에 접근을 하지 못하도록 하는 것입니다.
그리고 사용자들은 마켓플레이스에서 애플리케이션을 다운로드 하기 전에 해당 애플리케이션이 어떠한 리소스를 사용하는지를 미리 알고 설치 여부를 판단할 수 있습니다.

위에서 보여주는 메시지 내용을 통해서 WP7 app에서 접근 가능한 리소스를 다음과 같이 분류했음을 알 수 있습니다.

  • Networking : App에서 네트워크 자원을 사용할 수 있는지
  • Location : App에서 위치 정보를 위한 GPS 자원을 사용할 수 있는지
  • Microphone : App에서 폰의 마이크 자원을 사용할 수 있는지
  • Medialib : App에서 폰 내의 음악, 동영상 같은 미디어 라이브러리에 접근할 수 있는지(Zune library 이겠죠)
  • Gamer services : App에서 게임을 위한 XBOX live 서비스에 접근할 수 있는지
  • Phone dialer : App에서 전화걸기 기능을 사용할 수 있는지
  • Push Notification : App에서 푸시 알림을 받을 수 있는지
  • Web Browser Component : App에서 웹 브라우저 기능을 사용할 수 있는지

따라서 App 개발시에 해당 app에서 사용하는 리소스에 대해서만 매니페스트에 지정하시기 바랍니다.

아래 문서에서도 이 내용에 대해서 언급하고 있으니 참고하시기 바랍니다.
http://blogs.msdn.com/b/jaimer/archive/2010/04/30/windows-phone-capabilities-security-model.aspx

 

Posted by noenemy
,