- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章OpenHarmony 源码解析之安全子系统 (应用权限管理)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
安全子系统为OpenHarmony提供有效保护应用和用户数据的能力.
主要功能: 系统安全、数据安全、应用安全等,
目前开源功能: 应用完整性保护、应用权限管理、设备认证、密钥管理服务、数据分级保护,
应用权限管理: 为程序框架子系统提供权限管理功能,并且为上层应用提供权限申请和授权状态查询接口.
本文将介绍标准系统下安全子系统应用权限管理部分如何在系统内适配及实现,尽力深入细节部分.
OpenHarmony中应用和系统服务均运行在独立的沙箱中,进程空间和程序数据都是相互隔离的,以保护应用数据的安全性;但是运行在独立沙箱中的服务或应用同时需要对外提供一些API以实现所需功能,其他独立沙箱中的应用在跨进程访问这些API时,需要系统提供一种权限管理机制对这些API的访问者进行授权.
应用权限管理提供了权限定义机制,允许系统服务和应用为自己的敏感API定义新的权限,其他应用必须申请此权限才能访问此敏感API,
应用权限管理提供了权限申请机制,允许应用申请权限,这些权限由系统或者其他应用定义,权限申请通过后就能访问这个权限相关的系统或其他应用提供的敏感API,
应用权限管理也为用户提供了一些必须的功能,方便用户查看和管理权限授予情况.
应用权限管理模块是以SystemAbility的形式对外提供能力的,在分布式任务调度子系统中safwk组件定义OpenHarmony中SystemAbility的实现方法,并提供启动、注册等接口实现.
实现一个SystemAbility需要六个步骤:
1)定义该服务对外提供的能力集合函数 。
2) 定义客户端通信代码XXXProxy 。
3) 定义服务端通信代码XXXStub 。
4)SystemAbility的实现类 。
5)SystemAbility配置 。
以c++实现的SA必须配置相关System Ability的profile配置文件才会完成SA的加载注册逻辑,否则没有编写profile配置的System Ability不会完成注册。配置方法如下:
在子系统的根目录新建一个以sa_profile为名的文件夹;然后在此文件夹中新建两个文件:一个以serviceId为前缀的xml文件;另外一个为BUILD.gn文件 。
BUILD.gn:
6)rc配置文件 。
rc配置文件为linux提供的native进程拉起策略,为手机在开机启动阶段由init进程解析配置的rc文件进行拉起 。
标准系统用户程序框架子系统提供权限管理基础校验能力,不对三方app开放,并提供如下API 。
IPermissionManager:内部接口类 。
PermissionManagerProxy:IPC请求的代理类 。
PermissionManagerStub:IPC请求服务类 。
PermissionManagerClient:应用权限管理客户类 。
PermissionKit:组件对外接口类,真正对外提供STATIC接口函数 。
PermissionManagerService:应用权限功能服务类,调用PermissionStateManager和PermissionDefinitionManager 。
PermissionStateManager:真正的应用权限管理功能实现 。
PermissionDefinitionManager:真正的应用权限管理功能实现 。
标准系统下应用权限管理功能是基于SAMgr管理框架实现,如何配置SAMgr框架见基础知识介绍,如果想学习更多细节参见SAMgr相关学习,这里专注于应用权限管理功能部分,并对代码逻辑关键节点进行分析和展示.
应用权限管理组件通过PermissionKit类以单例模式对外提供接口,PermissionKit类内部接口函数则调用PermissionManagerClient类,PermissionManagerClient则通过调用GetSystemAbility函数获取向SAMgr注册过的代理类单例PermissionManagerProxy.
代码如下:
在获取代理类PermissionManagerProxy后,PermissionManagerProxy内部不同功能接口函数会调用SendRequest函数发起IPC请求服务.
示例代码如下(删去省略部分):
其中接口类IPermissionManager中定义了IPC通信的请求码 。
示例代码如下(删去省略部分):
PermissionManagerService类则由于继承了PermissionManagerStub,会在接口函数OnRemoteRequest函数接收到代理PermissionManagerProxy通过IPC通信发送的不同请求,进而进行处理.
示例代码如下:
最终PermissionManagerService则调用PermissionStateManager和PermissionDefinitionManager类所提供的函数做具体的功能实现.
当今设备安全问题已经越来越引起不同行业的重视,OpenHarmney安全子系统作为系统基础能力之一对开发设备的安全性尤为重要,对系统框架开发来说很有必要学习其内部原理并对代码结构深入了解,本文档抛砖引玉介绍了标准系统下应用权限管理的相关逻辑框架,后续随着学习的深入将不断完善对安全子系统的解读.
原文链接:https://harmonyos.51cto.com 。
最后此篇关于OpenHarmony 源码解析之安全子系统 (应用权限管理)的文章就讲到这里了,如果你想了解更多关于OpenHarmony 源码解析之安全子系统 (应用权限管理)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
ACO.Visualization项目 本项目演示蚁群算法求解旅行商问题的可视化过程,包括路径上的信息素浓度、蚁群的运动过程等。项目相关的代码:https://github.com/anycad/A
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我需要用Sql数据库制作并包含的PHP票务系统源码用户客户端和管理员。我需要个人 CMS 的这个来源。谢谢你帮助我。 最佳答案 我在不同的情况下使用了 osticket。 这里: http://ost
我的场景:我想在日志文件中写入发生异常的部分代码(例如,发生异常的行前 5 行和行后 5 行 - 或者至少是该方法的所有代码)。 我的想法是用 C# 代码反编译 pdb 文件,并从该反编译文件中找到一
RocketMQ设定了延迟级别可以让消息延迟消费,延迟消息会使用 SCHEDULE_TOPIC_XXXX 这个主题,每个延迟等级对应一个消息队列,并且与普通消息一样,会保存每个消息队列的消费进度
先附上Hystrix源码图 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和
此篇博客学习的api如标题,分别是: current_url 获取当前页面的url; page_source 获取当前页面的源码; title 获取当前页面的titl
? 1 2
1、前言 作为一个数据库爱好者,自己动手写过简单的sql解析器以及存储引擎,但感觉还是不够过瘾。<<事务处理-概念与技术>>诚然讲的非常透彻,但只能提纲挈领,不能让你
gory"> 目录 运行时信号量机制 semaphore 前言 作用是什么 几个主要的方法 如何实现
自己写的一个评论系统源码分享给大家,包括有表情,还有评论机制。用户名是随机的 针对某一篇文章进行评论 function subcomment() {
一、概述 StringBuilder是一个可变的字符串序列,这个类被设计去兼容StringBuffer类的API,但不保证线程安全性,是StringBuffer单线程情况下的一个替代实现。在可能的情
一、概述 System是用的非常多的一个final类。它不能被实例化。System类提供了标准的输入输出和错误输出流;访问外部定义的属性和环境变量;加载文件和库的方法;以及高效的拷贝数组中一部分元素
在JDK中,String的使用频率和被研究的程度都非常高,所以接下来我只说一些比较重要的内容。 一、String类的概述 String类的声明如下: public final class Str
一、概述 Class的实例代表着正在运行的Java应用程序的类和接口。枚举是一种类,而直接是一种接口。每一个数组也属于一个类,这个类b被反射为具有相同元素类型和维数的所有数组共享的类对象。八大基本树
一、概述 Compiler这个类被用于支持Java到本地代码编译器和相关服务。在设计上,这个类啥也不做,他充当JIT编译器实现的占位符。 放JVM虚拟机首次启动时,他确定系统属性java.comp
一、概述 StringBuffer是一个线程安全的、可变的字符序列,跟String类似,但它能被修改。StringBuffer在多线程环境下可以很安全地被使用,因为它的方法都是通过synchroni
一、概述 Enum是所有Jav中枚举类的基类。详细的介绍在Java语言规范中有说明。 值得注意的是,java.util.EnumSet和java.util.EnumMap是Enum的两个高效实现,
一、概述 此线程指的是执行程序中的线程。 Java虚拟机允许应用程序同时执行多个执行线程。 每个线程都有优先权。 具有较高优先级的线程优先于优先级较低的线程执行。 每个线程可能也可能不会被标记为守
一、抽象类Number 类继承关系 这里面的原子类、BigDecimal后面都会详细介绍。 属性和抽象方法 二、概述 所有的属性,最小-128,最大127,SIZE和BYTES代码比
我是一名优秀的程序员,十分优秀!