본문 바로가기

쉽게 읽는 개발문서/안드로이드 개발문서

개발자 가이드(소개) - 데이터 접근 결정 2021-06-09

주관적인 견해와 해석이 들어가 있습니다 :)
혹시 잘못된 부분이 있다면 밑에 댓글을 남겨주시면 반영하겠습니다. :)

 

Determine sensitive data access needs

App 권한들은 임의의 접근을 보호함으로써 사용자의 Privacy를 보호합니다.

- Restricted data(제한된 데이터), 사용자의 정보나 시스템 상태와 같은 데이터들
- Restricted actions(제한된 동작), 단말기(장치, 기기)를 공유하거나 오디오를 녹음하는 것과 같은 동작들

 

이 페이지는 어떻게 안드로이드에 권한들이 작용하고, 높은 수준의 권한 사용을 위한 workflow와 다양한 타입의 권한들이 작성된 descriptions, APP에서 권한을 사용하는 좋은 방법들을 제시합니다.

다른 페이지에는 어떻게 APP에서 권한을 요청해야 하는지, 권한 선언, 실행 시간에 권한 요청 그리고 다른 APP에서 권한을 제한하는 방법 들을 제공합니다.앱 권한에 대한 전체 리스트를 보려면 다음 페이지를 참고하세요. permissions API reference page.

 

권한 사용을 위한 Workflow

만약 APP에서 restricted data와 restricted actions access해야 할 수 있는 기능을 제공해야 한다면, 권한을 선언하지 않고 동작을 수행하거나 정보를 얻을 수 있는지 여부를 결정해야합니다. 예를 들어 저장된 사진을 찍거나, 재생중인 동영상을 일시정지하거나, 광고를 보여주거나 이런 동작들은 따로 권한들을 선언하지 않아도 됩니다.
(즉, 권한을 따로 선언하지 않고도 사용 할 수 있는 작업들을 의미하는 말 같습니다.)

그런데 APP에서 restricted data와 restricted actions에 반드시 access해야 할 필요가 있는 기능들은 적절한 권한을 선언해야합니다. 예를 들어 install-time permissions와 같은 권한들은 자동적으로 앱이 설치될 때 허용합니다. runtime permissions과 같은 앱에서 하단의 Diagram처럼 runntime권한을 요청하여 단계를 진행합니다.

그림을 보면 

1 -> 2a :: 흘러가는 동작은 별도의 권한 요청 없이 수행할 수 있는 기능의 경우이며

1 -> 2b -> 의 경우 별도의 권한을 manifestfile에 작성해야 하며,
runtime에 허용해야 하는 권한이라면 요청 시 사용자가 수락을 하게되면 허용하여 작업을 수행합니다.

 

Types of permissions

안드로이드 권한 카테고리에는 다양한 타입들이 있습니다. 3가지로 분류되는데요. install-time permissions와 runtim permissions 그리고 special permissions입니다. 각 권한의 타입은 App 권한 수락 시 restricted data, restricted action의 범위에 따라 나뉩니다. 

 

install-time permissions

install-time permissions은 restricted data에 접근이 제한된 권한입니다. 그리고 restricted action을 수행 할 시 다른 App이나 시스템에 최소한의 영향을 줍니다. 즉, 크게 문제가 되지않는 권한들을 의미합니다. :)
App에서 해당 권한들은 시스템이 자동적으로 해당 권한을 수락합니다.(이름 그대로 앱 설치시 허용하는 권한)
App 스토어는 install-time permission을 사용자에게 알리고, App의 상세 페이지를 보여줍니다. (우측 그림 참조)

안드로이드는 일부 install-time permissions을 포함하고 있습니다. (일반 권한, 하위 유형의 권한이 install-time permissions에 속함)

 

Normal Permissions(일반 권한)

이 권한들은 App의 sandbox을 넘어 확장된 데이터와 작업에 접근 할 수 있습니다. 하지만, 이런 데이터와 작업들은 다른 앱에 대한 작업과 사용자의privacy에 대한 위험이 거의 없습니다. 

 

Signature Permissions(서명 권한)

App에서 다른 App에서 선언한 서명 권한을 선언하고, 두 App이 동일한 인증서로 서명되었다면 시스템에서는 설치 시간에 첫 번째 앱에 권한을 부여합니다. 그 외의 경우에는 첫 번째 App에 권한을 부여할 수 없습니다.

 

Runtime Permissions(런타임 권한)

Runtime Permissions는 위험 권한으로 알려져 있습니다. restricted data에 대한 접근을 할 수 있도록 해주고, 시스템과 app에 영향을 미칠 수 있는 그러한 restricted actions들을 허용해줍니다. 그러므로, restricted data에 대한 접근과 restricted action을 수행 할 시 runtime permissions에 대한 요청이 필요합니다.
app에서 runtime permissions에 대한 요청을 할 때, 우측 박스 처럼 runtime permission 메시지를 표시합니다.

많은 Runtime Permissions는 잠재적으로 민감한 정보를 포함하고 있는 restricted data인 private user data에 접근합니다. 예를 들어 private user data에는 위치정보와 연락처 정보가 있습니다.

 

Special Permissions(특별 권한)

Special Permissions는 특정한 App 작동 시 필요합니다. OEM과 플랫폼에서만 special permissions가 정의될 수 있습니다. 게다가 OEM과 플랫폼은 App에 그리기와 같은 특정한 중요 작업을 할 때, 접근에 대한 보호 하려고 할 때 special permissions을 정의합니다.

시스템 설정의 Special app access 페이지에는 사용자가 전환할 수 있는 작업 세트가 포함되어 있습니다. 이러한 작업의 대부분은 특별 권한으로 구현됩니다. 

 

 

<참조>

https://developer.android.com/games/develop/permissions?hl=en 

 

민감한 정보 액세스 필요성 결정  |  Android 개발자  |  Android Developers

앱 권한은 다음 항목에 대한 액세스를 보호하여 사용자 개인정보 보호를 지원합니다. 제한된 데이터(예: 시스템 상태 및 사용자의 연락처 정보) 제한된 작업(예: 페어링된 기기에 연결 및 오디오

developer.android.com