cfg文件白名单规则说明
规则解释
白名单严格遵循JSON格式。
耗时命令约束
白名单 约束*.cfg文件中的耗时命令。
-
耗时命令
命令执行超过200ms的命令行。
-
规则要求
- 命令行执行时间超过200ms。
- 耗时命令在白名单中配置。
- 耗时命令文件路径在白名单中配置。
-
白名单信息解释
{ "cmd":"init_global_key", "location":[ "/system/etc/init.cfg", ... ] }- cmd: 命令行
- location: 耗时命令文件路径
-
解决方法
- 检查违规项是否是耗时命令。
- 检查该命令是否包含白名单中。
- 检查该命令存在的文件路径是否包含在白名单中。
- 根据评审结果添加命令到白名单。
condition服务约束
白名单 约束*.cfg文件中的service的启动方式:condition。
-
condition
condition 条件启动,对服务的启动方式配置condition,通过start命令拉起服务。
-
规则要求
- 服务不是按需启动,即"ondemand" : false。
- 服务是条件启动, 即"start-mode" : "condition", 并且通过start命令拉起服务。
- 服务在白名单中。
-
白名单信息解释
{ "start-modes": [ { "start-mode":"condition", "service": [ "hilogd", ... ] } ] }- start-mode:"condition", 服务启动方式。
- service:通过"start-mode" : "condition" 启动的服务。
-
解决方法
- 检查服务否是按需启动。
- 检查服务是否配置条件启动, 且通过start命令拉起服务。
- 检查服务是否在白名单中。
- 根据评审结果添加服务到白名单。
boot服务约束
白名单 约束*.cfg文件中的service的启动方式:boot。
-
boot
在init job阶段启动,其服务的启动方式配置 boot。
-
规则要求
- 服务是boot启动, 即"start-mode" : "boot"的服务。
- 服务在白名单中。
-
白名单信息解释
{ "start-modes": [ { "start-mode":"boot", "service": [ "hiview", ... ] } ] }- start-mode:"boot",服务启动方式。
- service:通过"start-mode" : "boot" 启动的服务。
-
解决方法
- 检查服务是否是boot启动。
- 检查服务是否在白名单中。
- 根据评审结果添加服务到白名单。
start命令约束
白名单 约束*.cfg文件中的通过start执行的命令。
-
start
通过start拉起的服务。
-
规则要求
- 通过start命令执行的命令行。
- 命令行在白名单中。
-
白名单信息解释
{ "start-cmd": [ "ueventd", ... ] }start-cmd: 执行start命令行。
-
解决方法
- 检查命令是否是start命令。
- 检查命令行是否在白名单中。
- 根据评审结果添加命令到白名单。
selinux约束
-
secon
服务的selinux标签
-
规则要求
- 服务配置没有配置"secon"。
- 配置配置的"secon"为空。
-
解决方法
- 检查服务是否配置"secon", 且"secon"的配置不为空。
- 根据要求修改服务"secon"配置
编译时会提示如下类型的告警:
[NOT ALLOWED]: 'init_global_key' is timeout command, in /system/etc/init.cfg
[NOT ALLOWED]: xxx 'secon' is empty
[WARNING]: 'storage_daemon' cannot be started in boot mode
[WARNING]: 'hilogd' cannot be started in conditional mode
[WARNING]: selinux status is xxx
[WARNING]: multimodalinput is not in start cmd list. path:/system/etc/init/multimodalinput.cfg
违规场景及处理方案建议
- 服务默认按照并行启动配置,如果需要添加白名单,需要评审。
- 根据 规则解释 排查修改。