안드로이드는 Application으로 구성되어있으며 많은 Application들의 동작으로 OS 구동된다.

여기서 다양한 각종 Application들은 각자의 기능을 지원하기 위해 여러 권한들을 허용하는데 이러한 권한들은 사용자가 원하는 권한을 만들어서 생성할 있다. 이렇게 권한을 생성할 때는 권한들을 4가지 Level 부여하여 만들 있다.

 

예를 들어 여기서 말하는 권한이란

<uses-permission android:name="android.permission.INTERNET"/>

있을 있고 android.permission.INTERNET이라는 이름의 권한은 안드로이드 OS에서 직접 생성한 권한이다.

 

 

1. 권한 생성

권한은 위에서와 같이 안드로이드 OS에서 생성하여 제공하는 권한들도 존재하지만

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package
="com.codechacha.custompermission">

<permission
        android:name
="com.codechacha.YOU_CAN_DO_SOMETHING"
        android:label
="@string/perm_label"
        android:description
="@string/perm_description"
        android:permissionGroup
="android.permission-group.SMS"
        android:protectionLevel
="normal" />

...
</
manifest>

위와 같이 필요한 권한을 생성할 수도 있다.

 

 

 

2. 권한 Level

      • normal

normal 경우 사용자의 동의 없이도 설치가능한 수준의 위험하지 않은 application들로 가장 기본이 되는 권한입니다. 해당 권한 Level Permission App 설치될 자동으로 권한을 얻게 됩니다.

(Applicatio 설치 됨과 동시에 해당 권한을 획득 한다)

 

      • dangerous
        해당 권한 Level 퍼미션은 보안적으로 악의적으로 이용될 있는 위험적인 요소를 지닌 권한을 말하며 해당 권한의 경우 App 설치 normal Level 같이 기본적으로 Application 부여되지 않으며 Application 실행 런타임 환경에서 사용자에게 권한 요청을 하고 사용자의 승락이 이루어진 후에 Application 해당 권한을 획득하게 됩니다.

(Runtime 환경에서 사용자 승락 Application 권한을 얻음)

 

      • Signature

해당 권한은 Owner Application 동일한 서명이 되어있는 Application 해당 권한을 획득 있도록 이루어진 권한 Level입니다.

 

-> 여기서 Ower Application이라 함은 특정 권한을 생성하고 선언할 동일한 이름의 권한을 여러 Application에서 선언할 있을 것입니다. 여기서 가장 먼저 선언한 Application(Device 가장 먼저 해당 권한을 가지고 설치된 Application) 바로 해당 권한에 대한 Owner Application 됩니다.

(Onwer Application 같은 키로 서명된 경우 해당 Application 권한 획득)

 

      • SignatureOrSystem(Android Q OS에서부터 미지원)

해당 권한 Level 현재 사라진 Level로써 현재는 해당 권한을 얻기 위해서는 반드시 /system/priv-app Application 존재해야 합니다.

해당 경로는 바이너리가 생성될 추가하여 생성할 있으며 이후에는 추가가 불가한 경로이다.

제조사를 제외한 서드파티에서는 해당 권한을 가진 application 생성할 없도록 설계되었습니다.

(결과적으로 system권한을 가지는 application 경우에는 system 권한이 필요하고.. system 권한의 권한 level 해당 권한 레벨이기 때문에 해당 권한 레벨의 preconditon 만족이 필요한데 이런 application 만들기 위해서는 반드시 /system/priv-app/ 경로에 app 설치해야 하기 때문에 제조사를 제외한 서드파티에서는 systme 권한을 가지는 application 개발이 불가능하다)

 

 

결과적으로 application 많은 권한을 가지고 권한에 맞는 동작을 수행할 있으며 해당 권한들은 4개의 level 이루어져 있다.

권한들은 각자 자신의 권한에 맞는 precondition 이루어졌을 해당 권한을 활성화할 있으며 application 해당 권한을 얻게된다.

+ Recent posts