Files
2020-09-10 10:22:30 +08:00
..
2020-09-10 10:22:30 +08:00
2020-09-10 10:22:30 +08:00
2020-09-10 10:22:30 +08:00

项目介绍

应用权限管理

应用权限是软件用来访问系统资源和使用系统能力的一种通行方式,存在涉及个人隐私相关功能和数据的场景,例如:访问个人设备的硬件特性,如摄像头、麦克风,以及获取个人数据,如通讯录,日历等存储的信息等。鸿蒙OS通过应用权限管理来保护这些数据以及能力。

当三方开发者需要声明应用需要的权限时,需要在安装包内的HarmonyProfile.json的描述文件中编辑req-permissions,声明方式参考图1

图 1 权限声明

字段说明:

字段

取值

意义

name

字符串

权限名。

reason

多语言字符串id

应用申请此权限的目的。

上架审核、弹框授权、用户管理权限时使用到

used-scene{

ability

when

}

ability:组件类名字符串

when:inuse, always

调用受此权限管控的接口的场景。

声明在哪些组件下、以及是否前台还是前后台都会去调用受权限管控的接口

IPC通信鉴权

  • 在Samgr中注册的系统服务如果通过进程间通信的方式暴露接口给其他进程访问,需要配置相应的访问控制策略。若不进行相关配置,访问会被拒绝。
  • 配置方式:在头文件base/security/services/iam_lite/include/policy_preset.h中配置访问策略。1. 定义各个Feature的策略 2. 将Feature的策略加到全局策略中

Eg. 比如当前需要为BMS服务配置访问策略,BMS在Samgr中注册的service为bundlems,注册的Feature为BmsFeature。

一、首先定义Feature的策略,可配置多个Feature,每个Feature可以配置多个访问策略,策略的声明方式参考图2

图 2 Feature策略示例

访问策略有三种类型:

图 3 访问策略结构体

  1. type为RANGE类型:允许某个特定范围UID的进程访问,需要指定uidMin和uidMax

  2. type为FIXED类型:允许指定的几个UID的进程访问,需要指定fixedUid,最多配置8个

  3. type为BUNDLENAME类型:只允许特定的应用访问,需要指定bundleName(包名)

二、将定义的Feature的策略加配到全局策略中,需要配置feature数量,注册参考图4

图 4 feature策略注册

UID分配规则

  1. Init/foundation进程:0

  2. appspawn进程:1

  3. Shell进程:2

  4. kitfw进程:3

  5. 其他内置服务向后递增…最多到99

  6. 系统应用(如settings):100 ~ 999

  7. 预置厂商应用(如钱包、淘宝):1000 ~ 9999

  8. 普通三方应用:10000 ~ INT_MAX