Android的权限管理浅析

Android权限管理是基于Linux的进程隔离机制与最小权限原则,Android定义了名称到标识符的AID映射表
每一个AID都会映射到一个UID和GID(也就是给UID和GID分配的相应的权限),在应用程序执行时,它们的UID和GID会被分配给新创建的进程,从而进程运行时,系统可以在内核中实施底层的限制措施(Android的沙箱所在)。

Android的权限模型包含:API权限,文件权限,IPC权限
在Android应用的AndroidManifest.xml文件中包含应用所指定的高级权限,PackageManager在应用安装时,从应用的Manifest文件中提取,并存储在/data/system/packages.xml文件中。并在应用进程实例化阶段,向进程授予适当地权限。

Chrome浏览器申请的权限:
Android的权限管理浅析_第1张图片

高级权限对应的用户组,存放在/etc/permissions/plantform.xml文件中

Android的权限管理浅析_第2张图片
通过两种方式实施权限检查:1.在调用方法时,进行权限检查,由运行环境实施检查; 2.在操作系统底层进行检查,由库或者内核实施。
一些服务API与内核级的安全机制相对应,如INTERNET权限,意味着申请权限应用的UID会被添加到inet用户组当中。而一些文件的访问权限控制则依赖了unix文件系统的权限控制模型。

大体来说:应用程序在安装时,会在Manifest.xml中申请相应的高级权限,有些常用权限系统会直接授予,程序直接安装,而有些需要询问用户是否授予该应用程序所申请的权限(根据permission中的 android:protectionLevel设置)。安装完成之后,在应用程序开启时,系统会向进程授予相应的应用进程权限,程序在运行过程中,需要调用某一个需要权限的资源或者服务,会经过相应的权限检查(运行环境,或库,内核),通过后,就可以运行相应的服务。

你可能感兴趣的:(Android安全)