当前位置: 首页 > news >正文

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.json 32位系统 系统组件 /system/etc/sandbox/
system-sandbox64.json 64位系统 系统组件 /system/etc/sandbox/
chipset-sandbox.json 32位系统 芯片组件 /system/etc/sandbox/
chipset-sandbox64.json 64位系统 芯片组件 /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-path string 源目录路径 “/system/lib”
sandbox-path string 沙箱内挂载路径 “/system/lib”
sandbox-flags array 挂载标志 [“bind”, “rec”, “private”]
ignore int 是否忽略挂载失败(1=忽略,0=检查) 1
3.2.3 挂载标志详解
  • bind: 绑定挂载
  • rec: 递归挂载子目录
  • private: 私有挂载,不共享挂载事件

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

3.3.1 基本结构
http://www.xdnf.cn/news/1420759.html

相关文章:

  • K8S网络组件Calico深度解析
  • Python OpenCV图像处理与深度学习:Python OpenCV图像几何变换入门
  • 深入解析 Go 程序逆向风险与防护策略
  • 如何对嵌入式软件进行单元测试
  • 无重复字符的最长子串,leetCode热题100,C++实现
  • Vue3响应式陷阱:如何避免ref解构导致的响应式丢失
  • 电动自行车车架前叉振动、组合件冲击、把立管弯曲强度试验机等机械强度性能测试项目解析
  • 【趣味阅读】Python 文件头的秘密:从编码声明到 Shebang
  • Spring事务管理策略对比与性能优化实践指南
  • AI辅助论文写作,在《人工智能生成合成内容标识办法》出台后的新规则
  • HarmonyOS 应用开发深度实践:深入 Stage 模型与 ArkTS 声明式 UI
  • Linux - JDK安装
  • 刷题之链表oj题目
  • 突破超强回归模型,高斯过程回归!
  • 大语言模型对齐
  • VMware pro16(许可证)+centos 7超详细安装教程
  • MQ使用场景分析
  • 【RK3576】【Android14】PMIC电源管理
  • DVWA靶场通关笔记-SQL Injection Blind(SQL盲注 Impossible级别)
  • kubectl-etcd
  • 【C++】内存管理机制:从new到delete全解析
  • 植物中lncRNA鉴定和注释流程,代码(包含Identified,Classification,WGCNA.....)
  • 开发中使用——鸿蒙CoreSpeechKit语音识别
  • 基于MCP架构的OpenWeather API服务端设计与实现
  • C#在物联网GPS经纬度转换为百度地图地址
  • 亚马逊云代理商:如何选择适合的AWS EC2实例类型?
  • CVE Push Service | 高危漏洞实时情报自动化推送工具
  • Vue基础知识-使用监视属性watch和计算属性computed实现列表过滤+排序
  • 【golang长途旅行第35站】Redis
  • docker中的命令(六)