未验证 提交 816c14a2 编写于 作者: O openharmony_ci 提交者: Gitee

!8851 OpenHarmony应用特殊权限管控md

Merge pull request !8851 from dujingcheng/djcDoc
......@@ -71,6 +71,8 @@
- [IPC通信鉴权开发指导](subsys-security-communicationverify.md)
- [设备安全等级管理开发指导](subsys-security-devicesecuritylevel.md)
- [OpenHarmony通用密钥库系统开发指导](subsys-security-huks-guide.md)
- [应用特权配置指导](subsys-app-privilege-config-guide.md)
- [预置应用配置指导](subsys-preinstall-app-config-guide.md)
- 启动恢复
- [启动恢复子系统概述](subsys-boot-overview.md)
- init启动引导组件
......
# 应用特权配置指南
应用特权是指应用所具备的一些高等级的特殊能力,比如限制应用不可被卸载、应用内数据不可被删除等。
OpenHarmony提供通用的应用特权和可由设备厂商针对不同设备单独配置的应用特权。
注:应当注意不要滥用应用特权,避免造成用户反感甚至对用户造成侵权。
## 通用应用特权
### 简介
通用的应用特权是指应用在不同设备类型上都可以获得的特权,可分为以下几种:
| 权限 | 描述 |
| ---------------- | ------------------------------------------------------------ |
| AllowAppDataNotCleared | 是否允许应用数据被删除 |
| AllowAppMultiProcess | 是否允许应用多进程 |
| AllowAppDesktopIconHide | 是否允许隐藏桌面图标 |
| AllowAbilityPriorityQueried | 是否允许Ability配置查询优先级 |
| AllowAbilityExcludeFromMissions | 是否允许Ability不在任务栈中显示 |
| AllowAppUsePrivilegeExtension | 是否允许应用使用ServiceExtension、DataExtension |
| AllowFormVisibleNotify | 是否允许桌面卡片可见 |
### 配置方式
1.[HarmonyAppProvision文件](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/app-provision-structure.md)中添加字段”app-privilege-capabilities“,按需配置通用权限能力。
2. 使用签名工具对HarmonyAppProvision文件重新签名,生成p7b文件
3. 使用p7b文件签名hap
参考:[应用签名](https://gitee.com/openharmony/developtools_hapsigner#hap%E5%8C%85%E7%AD%BE%E5%90%8D%E5%B7%A5%E5%85%B7 )
### 示例
```
{
"version-name": "1.0.0",
...
"bundle-info": {
"developer-id": "OpenHarmony",
...
},
"issuer": "pki_internal",
"app-privilege-capabilities": ["AllowAppDataNotCleared", "AllowAppDesktopIconHide"] // 应用的数据不允许被删除且允许隐藏桌面图标
}
```
## 可由设备厂商配置的特权
### 简介
除了通用应用特权外,设备厂商还可以为各类设备额外定义允许配置的特权项,包括:
| 权限 | 类型 | 默认值 | 描述 |
| --------------------- | -------- | ------ | ------------------------------------------------- |
| removable | bool | true | 是否允许应用被卸载,仅预置应用生效 |
| keepAlive | bool | false | 是否允许应用常驻 |
| singleton | bool | false | 是否允许应用安装到单用户下(U0) |
| allowCommonEvent | string[] | - | 是否允许静态广播拉起 |
| associatedWakeUp | bool | false | 是否允许FA模型应用被关联唤醒 |
| runningResourcesApply | bool | false | 是否允许应用运行资源申请(CPU、事件通知、蓝牙等) |
### 配置方式
按需在[产品配置文件](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568/preinstall-config)中配置。
### 示例
#### install_list_capability.json中配置
```
{
"install_list": [
{
"bundleName": “com.example.kikakeyboard”,
"singleton": true, // 应用安装到单用户下
"keepAlive": true, // 应用常驻
"runningResourcesApply": true, // 运行资源申请(CPU、事件通知、蓝牙等)
"associatedWakeUp": true, // FA模型应用被关联唤醒
"app_signature" : [“8E93863FC32EE238060BF69A9B37E2608FFFB21F93C862DD511CBAC”], // 当配置的证书指纹和hap的证书指纹一致才生效
"allowCommonEvent": [“usual.event.SCREEN_ON”, “usual.event.THERMAL_LEVEL_CHANGED”]
},
}
```
**证书指纹获取**
**步骤一、证书存放在HarmonyAppProvision文件的distribution-certificate字段下,新建profile.cer文件,将证书的内容拷贝到profile.cer文件中**
示例
```
{
...
"bundle-info": {
"distribution-certificate": "-----BEGIN CERTIFICATE----\nMIICMzCCAbegAwIBAgIEaOC/zDAMBggqhkjOPQQDAwUAMk..." /证书的内容
...
}
...
}
```
**步骤二、将profile.cer内容换行和去掉换行符**
示例
```
-----BEGIN CERTIFICATE-----
MIICMzCCAbegAwIBAgIEaOC/zDAMBggqhkjOPQQDAwUAMGMxCzAJBgNVBAYTAkNO
MRQwEgYDVQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkgVGVh
bTEjMCEGA1UEAxMaT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gQ0EwHhcNMjEwMjAy
MTIxOTMxWhcNNDkxMjMxMTIxOTMxWjBoMQswCQYDVQQGEwJDTjEUMBIGA1UEChML
T3Blbkhhcm1vbnkxGTAXBgNVBAsTEE9wZW5IYXJtb255IFRlYW0xKDAmBgNVBAMT
H09wZW5IYXJtb255IEFwcGxpY2F0aW9uIFJlbGVhc2UwWTATBgcqhkjOPQIBBggq
hkjOPQMBBwNCAATbYOCQQpW5fdkYHN45v0X3AHax12jPBdEDosFRIZ1eXmxOYzSG
JwMfsHhUU90E8lI0TXYZnNmgM1sovubeQqATo1IwUDAfBgNVHSMEGDAWgBTbhrci
FtULoUu33SV7ufEFfaItRzAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFPtxruhl
cRBQsJdwcZqLu9oNUVgaMAwGCCqGSM49BAMDBQADaAAwZQIxAJta0PQ2p4DIu/ps
LMdLCDgQ5UH1l0B4PGhBlMgdi2zf8nk9spazEQI/0XNwpft8QAIwHSuA2WelVi/o
zAlF08DnbJrOOtOnQq5wHOPlDYB4OtUzOYJk9scotrEnJxJzGsh/
-----END CERTIFICATE-----
```
**步骤三、使用keytool工具打印对应的证书指纹**
示例
```
keytool -printcert -file profile.cer
result:
所有者: CN=OpenHarmony Application Release, OU=OpenHarmony Team, O=OpenHarmony, C=CN
发布者: CN=OpenHarmony Application CA, OU=OpenHarmony Team, O=OpenHarmony, C=CN
序列号: 68e0bfcc
生效时间: Tue Feb 02 20:19:31 CST 2021, 失效时间: Fri Dec 31 20:19:31 CST 2049
证书指纹:
SHA1: E3:E8:7C:65:B8:1D:02:52:24:6A:06:A4:3C:4A:02:39:19:92:D1:F5
SHA256: 8E:93:86:3F:C3:2E:E2:38:06:0B:F6:9A:9B:37:E2:60:8F:FF:B2:1F:93:C8:62:DD:51:1C:BA:C9:F3:00:24:B5 // 证书指纹,去掉冒号,最终结果为8E93863FC32EE238060BF69A9B37E2608FFFB21F93C862DD511CBAC9F30024B5
...
```
#### install_list.json中配置
```
{
"install_list" : [
{
"app_dir" : "/system/app/com.ohos.launcher",
"removable" : true // 应用是否可卸载
}
]
}
```
# 预置应用配置指南
OpenHarmony支持在不同产品上对预置应用进行差异化配置,设备厂商可根据需要对预置应用进行配置。
此外,OpenHarmony根据GetCfgDirList获得系统支持的预置目录,如system、chipset、sys_prod、chip_prod;并且按照返回的顺序越靠后优先级越高,如chip_prod的优先级高于system的优先级。
## 预置应用安装列表配置
### 应用预置到系统中的配置步骤
1. 在预置目录下创建应用的名称作为应用目录
2. 将应用预置到应用目录下,如 /system/app/Hiworld/entry.hap
3. 添加应用目录到[install_list.json](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/preinstall-config/install_list.json),根据需求配置removable
### 示例
```
{
"install_list" : [
{
"app_dir" : "/system/app/Hiworld",
"removable" : false // 是否可卸载
}
]
}
```
## 预置不安装列表配置
[uninstall_list.json](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/preinstall-config/uninstall_list.json)的配置优先级高于install_list.json,在该文件中配置后,则对应的预置应用不会安装。
### 示例一
```
/system/etc/app/uninstall_list.json
{
"uninstall_list" : ["/system/app/Hiworld"], // 配置后,则Hiworld不会被安装
"recover_list" : []
}
```
### 示例二
```
/system/etc/app/uninstall_list.json
{
"uninstall_list" : ["/system/app/Hiworld"],
"recover_list" : []
}
/chipset/etc/app/uninstall_list.json
{
"uninstall_list" : [],
"recover_list" : ["/system/app/Hiworld"] // 配置后,则Hiworld被恢复安装
}
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册