subsys-app-privilege-config-guide.md 7.7 KB
Newer Older
D
dujingcheng@huawei.com 已提交
1 2 3 4
# 应用特权配置指南

应用特权是指应用所具备的一些高等级的特殊能力,比如限制应用不可被卸载、应用内数据不可被删除等。

W
wangtiantian 已提交
5
OpenHarmony提供通用的应用特权和可由设备厂商针对不同设备单独配置的应用特权。当签名证书中配置的特权与白名单(install_list_capability.json)中特权相同时,以白名单的配置为主。
D
dujingcheng@huawei.com 已提交
6

7
> 说明:应当注意不要滥用应用特权,避免造成用户反感甚至对用户造成侵权。
D
dujingcheng@huawei.com 已提交
8 9 10 11 12 13 14 15 16

## 通用应用特权

### 简介

通用的应用特权是指应用在不同设备类型上都可以获得的特权,可分为以下几种:

| 权限 | 描述                                                       |
| ---------------- | ------------------------------------------------------------ |
17 18 19 20
| AllowAppDataNotCleared | 是否允许应用数据被删除。 |
| AllowAppDesktopIconHide | 是否允许隐藏桌面图标。 |
| AllowAbilityPriorityQueried | 是否允许Ability配置查询优先级。    |
| AllowAbilityExcludeFromMissions | 是否允许Ability不在任务栈中显示。 |
D
dujingcheng@huawei.com 已提交
21 22 23

### 配置方式

24
1.[HarmonyAppProvision文件](../../application-dev/security/app-provision-structure.md)中添加字段”app-privilege-capabilities“,按需配置通用权限能力。
25 26
2. 使用签名工具对[HarmonyAppProvision文件](../../application-dev/security/app-provision-structure.md)重新签名,生成p7b文件。
3. 使用p7b文件签名HAP。
D
dujingcheng@huawei.com 已提交
27

