본문 바로가기

Android

security and permissions

안드로이드는 각각의 앱과 시스템 내 영역들이 자신의 고유한 프로세스 상에서 실행되는 멀티 프로세스 시스템이다.

앱과 시스템간 보안은 사용자나 그룹아이디 같은 표준 리눅스 설비를 통해 프로세스 레벨에서 강제로 결정된다.

세세한 부분에 대해서는 퍼미션 메커니즘을 제공한다.

- security architecture

안드로이드 앱 보안에 핵심은 자신의 앱이 다른 앱에 나쁜 영향을 미치면 안된다. 를 기반으로 한다.



- Application Signing

모든 안드로이드 앱은 개발자가 보유한 인증서로 서명되어야 한다. 이 인증서로 앱 작성자를 식별한다.

사인이 보안에 미치는 가장 중요한 사항은 퍼미션에 누가 접근이 가능하며 누가 사용자 아이디를 공유할 수 있는지를 결정할 수 있다.



- User IDs and File Access

apk 는 각가 리눅스 유저 아이디가 부여된다 이는 앱이 설치될 때 할당되며 디바이스에 앱이 존재하는 동안에 계속 유지 된다.

getSharedPreferences(String, int), openFileOutput(String,int), openOrCreateDatabase(String,int,SQLiteDatabase.CursorFactory) 등에 함수로 파일 생성시 이를 다른 패키지에서 사용할 수 있게 하기 위해 MODE_WORLD_READABLE 와 MODE_WORLD_WRITEABLE 플래그를 설정해 퍼미션을 설정할 수 있다.


퍼미션에 대한 오류는 SecurityException 으로 나타난다. 하지만 모든 경우에 보장 받지 못하니 주의 하라, 하지만 거의 모든 퍼미션 오류는 시스템 로그에 기록될 것이다.

퍼미션 설정은 Manifest.permission 에서 볼 수 있다.

모든 앱은 자기 자신의 퍼미션을 정의하고 강제할 수 있다.


- 다음의 시점에서 특정 퍼미션이 강제로 적용될 수도 있다.

> 시스템 내부로 호출, 앱이 특정 함수를 수행하는 걸 방지 하기 위해서
> 액티비티를 시작하는 시점, 앱이 다른 앱의 액티비치를 런치하는것을 방지하기 위해
> 브로드캐스트를 주고 받는 시점, 누가 브로드 캐스트 정보를 수신/제어 할 수 있는지 누가 브로드 캐스트를 보낼 수 있는지 제어하기 위해
> 컨텐츠 프로바이더에 접근해서 오퍼레이션 하는 시점
> 서비스를 바인딩하거나 시작하는 시점


- Declaring and Enforcing Permissions






'Android' 카테고리의 다른 글

Uploading files to HTTP server using POST. Android SDK.  (0) 2013.10.08
javascript to java interface on android  (0) 2013.10.08
checking installed app  (0) 2013.10.08
content providers  (0) 2013.10.08
databases  (0) 2013.10.08