Skip to main content
支持对内存和 SEPolicy 进行自定义。对于大尺寸的可信应用程序,您可以自定义内存区域。

自定义内存

自定义内存功能仅面向拥有授权访问权限的许可用户。如果您有访问权限,请参阅 Qualcomm Linux Security Guide - Addendum。

自定义 SEPolicy

Qualcomm SEPolicy 依赖于上游 SEPolicy。因此,上游 SEPolicy 的 make 系统被用于构建和自定义 SEPolicy。 对上游 selinux 策略的自定义: 对 ostree selinux 策略的自定义:
  • 在现有 sepolicy 代码基础上创建补丁。
  • 将更改以补丁形式存储在 meta-updater/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted/ 目录中,并将补丁包含到 SRC_URI meta-updater/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted_git.bbappend 中
  • 在 uptane/meta-updater 上创建 Pull Request
对 qualcomm selinux 策略的自定义:
  • 在现有 sepolicy 代码基础上创建补丁。
  • 将更改以补丁形式存储在 meta-qcom/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted/ 目录中,并将补丁包含到 SRC_URI meta-qcom/dynamic-layers/selinux/recipes-security/refpolicy/refpolicy-targeted_git.bbappend 中
  • 在 qualcomm-linux/meta-qcom 上创建 Pull Request
为新服务/模块添加 sepolicy:
  • 在现有 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 配方以包含补丁。
Qualcomm 代码被配置为模块化 SEPolicy 模式,SELinux 类型为 targeted。要修改 SEPolicy 模式和 SELinux 类型,请执行以下操作:

编译 SEPolicy

  1. 设置构建环境。有关说明,请参阅 Qualcomm Linux Build Guide。
  2. 仅编译 selinux distro:
  3. 编译 catchall distro(此 distro 包含 selinu 以及其他一些 distro 功能):

修改和构建

您也可以增量地修改和构建。 Ubuntu 上的 audit2allow 和 research 工具不支持策略版本 35。您可以通过安装 policycoreutils-python-utils 来运行 audit2allow。
然后在此 shell 上运行 audit2allow。 从目标设备的 /etc/selinux/targeted/policy/policy.35 拉取策略版本 35。该策略也可在构建树中找到: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,该设备将无法再启用安全引导。

后续步骤