openharmony之sandbox沙箱机制详解 - 指南

1. 概述

1.1 沙箱机制定义

鸿蒙系统沙箱(Sandbox)是一种安全隔离机制,通过mount命名空间和控制组(cgroup)技术,为系统服务和应用创建独立的运行环境,限制其对系统资源的访问权限。
为什么要有沙箱这个概念:
为了把每个应用关进“小黑屋”,防止它偷窥、篡改、破坏别人或系统的数据与资源。

  1. 数据隔离:应用 A 的文件、配置、数据库默认只能自己看,连应用 B 都碰不到,更别提系统。
  2. 权限最小化:即使应用申请了敏感权限(如麦克风、通讯录),也只能在沙箱里“有限使用”,超出范围立即被内核拒绝。
  3. 故障/攻击面最小化:应用崩溃或被植入恶意代码,最坏也只是把自己的沙箱玩坏,不会拖垮整个系统或其他应用。
    简单来说就是HAp与系统间接隔离,防止应用直接访问系统资源。造成系统损坏

2. 沙箱配置文件结构

写在前面: APP启动沙箱相关源码在base\startup\appspawn\modules\sandbox路劲下
相关的沙箱json文件:
base\startup\appspawn\appdata-sandbox-app.json
base\startup\appspawn\appdata-sandbox.json
base\startup\appspawn\appdata-sandbox64.json
=====================================================================
Init进程启动时沙箱相关配置文件:
base\startup\init\services\sandbox\system-sandbox.json
base\startup\init\services\sandbox\chipset-sandbox.json

2.1 配置文件类型

配置文件类型适用架构作用域路径
system-sandbox.json32位系统系统组件/system/etc/sandbox/
system-sandbox64.json64位系统系统组件/system/etc/sandbox/
chipset-sandbox.json32位系统芯片组件/system/etc/sandbox/
chipset-sandbox64.json64位系统芯片组件/system/etc/sandbox/

2.2 配置语法规范

{

"sandbox-root": "/mnt/sandbox/[system|chipset]",
"mount-bind-paths": [...],
"mount-bind-files": [...],
"symbol-links": [...]
}

3. 配置参数详解

3.1 根目录配置

{

"sandbox-root": "/mnt/sandbox/system"
}
  • system: 系统服务沙箱根目录
  • chipset: 芯片组件沙箱根目录

3.2 目录挂载配置(mount-bind-paths)

3.2.1 基本结构
{

"mount-bind-paths": [{

"src-path": "/system/lib",
"sandbox-path": "/system/lib",
"sandbox-flags": ["bind", "rec", "private"],
"ignore": 1
}]
}
3.2.2 参数说明
参数名类型必填说明示例
src-pathstring源目录路径“/system/lib”
sandbox-pathstring沙箱内挂载路径“/system/lib”
sandbox-flagsarray挂载标志[“bind”, “rec”, “private”]
ignoreint是否忽略挂载失败(1=忽略,0=检查)1
3.2.3 挂载标志详解
  • bind: 绑定挂载
  • rec: 递归挂载子目录
  • private: 私有挂载,不共享挂载事件

3.3 文件挂载配置(mount-bind-files)

3.3.1 基本结构
posted @ 2025-09-08 18:50  yfceshi  阅读(43)  评论(0)    收藏  举报