1. 背景
随着智能终端时代的到来以及各类智能终端产品的日益普及,社会对于隐私保护意识也大幅提升,保护用户个人数据和隐私的安全已成为操作系统的核心功能之一。
而应用权限访问控制就是系统保障用户隐私和数据不被滥用的一道坚实的安全屏障。但目前应用权限访问控制普遍面临权限滥用和缺失跨设备访问控制场景等问题。
针对以上问题, OpenHarmony构建了ATM(AccessTokenManager,总体管理服务),用于提供应用权限访问控制能力。ATM通过对应用进行分级,执行最小授权原则,避免了权限滥用问题;同时支持跨平台执行权限访问控制功能,以便满足分布式应用场景。
注:由于篇幅有限,本文将主要介绍单设备场景下的应用权限访问控制。
2. ATM的应用权限访问控制概念介绍
1) 应用权限
默认情况下,应用只能访问有限的系统资源。但某些情况下,应用为了扩展功能,需要访问额外的系统或其他应用的数据(包括用户个人数据)、功能。系统或应用也必须以明确的方式对外提供接口来共享其数据或功能。OpenHarmony提供了一种访问控制机制来保护这些数据或功能不被非法使用,这种访问控制机制就是应用权限。
应用权限保护的对象可以分为数据和功能:
● 数据包含了个人数据(如照片、通讯录、日历、位置等)、设备数据(如设备标识、相机、麦克风等)、应用数据。
● 功能则包括了设备功能(如打电话、发短信、联网等)、应用功能(如弹出悬浮框、创建快捷方式等)等。
应用权限是应用访问操作某种对象的通行证。当应用访问操作目标对象时,目标对象会对应用进行权限检查,如果没有对应权限,则访问操作将被拒绝。
2) 应用
应用权限访问控制中所指的应用,按可信程度从高到低的顺序进行划分,可以分为:系统服务、系统应用、系统预置特权应用、同签名应用、系统预置普通应用、持有权限证书的后装应用以及其他普通应用。
系统利用内核保护机制来识别和隔离应用资源,将不同的应用隔离开,保护各个应用自身和系统免受恶意应用的攻击。默认情况下,应用间不能彼此交互,而且对系统的访问会受到限制。
例如,如果应用A(一个单独的应用)尝试在没有权限的情况下读取应用B的数据或者调用系统的能力拨打电话,操作系统会阻止此类行为,因为应用 A 没有被授予相应的权限。
了解完应用权限等概念后,你是否也好奇ATM是如何提供应用权限访问控制能力的呢?请跟随小编一起往下看。
3. ATM如何提供应用权限访问控制能力?
通过ATM,系统提供了统一的应用权限访问控制功能,支持应用或者其他服务查询与校验应用的APL(Ability Privilege Level, 元能力权限等级)等信息,实现系统归一化的权限管理体系。接下来小编将从以下两个方面为大家介绍ATM如何实现应用权限访问控制能力的:
1. ATM服务框架,介绍ATM如何通过统一架构管理应用的AT(AccessToken)信息。
2. 洋葱式访问控制模型,介绍ATM如何对应用权限申请范围进行管控;
1) ATM服务框架
对于运行在设备上的应用, ATM为每个应用分配唯一的标识(TokenID),在资源使用时通过TokenID作为唯一身份标识映射获取对应应用的权限和授权状态信息,并依此进行鉴权,以管控应用的资源访问行为。ATM的服务框架如图1所示:
图1 ATM服务框架图
ATM总体管理服务作为ATM 服务的总体入口,它可以将业务请求分发到下级的三个模块:TokenID管理、权限管理和APL管理。
TokenID管理模块:在TokenID与AT信息一一对应的基础上,TokenID管理提供了TokenID及其对应AT信息的初始化创建、查询、更新以及删除等服务。当目标应用被拉起时,ATM会为其分配唯一身份标识TokenID,并保存应用的初始化AT信息。每个AT信息由设备内的一个32bits的唯一标识符TokenID来进行标识。
● TokenID是每个应用的身份标识(可以理解为应用的身份证)。
● AT信息包括应用身份标识APP ID、子用户ID、应用分身索引信息、应用APL、应用权限授权状态等信息(可以理解为应用的身份证信息)。
权限管理模块:主要提供应用权限定义信息、应用权限授权状态信息的处理服务。权限管理模块在TokenID管理模块的基础上,向业务提供应用的权限信息查询、授权、鉴权等服务,管理应用权限的使用记录,构筑ATM的应用权限访问控制功能。
APL管理模块:APL管理模块基于唯一身份标识TokenID,提供应用的权限申请合法性校验功能,规范化权限申请范围,进行权限最小化管理。当前,应用的权限申请规则是基于洋葱式访问控制模型的,下面请跟随小编继续了解洋葱式访问控制模型。
2) 洋葱式访问控制模型
i. 介绍
应用的权限申请规则是基于洋葱式访问控制模型的,如图2所示,洋葱式访问控制模型分为三层,从里往外看:最里层是操作系统核心层,应用的APL=system_core。中间层是系统增强服务层,应用的APL=system_basic。最外层则是普通应用程序层,应用的APL=system_normal。
图2 洋葱式访问控制模型
我们通过给应用分配APL等级,来管控不同应用对系统资源的访问,不同APL等级的应用能申请的权限范围也是不同的,下面一起看一下APL等级的划分规则。
ii. APL等级划分规则
APL等级的划分规则根据是否是操作系统核心能力(system_core)、系统基础服务(system_basic)和普通应用(normal)进行划分的。详细介绍如下:
A. 操作系统核心能力APL="system_core"
操作系统核心能力是系统最核心的底层服务,它需要拥有所有权限以便实现对系统的管理。
操作系统核心能力包括:AMS(Ability Manager Service,能力管理系统)、BMS(Bundle Manager Service,包管理系统)、DMS(Distributed Manager Service,分布式消息系统)、软总线等。
操作系统核心能力的APL="system_core"。这类应用可申请访问操作系统核心资源的权限,对系统的影响程度非常大,目前只对系统服务开放。
B. 系统基础服务APL="system_basic"
在操作系统核心能力基础上,为操作系统提供基础服务的应用就叫系统基础服务,系统基础服务包括:
➢ 最小集基础应用,提供用户进行设备操作时所必需的最小集基础应用。如系统启动、系统设置、身份认证、系统调度和管理等。
➢ 智慧化服务,提供智慧化基础服务。如AR、VR、AI引擎的服务。
➢ 系统调度和管理应用,提供系统最基本的性能、功耗、后台应用的管理功能。
系统基础服务的APL="system_basic",这类应用可申请访问操作系统基础服务相关资源的权限。
C. 普通应用APL="normal"
普通应用包括三方应用和不在系统基础服务范围内的预置应用。三方应用包括社交类、资讯类、视频播放类、游戏类等应用。预置应用包括时钟、天气等应用。
普通应用的APL="normal"。这类应用是操作系统非必要软件,通过开放接口即可实现此类应用的功能。
注:若应用想要提升自身的APL等级,需要通过应用市场的审核。
洋葱式访问控制模型通过对应用实行严格的等级制度管控,根据不同的等级制定不同的安全和访问控制策略,实现了权限范围可控目标。同时为应用在跨设备运行时提供统一的隐私保护机制。
4. 结语
以上就是OpenHarmony 为大家提供的ATM应用权限访问控制的简单介绍。未来我们将围绕ATM在多设备等场景下的应用权限访问控制能力进一步提升与增强,我们衷心希望广大开发者一起加入,与我们一起碰撞出思想的火花,围绕着访问控制的相关内容,共同把安全隐私体验进一步增强!
码云平台OpenHarmony项目ATM代码仓:
https://gitee.com/openharmony/security_access_token