Android Permission详解

本文详细阐述了Android系统的权限管理,包括系统安全架构、应用签名、用户标识与文件访问、权限使用与申明、在AndroidManifest.xml中强制执行权限、发送广播时的权限控制以及其他权限强化机制。Android通过权限机制实现应用间的隔离,确保用户数据和系统安全。开发者需要在Manifest文件中声明权限,系统在安装时询问用户,用户授权后应用才能执行特定操作。
摘要由CSDN通过智能技术生成

Android系统构造在Linux系统之上,因此它采用了和Linux类型的权限隔离机制,也就是说,每个应用使用独立的系统标识(组标识加用户标识)来运行。部分系统应用也使用某个系统标识独立开来。底层的Liunx系统从而使得不同应用之间以及应用和系统之间隔离开来。

Android通过Permission(权限)机制进一步强化系统安全,通过Permssion来限制某个进程可以执行的操作,为访问某些特定的数据根据其URIPermissions赋予相应权限。

系统安全构架

Android系统安全构造的一个中心设计思想是:缺省情况下,应用无权执行可能对其它应用,操作系统或是用户造成影响的任何操作,这些操作可能包括读写用户个人数据(比如通讯录或是电子邮件),读写其它应用的文件,访问网络以及保持设置处于“唤醒”状态等。

Android系统使用“沙箱”将多个应用分隔开来,因此如有需要,应用必须明确指明需要和其它应用共享的资源或数据。这需要通过申明缺省“沙箱”未支持的“Permissions”来获得这些额外的功能。应用在Manifest文件中静态声明所需权限,Android系统在安装应用时会询问用户是否赋予该应用所需权限。为避免用户决定安全问题的复杂性,Android系统不支持在运行时动态赋予应用所需权限。

   Android的“沙箱”机制独立于用来创建应用所使用的技术,尤其要注意的Dalvik虚拟机不是安全机制的界限,任意应用都可以运行Native代码。所有的应用,Java,Native或者是二者的混合,使用同样的“沙箱”安全机制并具有同等的安全等级。

应用签名

所有的Android应用(.apk文件)都必须使用安全证书来签名,证书的密钥由开发人员拥有。证书表明应用的开发人员身份。但这个安全证书并不要求是由某个公认的证书管理中心(CA)来签发。通常开发人员多使用自己签发的证书。Android使用证书的目的是为了用来区分应用的作者。这使得Android可以据此来赋予或拒绝应用所需的权限,或者拒绝或者赋予某个应用申请使用其它应用同样的Linux用户来运行该应用的请求。

用户标识和文件访问

在安装应用时,Android为每个安装包分配不同的Linux用户标识。这个标识在该安装包在设备上整个生命周期时保持一致。在不同的设备上,这个用户标志可能不同,重要的是在同一设备上,每个安装包使用不同的用户标识。

由于Android安全机制是基于进程来赋予的,通常情况下两个不同的应用程序包使用不的进程来运行,这是因为它们使用了不同的Linux用户来运行的。你可以通过在AndroidManifest.xml文件中通过sharedUserId属性为不同的安装包指明同一个用户标识,在这种情况下,这两个程序包运行在同一进程中,因此使用同样的安全机制。要注意的这两个安装包必须是使用同一个安装证书来签名,这样才能保证足够的安全机制。

应用程序保存的数据都会赋予应用使用的用户标识࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值