28
参考:[应用签名](https://gitee.com/openharmony/developtools_hapsigner#hap%E5%8C%85%E7%AD%BE%E5%90%8D%E5%B7%A5%E5%85%B7 )
D
dujingcheng@huawei.com 已提交
29 30 31

### 示例

32
```json
D
dujingcheng@huawei.com 已提交
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
{
    "version-name": "1.0.0",
    ...
    "bundle-info": {
        "developer-id": "OpenHarmony",
        ...
    },
    "issuer": "pki_internal",
    "app-privilege-capabilities": ["AllowAppDataNotCleared", "AllowAppDesktopIconHide"] // 应用的数据不允许被删除且允许隐藏桌面图标
}
```

## 可由设备厂商配置的特权

### 简介

除了通用应用特权外,设备厂商还可以为各类设备额外定义允许配置的特权项,包括:

| 权限                  | 类型     | 默认值 | 描述                                              |
| --------------------- | -------- | ------ | ------------------------------------------------- |
53 54 55 56 57 58 59 60 61 62 63 64 65
| removable             | bool     | true   | 是否允许应用被卸载,仅预置应用生效。               |
| keepAlive             | bool     | false  | 是否允许应用常驻。                                 |
| singleton             | bool     | false  | 是否允许应用安装到单用户下(U0)。                   |
| allowCommonEvent      | string[] | -      | 是否允许静态广播拉起。                             |
| associatedWakeUp      | bool     | false  | 是否允许FA模型应用被关联唤醒。                     |
| runningResourcesApply | bool     | false  | 是否允许应用运行资源申请(CPU、事件通知、蓝牙等)。 |
| allowAppDataNotCleared | bool | false|是否允许应用数据被删除。 |
| allowAppMultiProcess | bool | false| 是否允许应用多进程。 |
| allowAppDesktopIconHide | bool | false| 是否允许隐藏桌面图标。 |
| allowAbilityPriorityQueried | bool | false| 是否允许Ability配置查询优先级。    |
| allowAbilityExcludeFromMissions | bool | false| 是否允许Ability不在任务栈中显示。 |
| allowAppUsePrivilegeExtension | bool | false|是否允许应用使用ServiceExtension、DataExtension。 |
| allowFormVisibleNotify | bool | false| 是否允许桌面卡片可见。 |
Y
yangmingliang 已提交
66
| allowAppShareLibrary | bool | false | 是否允许为其它应用提供[应用间`HSP`](../../application-dev/quick-start/cross-app-hsp.md)能力。
D
dujingcheng@huawei.com 已提交
67 68 69 70 71 72 73 74 75

### 配置方式

按需在[产品配置文件](https://gitee.com/openharmony/vendor_hihope/tree/master/rk3568/preinstall-config)中配置。

### 示例

#### install_list_capability.json中配置

76
```json
D
dujingcheng@huawei.com 已提交
77 78 79 80 81 82 83 84
{
    "install_list": [
        {
            "bundleName": “com.example.kikakeyboard”,
            "singleton": true, // 应用安装到单用户下
            "keepAlive": true, // 应用常驻
            "runningResourcesApply": true, // 运行资源申请(CPU、事件通知、蓝牙等)
            "associatedWakeUp": true, // FA模型应用被关联唤醒
85
            "app_signature" : ["****"], // 当配置的证书指纹和hap的证书指纹一致才生效
W
wangtiantian 已提交
86 87 88 89 90 91 92 93
            "allowCommonEvent": [“usual.event.SCREEN_ON”, “usual.event.THERMAL_LEVEL_CHANGED”],
            "allowAppDataNotCleared": true, // 不允许应用数据被删除
            "allowAppMultiProcess": true, //允许应用多进程
            "allowAppDesktopIconHide": true, //允许隐藏桌面图标
            "allowAbilityPriorityQueried": true, //允许Ability配置查询优先级
            "allowAbilityExcludeFromMissions": true, // 允许Ability不在任务栈中显示
            "allowAppUsePrivilegeExtension": true, // 允许应用使用ServiceExtension、DataExtension
            "allowFormVisibleNotify": true // 允许桌面卡片可见
Y
yangmingliang 已提交
94
            "allowAppShareLibrary": true // 允许应用提供应用间HSP能力
D
dujingcheng@huawei.com 已提交
95 96 97 98 99 100
        },
}
```

**证书指纹获取**

101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
1. 证书存放在[HarmonyAppProvision文件](../../application-dev/security/app-provision-structure.md)的distribution-certificate字段下,新建profile.cer文件,将证书的内容拷贝到profile.cer文件中。

   ```json
   {
       ...
       "bundle-info": {
           "distribution-certificate": "-----BEGIN CERTIFICATE----\nMIICMzCCAbegAwIBAgIEaOC/zDAMBggqhkjOPQQDAwUAMk..." /证书的内容
           ...
       }
       ...
   }
   ```

2. 将profile.cer内容换行和去掉换行符。
   ```
   -----BEGIN CERTIFICATE-----
   MIICMzCCAbegAwIBAgIEaOC/zDAMBggqhkjOPQQDAwUAMGMxCzAJBgNVBAYTAkNO
   MRQwEgYDVQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkgVGVh
   bTEjMCEGA1UEAxMaT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gQ0EwHhcNMjEwMjAy
   MTIxOTMxWhcNNDkxMjMxMTIxOTMxWjBoMQswCQYDVQQGEwJDTjEUMBIGA1UEChML
   T3Blbkhhcm1vbnkxGTAXBgNVBAsTEE9wZW5IYXJtb255IFRlYW0xKDAmBgNVBAMT
   H09wZW5IYXJtb255IEFwcGxpY2F0aW9uIFJlbGVhc2UwWTATBgcqhkjOPQIBBggq
   hkjOPQMBBwNCAATbYOCQQpW5fdkYHN45v0X3AHax12jPBdEDosFRIZ1eXmxOYzSG
   JwMfsHhUU90E8lI0TXYZnNmgM1sovubeQqATo1IwUDAfBgNVHSMEGDAWgBTbhrci
   FtULoUu33SV7ufEFfaItRzAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFPtxruhl
   cRBQsJdwcZqLu9oNUVgaMAwGCCqGSM49BAMDBQADaAAwZQIxAJta0PQ2p4DIu/ps
   LMdLCDgQ5UH1l0B4PGhBlMgdi2zf8nk9spazEQI/0XNwpft8QAIwHSuA2WelVi/o
   zAlF08DnbJrOOtOnQq5wHOPlDYB4OtUzOYJk9scotrEnJxJzGsh/
   -----END CERTIFICATE-----
   ```

3. 使用keytool工具,执行以下命令获取对应的证书指纹。

   > 说明:keytool工具可以在DevEco Studio安装后的`\tools\openjdk\bin`目录中获取。

   ```shell
   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
   # ...
   ```
D
dujingcheng@huawei.com 已提交
150 151 152

#### install_list.json中配置

153
```json
D
dujingcheng@huawei.com 已提交
154 155 156 157 158 159 160 161 162
{
     "install_list" : [
        {
            "app_dir" : "/system/app/com.ohos.launcher",
            "removable" : true // 应用是否可卸载
        }
     ]
}
```