CANN ops-nn 算子库安全声明解读:权限最小化、文件管控与构建运行安全实践
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),仅供参考

相关新闻

嵌入式BMS工程师能力地图:STM32/CAN/Simulink实战路径

嵌入式BMS工程师能力地图:STM32/CAN/Simulink实战路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 0:10:10 阅读更多 →
ATVC 模板库开发指南:用 Ascend C Templates for Vector Compute 快速构建 Vector 算子

ATVC 模板库开发指南:用 Ascend C Templates for Vector Compute 快速构建 Vector 算子

ATVC 模板库开发指南:用 Ascend C Templates for Vector Compute 快速构建 Vector 算子 【免费下载链接】atvc ATVC(Ascend C Templates for Vector Compute),是为基于Ascend C开发的典型Vector算子封装的一系列模板头文件的集合&…

2026/9/20 22:10:12 阅读更多 →
cwc-workshops .env与虚拟环境配置指南:避开新手90%的启动错误

cwc-workshops .env与虚拟环境配置指南:避开新手90%的启动错误

cwc-workshops .env与虚拟环境配置指南:避开新手90%的启动错误 【免费下载链接】cwc-workshops 项目地址: https://gitcode.com/GitHub_Trending/cw/cwc-workshops cwc-workshops 是 Anthropic「Code with Claude」大会的官方 Workshop 示例代码合集。新手在…

2026/9/20 22:06:26 阅读更多 →

最新新闻

Hydra:企业级AI实验操作系统的配置驱动架构解析

Hydra:企业级AI实验操作系统的配置驱动架构解析

1. 项目概述:这不是又一个配置工具,而是实验工程化的底层操作系统Hydra 不是 Python 里那个用来读 YAML 文件的“小工具”,它是 Meta 内部打磨近五年、支撑 Facebook 全量 AI 实验调度的配置驱动型实验操作系统。我第一次在 PyTorch Lightnin…

2026/9/21 2:43:30 阅读更多 →
运维大模型部署实战:从原理到上线避坑指南

运维大模型部署实战:从原理到上线避坑指南

最近各大运维群都在刷“大模型”三个字,一开始我也没太当回事。直到有天领导把我叫过去,说公司想上一个大模型项目,让我先调研一下可行性。我当时心里直犯嘀咕:我是运维,不是算法工程师,大模型关我什么事&a…

2026/9/21 2:43:30 阅读更多 →
用SQL调用AI Agent:让数据库成为企业智能分析入口

用SQL调用AI Agent:让数据库成为企业智能分析入口

上个月业务方找我要数,提了一个让我头大的需求:“把华东区上季度签单客户都拉出来,顺便标出哪些是从竞品那边抢回来的,再分析一下这批客户的采购偏好。”放在以前,光是“从竞品流失抢回”这个判断,就得先跟…

2026/9/21 2:43:30 阅读更多 →
Wasmtime 编译器混沌模式探秘:cranelift-control 控制平面的设计与 fuzzing 实践

Wasmtime 编译器混沌模式探秘:cranelift-control 控制平面的设计与 fuzzing 实践

Wasmtime 编译器混沌模式探秘:cranelift-control 控制平面的设计与 fuzzing 实践 【免费下载链接】wasmtime A lightweight WebAssembly runtime that is fast, secure, and standards-compliant 项目地址: https://gitcode.com/gh_mirrors/wa/wasmtime 导读…

2026/9/21 2:43:30 阅读更多 →
labelme 实例分割标注与 VOC/COCO 数据集转换实战指南

labelme 实例分割标注与 VOC/COCO 数据集转换实战指南

labelme 实例分割标注与 VOC/COCO 数据集转换实战指南 【免费下载链接】labelme Image annotation with Python. Supports polygon, rectangle, circle, line, point, and AI-assisted annotation. 项目地址: https://gitcode.com/gh_mirrors/la/labelme 本指南以仓库中…

2026/9/21 2:43:30 阅读更多 →
DeepSeek 报错 unknown variant ‘system‘?TaoToken 这样改配置

DeepSeek 报错 unknown variant ‘system‘?TaoToken 这样改配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 2:42:30 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →