
CANN ops-nn 算子库安全声明解读权限最小化、文件管控与构建运行安全实践【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nnCANN ops-nn 是 CANN 提供的神经网络类计算算子库用于在 NPU 上加速各类网络计算。本文基于仓库根目录的 SECURITY.md 安全声明系统梳理该算子库在运行用户选择、文件权限控制、源码构建、算子运行及依赖下载等环节的安全要求并结合 install_deps.sh、cmake/package.cmake 等仓库文件给出源码级佐证。读完本文你将掌握在开发、编译、运行 CANN ops-nn 算子时应当遵循的安全基线包括 umask 设置、目录与文件权限上限、异常场景的定位方法以及对外部编译依赖的审计方式。一、运行用户建议坚持权限最小化原则SECURITY.md 开篇即给出第一条安全基线不建议使用 root 等管理员类型账户执行任何命令应遵循权限最小化原则。这条建议适用于 CANN ops-nn 使用过程中的所有环节环境准备安装编译依赖、配置 CMake 构建环境时避免以 root 身份执行安装脚本源码编译编译算子时生成的中间文件、产物文件若由管理员账户创建其默认权限往往过高容易成为提权与信息泄露的入口算子调用编写和执行算子调用脚本时同样建议使用普通业务账户。权限最小化的核心思想是够用即可——进程只拥有完成自身任务所需的最小权限从而缩小攻击面。例如仓库根目录下的 install_deps.sh约 632 行的依赖安装脚本会执行apt、gcc工具链配置等敏感操作这类脚本尤其应当在受控的普通账户或专用的构建环境中运行而非直接使用 root。二、文件权限控制umask 与分场景权限上限2.1 设置 umask 值为 0027 及以上SECURITY.md 建议用户在主机包括宿主机及容器中将运行系统的 umask 值设置为0027 及以上从而保证新增文件夹的默认最高权限为750rwxr-x---新增文件的默认最高权限为640rw-r-----。umask 表示创建文件时扣减的权限位。umask 0027意味着新建目录不会带出 group 写权限、other 全部权限新建文件不会带出 group 写权限和 other 全部权限确保新增内容默认对同组只读、对其他用户不可见。该设置在宿主机与容器内均需生效避免容器与宿主机之间因权限差异导致敏感文件意外可读。2.2 敏感内容的权限管控以下敏感内容都需要做好权限控制个人隐私数据商业资产源文件算子开发过程中保存的各类文件如op_host、op_kernel、tests目录下的源码与测试文件本项目安装目录输入公共数据文件。以上各类文件的权限上限可参考下文附录 A 的文件夹各场景权限管控推荐最大值表。2.3 kernel_meta_* 算子编译缓存算子运行时可能会缓存算子编译文件存放在运行目录下的kernel_meta_*文件夹内用于加快后续算子的调用速度。该目录中保存的是算子 kernel 的编译产物可能包含反编译后可读取的实现细节因此用户应根据需要对生成后的相关文件自行做好权限控制防止被未授权用户读取。三、构建安全声明源码编译后的中间文件管控CANN ops-nn 采用源码编译安装方式用户在编译过程中会生成大量中间文件。SECURITY.md 明确要求编译完成后对中间文件做好权限控制以保证文件安全。从仓库的构建体系可以印证这一要求背后的必要性cmake/package.cmake 中通过add_cann_third_party(makeself-fetch)拉取打包工具 makeselfcmake/func.cmake 与 cmake/modules/Findaicpu.cmake 引用 eigen 等第三方库构建过程会经由 scripts/opgen、cmake/gen_ops_info.cmake 等环节生成算子二进制、ops-info配置文件等产物。这些中间文件分布在构建目录、kernel_meta_*缓存目录以及第三方依赖解压目录中建议在编译完成后检查构建目录如build、out等中产物的属主与权限对包含算子实现信息的中间产物按 640/750 上限收紧权限定期清理不再需要的临时编译文件。四、运行安全声明资源匹配、异常定位与版本匹配4.1 算子调用脚本与运行资源匹配建议用户结合运行环境资源状况编写算子调用脚本。若脚本与资源状况不匹配可能引发错误并导致进程意外退出典型场景包括生成输入数据或标杆benchmark计算结果时申请空间超出内存容量限制脚本在本地保存数据超过磁盘空间大小。因此在编写用例时应预估输入张量、中间结果及输出结果的内存占用并结合 NPU 可用显存与宿主机可用内存合理设置数据规模。4.2 算子运行异常时的定位方法算子在运行异常时会退出进程并打印报错信息建议根据报错提示定位具体错误原因常用手段包括设定算子同步执行将异步错误转为同步可捕获的错误便于获取完整调用栈查看日志文件结合报错码与日志时间线确认失败环节结合算子自身实现如 activation/relu/op_kernel、op_host 中的 tiling 与 kernel 代码排查输入 shape、数据类型与约束条件是否满足。4.3 PyTorch 调用场景的版本匹配算子通过 PyTorch 方式调用时可能会因为版本不匹配导致运行错误。具体可参考 PyTorch 的安全声明见 gitee.com/ascend/pytorch 中安全声明章节。实践中应确保CANN 工具链版本与 PyTorch 适配版本一致算子库ops-nn构建时使用的昇腾软件栈与运行时 NPU 驱动版本匹配升级任一组件后重新执行算子用例验证兼容性。五、公网地址声明编译依赖来源审计SECURITY.md 声明了本项目代码中涉及的公网地址主要用于编译依赖的获取。下表完整列出URL 以纯文本呈现便于审计核对类型开源代码地址文件名公网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源码作用编译依赖依赖不涉及cmake/third_party/nlohmann_json.cmakehttps://gitcode.com/cann-src-third-party/json/releases/download/v3.11.3/include.zip从gitcode下载json源码作用编译依赖依赖不涉及cmake/third_party/gtest.cmakehttps://gitcode.com/cann-src-third-party/googletest/releases/download/v1.14.0/googletest-1.14.0.tar.gz从gitcode下载googletest源码作用编译依赖依赖不涉及cmake/third_party/eigen.cmakehttps://gitcode.com/cann-src-third-party/eigen/releases/download/5.0.0-h0.trunk/eigen-5.0.0.tar.gz从gitcode下载eigen源码作用编译依赖依赖不涉及ops-nn/install_deps.shhttps://apt.kitware.com/keys/kitware-archive-latest.asc从apt.kitware.com下载Kitware签名密钥作用编译依赖依赖不涉及ops-nn/install_deps.shhttps://apt.kitware.com/ubuntu/从apt.kitware.com下载Kitware签名密钥作用编译依赖依赖不涉及cmakehttps://apt.kitware.com/keys/kitware-archive-latest.asc从kitware下载cmake软件作用编译依赖依赖不涉及cmakehttps://apt.kitware.com/ubuntu/从kitware下载cmake软件作用编译依赖对上述依赖的源码级印证makeself 依赖构建打包流程在 cmake/package.cmake 中通过add_cann_third_party(makeself-fetch)触发下载nlohmann_json 依赖JSON 解析贯穿算子配置与 ops-info 生成流程cmake/gen_ops_info.cmake 中大量使用*_binary.json、ops-info.json等配置文件的解析与生成cmake/func.cmake 中add_dependencies(${OPHOST_NAME}_tiling_obj json)明确声明了对 json 库的编译依赖gtest 依赖仓库 tests/ut 目录包含大量 C 单测用例gtest 作为单元测试框架被引入eigen 依赖cmake/func.cmake 与 cmake/modules/Findaicpu.cmake 中可见${CANN_3RD_LIB_PATH}/eigen的引用Kitware 依赖仓库根目录 install_deps.sh 承担 CMake 等编译依赖的安装其中涉及 apt 源配置与 Kitware 签名密钥导入。安全提示在受控网络环境中编译时可结合该表对构建期网络访问做白名单管控并对下载产物做校验与归档防止供应链投毒风险。六、漏洞机制说明若在 CANN ops-nn 使用过程中发现安全漏洞可遵循 CANN 社区统一的漏洞管理机制进行上报与处置漏洞管理说明见 gitcode.com/cann/community 仓库 security 目录下的 security.md。建议关注安全公告与补丁发布节奏及时将算子库升级到修复版本。七、附录文件夹各场景权限管控推荐最大值下表为 SECURITY.md 附录给出的完整权限参考表适用于算子开发、安装、运行过程中各类文件与目录的权限设置类型Linux权限参考最大值用户主目录750rwxr-x---程序文件含脚本文件、库文件等550r-xr-x---程序文件目录550r-xr-x---配置文件640rw-r-----配置文件目录750rwxr-x---日志文件记录完毕或者已经归档440r--r-----日志文件正在记录640rw-r-----日志文件目录750rwxr-x---Debug文件640rw-r-----Debug文件目录750rwxr-x---临时文件目录750rwxr-x---维护升级文件目录770rwxrwx---业务数据文件640rw-r-----业务数据文件目录750rwxr-x---密钥组件、私钥、证书、密文文件目录700rwx------密钥组件、私钥、证书、加密密文600rw-------加解密接口、加解密脚本500r-x------使用要点权限数值为最大值而非强制值实际设置可根据业务场景进一步收紧涉及密钥、证书、密文的内容一律使用 600/700 级别的私有权限仅属主可读写日志归档后可降级为 440只读既保留审计需要又避免被篡改程序文件采用 550 只读可执行权限防止运行期被意外改写。总结CANN ops-nn 的安全基线可以概括为三条主线最小权限运行不推荐 root 执行命令、精细化文件管控umask 0027 起步、按场景设置权限上限、管控kernel_meta_*编译缓存、全链路安全声明构建中间文件、运行资源与异常定位、PyTorch 版本匹配、公网依赖审计。在部署与开发过程中将 SECURITY.md 中的权限表和依赖清单纳入日常安全检查项即可显著降低因权限过大、依赖失控或资源不匹配带来的安全与稳定性风险。【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考