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. 系统应用如settings100 ~ 999

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

  8. 普通三方应用10000 ~ INT_MAX