
graph-autofusion 安全加固指南运行权限控制、构建运行声明与依赖供应链风险解读【免费下载链接】graph-autofusionGraph-autofusion 是一个面向昇腾Ascend芯片的轻量级、解耦式组件集合旨在通过自动融合技术加速模型执行。 目前已开源 SuperKernel 组件和 Autofuse 组件未来将持续开放更多自动融合相关模块。项目地址: https://gitcode.com/cann/graph-autofusion本篇技术指南以开源仓库 CANN/graph-autofusion 的官方安全声明SECURITY_en.md为主体骨架系统梳理了在昇腾Ascend芯片自动融合组件Autofuse 与 SuperKernel落地场景下应当遵循的安全基线最小权限运行原则、umask 与文件/目录权限控制矩阵、源码构建与运行期安全声明以及项目对外部网络地址makeself、PyPI 镜像的使用边界。读完本文你将掌握一套可直接落地的安装部署权限加固方案并能够对照仓库源码如 custom_postinst.sh验证其安全实现细节。一、运行用户推荐坚持最小权限原则仓库官方安全声明首先强调出于安全考虑不建议使用 root 等管理员账户执行任何命令应遵循最小权限least privilege原则。这条建议对 graph-autofusion 尤为关键因为该组件的安装与运行链条较长既有 C 编译产物libgraph_af.so等动态库也有 Python 侧 Autofuse/SuperKernel 包还有运行时生成的日志、缓存如kernel_cache*目录与临时文件。若以 root 身份运行任何被攻破的算子融合路径或第三方依赖都可能直接获得主机最高权限。最小权限原则要求在实操中使用专用的非特权系统账户或普通业务账户执行编译、安装与运行仅在确有需要的安装阶段短暂使用sudo运行阶段回归普通用户安装脚本本身也体现了这一思路——custom_postinst.sh 中通过id -u判断当前是否 rootinput_install_for_all据此调整安装目录的收紧力度。二、文件权限控制umask 0027 与权限矩阵2.1 umask 建议值声明要求用户在宿主机含主机与容器中将运行系统的 umask 设置为0027 或更高。由此可推导出默认新建对象的权限上限新建文件夹默认最大权限为750rwxr-x---属主可读写执行、属组可读执行、其他用户不可访问新建文件默认最大权限为640rw-r-----属主可读写、属组可读、其他用户不可访问。umask 0027 的本质是屏蔽掉其他用户的读、写、执行位o-rwx以及属组的写位g-w确保任何新产生的源码文件、配置文件、日志和中间产物不会对无关用户开放。对于部署在共享服务器或容器环境中的昇腾训练/推理节点这能有效降低横向越权读取业务图数据与算子缓存的风险。2.2 敏感内容与分场景权限控制声明进一步要求用户对开发与运行过程中保存的个人隐私数据、业务资产、源码文件、各类文件实施权限控制具体包括两类典型场景项目安装目录权限控制安装完成后对软件根目录及其子目录收紧权限输入公共数据文件权限控制对外部输入的模型文件、数据集等公共数据文件设置明确的读写边界。这两类场景的具体权限上限可参考下文附录各场景文件目录权限控制推荐最大值中的矩阵表。2.3 源码侧的权限控制实现graph-autofusion 的打包安装脚本正是上述矩阵的工程化落地。以 custom_postinst.sh 为例安装完成后会执行一套递归chmod收紧流程set_file_chmod() { # 非 root 安装时保留原权限root 安装时进一步收紧 local permission${1} ... } chmod_recur() { # 按 dir / file 类型递归设置权限 find ${file_path} -type d -exec chmod ${permission} {} \; 2/dev/null || true find ${file_path} -type f -exec chmod ${permission} {} \; 2/dev/null || true } chmod_recur ${sourcedir}/python 750 dir # Python 源码目录750 chmod_recur ${WHL_INSTALL_DIR_PATH}/superkernel 550 dir # SuperKernel 包目录550 chmod_recur ${WHL_INSTALL_DIR_PATH}/superkernel 550 file # SuperKernel 包文件550 chmod_recur ${WHL_INSTALL_DIR_PATH}/LICENSE 440 file # LICENSE只读440 chmod_recur ${sourcedir}/*-linux/lib64 550 dir # lib64 动态库目录550可以看出安装脚本对python目录使用 750对superkernel包与lib64动态库目录使用 550r-xr-x---属组可执行但不可写对 LICENSE 文件使用 440只读。同时脚本会对autofuse/__pycache__执行chmod -R 555将字节码缓存置为只读防止运行期被篡改见 custom_postinst.sh。这些数值与官方权限矩阵高度一致读者可按同一标准核查自建环境。三、构建安全声明源码编译期的中间文件防护声明指出从源码编译安装本项目时需要自行编译编译过程中会生成若干中间文件编译产物、生成的头文件、.so动态库、__pycache__等。建议在编译完成后对中间文件实施权限控制确保文件安全。对应到仓库结构源码编译涉及多个子模块例如autofuse 下的 ascendc API、codegen、optimize 等 C 源码super_kernel 的 AOT/JIT 运行时sk_*.cpp与 Python 包各子目录的CMakeLists.txt驱动的构建流程。实操建议编译使用专用构建目录避免在源码目录内散落中间产物构建完成后对产物目录执行chmod收紧如目录 750、库文件 550/640可参照上文安装脚本的数值若在容器内构建构建镜像内同样设置 umask 0027避免产物以过宽权限提交到镜像层。四、运行安全声明异常退出与错误定位运行期若发生异常进程会退出并打印错误信息建议依据错误提示定位具体原因。对 graph-autofusion 而言常见的运行期异常来源包括昇腾算子图融合过程中的形状推导infershape失败、tiling 参数非法SuperKernel 的 scope 切分与验证失败仓库中sk_scope_verify.cpp、sk_verify_graph.cpp等模块承担图校验职责依赖的 Python 包版本不匹配或缺失。在部署脚本中同样有对应实践graph_autofusion_custom_install.sh 在清理kernel_cache*目录时若遇权限不足会输出current user do not have permission to delete kernel_cache* directories的明确告警这正是依据错误提示定位原因的工程化体现。建议用户在运行环境统一收集ASCEND相关日志与进程退出码按错误码快速检索。五、公网网络地址声明依赖供应链的透明披露由于 graph-autofusion 编译与运行依赖部分外部资源官方声明对代码中出现的公网地址进行了完整披露。下表为原文完整数据类型开源代码地址文件名公网 IP/URL/域名/邮箱/压缩包地址用途说明依赖不适用cmake/third_party/makeself-fetch.cmakehttps://gitcode.com/cann-src-third-party/makeself/releases/download/release-2.5.0-patch1.0/makeself-release-2.5.0-patch1.tar.gz从 gitcode 下载 makeself 源码作为编译依赖依赖不适用super_kernel/requirements-dev.txthttps://pypi.tuna.tsinghua.edu.cn/simple从 pypi 下载 python whl 包作为编译与运行依赖需要说明的是cmake/third_party/makeself-fetch.cmake在本次开源的仓库快照中未包含cmake/目录下仅有 dependencies.cmake、fetch_cann_cmake.cmake、function.cmake、package.cmake可以推断该文件属于全量内部构建体系的一部分外部构建时需自行准备等价依赖。而 super_kernel/requirements-dev.txt 确实存在于仓库中其中声明的编译/运行依赖主要包括数值与科学计算numpy1.21.6、scipy1.7.3、sympy1.10.1、mpmath1.3.0、ml-dtypes0.2.0测试与打包pytest7.4.4、pytest-cov、pytest-timeout、pytest-xdist、coverage[toml]、build1.1.1、wheel基础工具attrs、cloudpickle、jinja2、psutil、packaging、setuptools68.0.0,80.0.0等。安全实践建议在生产内网环境建议将上述依赖提前镜像到内网 PyPI 源避免构建机直连公网对下载的 makeself 压缩包与 whl 包做完整性校验哈希比对防止供应链投毒定期跟踪依赖版本更新与 CVE 公告及时升级存在已知漏洞的依赖。六、漏洞机制说明官方安全声明将漏洞上报与处置机制统一指向社区的安全管理文档Vulnerability Management。安全研究者或使用者发现 graph-autofusion 相关安全缺陷时应通过该社区渠道报告遵循社区的披露流程与时间窗口避免在修复就绪前公开漏洞细节。附录各场景文件目录权限控制推荐最大值下表为 SECURITY_en.md 附录中的完整权限矩阵是部署与加固时的直接参照标准类型Linux 权限参考最大值用户主目录750rwxr-x---程序文件含脚本文件、库文件等550r-xr-x---程序文件目录550r-xr-x---配置文件640rw-r-----配置文件目录750rwxr-x---日志文件记录完成或归档440r--r-----日志文件正在记录640rw-r-----日志文件目录750rwxr-x---调试文件640rw-r-----调试文件目录750rwxr-x---临时文件目录750rwxr-x---维护升级文件目录770rwxrwx---业务数据文件640rw-r-----业务数据文件目录750rwxr-x---关键组件、私钥、证书、密文文件目录700rwx------关键组件、私钥、证书、加密密文600rw-------加解密接口、加解密脚本500r-x------使用要点**可执行对象程序、库、脚本**统一遵循属组可执行、禁止写的 550/500 系列防止运行期被写篡改**敏感凭据类私钥、证书、密文**收紧到仅属主可访问700/600与 umask 0027 的默认结果相比进一步收紧日志与调试文件按进行中/已归档区分进行中允许属主写640归档后仅保留读权限440安装阶段建议对照程序文件/库文件 550、配置 640、目录 750的标准逐项核查 custom_postinst.sh 与 install.sh 的执行结果可使用find 安装目录 -maxdepth 2 -printf %m %p\n快速巡检。小结graph-autofusion 的安全声明虽然篇幅精炼却覆盖了运行身份、权限基线、构建期、运行期与供应链五个维度是一份可直接落地的加固清单。落地时建议按以下顺序执行先以普通用户身份、umask 0027 建立部署环境再按附录矩阵收紧安装目录与配置文件权限编译与运行期分别核查中间产物与日志/缓存目录最后对 makeself、PyPI 等外部依赖做镜像化与完整性校验。结合仓库中安装脚本custom_postinst.sh、graph_autofusion_custom_install.sh的既有实现可快速完成一次从源码到运行态的完整安全加固。【免费下载链接】graph-autofusionGraph-autofusion 是一个面向昇腾Ascend芯片的轻量级、解耦式组件集合旨在通过自动融合技术加速模型执行。 目前已开源 SuperKernel 组件和 Autofuse 组件未来将持续开放更多自动融合相关模块。项目地址: https://gitcode.com/cann/graph-autofusion创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考