Android 11 - Privacy 변경사항 요약

Android11의 Privacy 관련 변경사항에 대해서 정리하였습니다.

Scoped Storage

Scoped Storage는 Android 10에서 공개되었습니다. Android11에서 더욱 강화되어 사용자의 개인정보를 보호합니다.

Scoped Storage의 기본적인 내용은 새로운 저장소 정책, Scoped Storage 알아보기를 참고해주세요.

개선 및 변경사항은 다음과 같습니다.

  • API Level 29를 타겟으로 하는 앱은 여전히 Legacy Storage 정책을 사용할 수 있습니다.
  • API Level 30을 타겟으로 하는 앱은 Scoped Storage 정책만 사용해야 합니다.
  • Android10에서는 File API를 사용할 수 없었지만, Android11에서는 File API를 사용할 수 있습니다. 3rd party library의 호환성을 위해 변경되었습니다.
  • MANGED_EXTERNAL_STORAGE 권한을 제공하며, 앱은 이 권한으로 모든 파일에 대한 접근 권한을 얻을 수 있습니다.
  • 이제 ACTION_OPEN_DOCUMENT_TREE으로 Interal Storage, SD card, /Download의 전체 접근 권한을 얻을 수 없습니다.
  • 이제 ACTION_OPEN_DOCUMENT_TREE, ACTION_OPEN_DOCUMENT으로 /data, /obb의 전체 디렉토리에 대한 접근 권한을 얻을 수 없습니다.
  • 사용자에게 파일을 즐겨찾기, 휴지통에 보관, 완전히 삭제 등의 요청을 할 수 있는 기능이 있습니다.

Legacy Storage 정책은 READ/WRITE_EXTERNAL_STORAGE 권한으로 모든 Storage의 접근 권한을 얻는 방식을 말합니다.

One-time permissions

Android11에서는 App이 Location, Camera, Microphone 권한을 요청할 때, 팝업에 Only this time이라는 옵션을 제공합니다. 이 옵션으로 권한을 허용하면 App을 사용할 때만 권한이 허용되며, 앱을 더 이상 사용하지 않는다고 생각되면 시스템이 권한을 제한합니다.

다음과 같은 경우, 시스템은 사용자가 App을 사용중이라고 생각하며 권한은 유지됩니다.

  • App의 Activity가 보일 때
  • Activity가 보일 때 Foreground service를 실행했고 그 뒤에 사용자가 App을 종료한 경우, Foreground service가 종료될 때 까지 권한은 유지됩니다.

다음과 같은 경우, 시스템은 권한을 제한합니다.

  • App이 Background로 전환되었을 때, App의 권한은 제한됩니다. 하지만 App의 작업이 완전히 끝나지 않았을 수 있기 때문에 일정 시간(약 1분)이 지난 뒤에 권한은 제한됩니다.

Auto-reset permissions

Android 11 이상에서는 몇달간 사용되지 않은 앱의 민감한 퍼미션은 자동으로 회수(제한, denied)됩니다. 따라서, App은 App이 실행되었을 때 항상 권한이 있는지 확인하고 없다면 사용자에게 요청하도록 구현이 되어야 합니다.

Package visibility

App이 디바이스에 설치된 다른 App들의 정보를 찾거나 얻는 방식이 변경되었습니다.

Android 10 이하에서 App은 디바이스에 설치된 다른 앱의 정보를 얻고, 그 App을 실행할 수 있었습니다.

Android 11에서는 App은 다른 앱의 정보를 얻을 수 없습니다. 만약 정보를 얻고 싶다면 AndroidManifest에 <queries>라는 TAG로 다른 App의 package name이나 Intent를 정의해야 합니다.

또는 QUERY_ALL_PACKAGES 퍼미션을 Manifest에 추가하면 Android 10처럼 제한 없이 모든 패키지에 대한 정보를 얻고 실행할 수 있습니다.

Package visibility에 대한 자세한 정보는 Package visibility 변경사항 소개를 참고해주세요.

Data access auditing

App은 자신의 App이나, App이 사용하고 있는 3rd party library가 사용자의 private data에 접근하는 경우가 있는지 분석할 수 있습니다.

Android11에서 AppOpsManager는 OnOpNotedCallback을 제공합니다. AppOps는 App이 private data에 접근하였을 때 App에게 Callback으로 알려줍니다.

App은 다음과 같은 private data에 접근하는지 알 수 있습니다.

  • Runtime permission에 보호되는 내용
  • 민감한 데이터(사진에 태깅된 위치정보 등)

Foreground services

Android 11에서 Foreground service의 Location, Camera, Microphone 정보의 접근을 부분적으로 제한합니다.

Android 10에서 Foreground service는 이런 정보에 접근을 할 수 있었습니다.

하지만 Android 11에서는 Foreground service가 Background로 부터 실행되었다면 이런 권한이 제한됩니다. Foreground에서 실행된 Foreground service라면 제한이 없습니다.

접근 권한이 없는 Service는 다음과 같은 상태를 의미합니다.

  • UI가 없는 상태에서 동작하는 서비스
  • 실행 중인 Foreground service가 없는 상태에서 동작하는 서비스
  • Broadcast receiver, AlarmManager, WorkManager, JobScheduler는 Background service로 동작

접근 권한이 있는 Foreground Service는 다음과 같은 서비스를 의미합니다.

  • Foreground service에서 실행된 Foreground service
  • System으로 부터 실행된 Foreground service
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha