定制内存
内存定制功能仅面向具有授权访问权限的许可用户。如果你拥有访问权限,请参阅 Qualcomm Linux Security Guide - Addendum。定制 SEPolicy
Qualcomm SEPolicy 依赖于上游 SEPolicy。因此,构建和定制 SEPolicy 使用的是上游 SEPolicy 的 make 系统。 对上游 selinux 策略进行定制:- 在 SELinuxProject/refpolicy 上创建 Pull Request。
- 将更改以补丁形式存放在
meta-qcom-distro/recipes-security/refpolicy/refpolicy-targeted/目录中,并在 SRC_URImeta-qcom-distro/recipes-security/refpolicy/refpolicy-targeted_git.bbappend中包含该补丁 - 在 qualcomm-linux/meta-qcom-distro 上创建 Pull Request
- 将补丁发送到 [meta-selinux]https://github.com/ni/meta-selinux。请参阅 [向 meta-selinux 发送补丁的步骤]https://github.com/ni/meta-selinux/blob/nilrt/master/scarthgap/MAINTAINERS。此步骤是可选的,因为在 meta-selinux 升级时,更改会自动从上游 refpolicy 同步。
- 在现有 sepolicy 代码基础上创建补丁。
- 将更改以补丁形式存放在
meta-updater/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted/目录中,并在 SRC_URImeta-updater/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted_git.bbappend中包含该补丁 - 在 uptane/meta-updater 上创建 Pull Request
- 在现有 sepolicy 代码基础上创建补丁。
- 将更改以补丁形式存放在
meta-qcom/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted/目录中,并在 SRC_URImeta-qcom/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted_git.bbappend中包含该补丁 - 在 qualcomm-linux/meta-qcom 上创建 Pull Request
- 在现有 selinux 策略基础上创建新的
<module_name>.fc、<module_name>.if、<module_name>.te文件,并添加所需的 selinux 规则。 - 将新模块上游提交到 SELinuxProject/refpolicy。如果服务/模块是私有的,请跳过此步骤。
- 确定服务/模块所在的 yocto 层。在该层内,创建
dynamic-layers/.../refpolicy-targeted/用于以补丁形式保存 sepolicy,并创建dynamic-layers/.../refpolicy-targeted_git.bbappend配方以包含补丁。
- 要更改 SELinux 类型和模式,可以编辑 Selinux 基础文件。
编译 SEPolicy
- 设置构建环境。有关说明,请参阅 Qualcomm Linux 构建指南。
- 仅编译 selinux 发行版:
- 编译 catchall 发行版(该发行版包含 selinux 以及其他一些发行版特性):
修改和构建
你也可以进行增量修改和构建。 Ubuntu 上的 audit2allow 和相关研究工具不支持 policy version35。你可以通过安装 policycoreutils-python-utils 来运行 audit2allow。/etc/selinux/targeted/policy/policy.35 拉取 policy version35。该策略也可在构建树中获得:build/tmp/sysroots-components/<machine_name>/refpolicy-targeted/etc/selinux/targeted/policy/policy.35
捕获拒绝记录
如果denials.txt 是捕获拒绝记录的文件,请使用以下命令解决这些拒绝:
配置重放保护内存块
重放保护内存块(RPMB)配置在设备整个生命周期中是一次性过程,且不可逆。- 为安全启动设备配置 RPMB:
- 在安全启动过程中,RPMB 会自动使用生产密钥进行配置。
- 请勿在启用安全启动之前配置 RPMB。
- 对于安全启动设备,无需执行任何显式的 RPMB 配置步骤。
- 为非安全启动设备配置 RPMB:
- 你可以使用测试密钥配置 RPMB,用于测试和演练某些用例,以观察类似于安全启动设备的功能。示例用例包括:
- 安全文件系统(SFS)文件版本信息和防回滚保护
- 可信应用程序防回滚保护
- 要使用测试密钥配置 RPMB,请参阅验证 RPMB 配置状态
- 你可以使用测试密钥配置 RPMB,用于测试和演练某些用例,以观察类似于安全启动设备的功能。示例用例包括:
后续步骤
- 有关常见的日志记录和调试技术,请参阅调试 Qualcomm TEE 和安全设备。
- 要了解如何开发和运行可信应用程序与客户端应用程序,以及获取示例代码和示例,请参阅开发可信应用程序和客户端应用程序。

