You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为R环境配置最严格AppArmor Profile以保障Shiny应用运行安全

符合要求的最严格AppArmor Profile及说明
profile r-sandbox flags=(attach_disconnected,mediate_deleted) {
    # 加载最小依赖抽象规则,避免重复写基础系统调用权限
    #include <abstractions/base>
    #include <abstractions/nameservice>

    # 基础proc权限,R运行必需
    @{PROC}/[0-9]*/attr/current r,
    @{PROC}/sys/kernel/random/uuid r,
    @{PROC}/cpuinfo r,
    @{PROC}/meminfo r,

    # 仅允许R运行必需的系统二进制,禁止其他任意/bin、/usr/bin下文件执行
    /bin/bash rix,
    /bin/sh rix,
    /usr/bin/R rix,
    /usr/bin/Rscript rix,

    # 设备与基础系统配置读权限,无写权限
    /dev/tty r,
    /dev/urandom r,
    /etc/R/** r,
    /etc/fonts/** mr,
    /etc/resolv.conf r,
    /etc/ssl/certs/** r,
    /etc/xml/** r,

    # R核心运行目录权限,全部设为只读+执行,禁止修改
    /usr/lib/R/** mr,
    /usr/lib/R/bin/exec/R rix,
    /usr/lib{,32,64}/lib*.so* mr,

    # 预设许可包专属权限,仅开放允许调用的包目录读权限
    # 可按实际需保留的包按需新增路径,例如gdistance:
    /usr/local/lib/R/site-library/gdistance/** mr,
    /usr/local/lib/R/site-library/[其他允许的包名]/** mr,

    # 临时目录仅允许当前进程读写,禁止执行,避免上传恶意二进制运行
    /tmp/ rw,
    /tmp/** rw,
    deny /tmp/** x,

    # 全局拒绝规则:覆盖所有未显式允许的路径
    # 禁止访问用户家目录、其他R包目录、Docker映射的宿主机目录(可按需单独放开)
    deny /** w,
    deny /home/** rwxl,
    deny /root/** rwxl,
    deny /usr/local/lib/R/site-library/*/ w,
    deny /usr/lib/R/site-library/*/ w,
}

规则核心逻辑说明

  • 权限收紧:删除了原宽松配置中/bin/* rix、/usr/bin/* rix、/usr/local/lib/R/** mr这类过宽的权限,仅显式放开R运行必需的二进制和依赖库
  • 禁止安装新包:所有R包安装目录均设为只读,全局拒绝未显式允许的路径写权限,用户无权限向任何R库目录写入文件
  • 恶意代码防护:临时目录禁止执行权限,避免用户上传恶意二进制文件后调用执行;默认拒绝所有用户目录、未授权R包目录的访问权限
  • 自定义适配:如果需要新增允许调用的R包,只需在预设许可包权限段新增对应包的目录规则即可;如果需要开放特定Docker映射目录的读写权限,单独新增对应路径的rw权限规则即可

部署前需先在调试模式下运行AppArmor,将沙箱运行的拒绝日志导出,补充遗漏的R基础依赖路径,避免规则过严导致核心功能异常。

内容的提问来源于stack exchange,提问作者user

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:45:06