msit安全声明
系统安全加固
建议用户在系统中配置开启ASLR(级别2),又称全随机地址空间布局随机化,可参考以下方式进行配置:
echo 2 > /proc/sys/kernel/randomize_va_space
运行用户建议
-
本代码仓中的工具均设计为低权限安装使用,出于安全性及权限最小化角度考虑,所有工具均不应使用root等高权限账户使用,建议使用普通用户权限安装执行。
-
若工具使用依赖CANN,为保证安全,应使用同一低权限用户默认安装的CANN包,执行source后不要随意修改set_env.sh中涉及的环境变量。
-
当前代码仓内所有工具使用前,建议设置umask大于等于0027,以确保生成文件满足最小权限安全要求。
文件权限控制
-
用户向工具提供输入文件时,建议提供的文件属主与工具进程属主一致,且文件权限他人不可修改(包括group、others)。工具落盘文件权限默认他人不可写,用户可根据需要自行对生成后的相关文件进行权限控制。
-
用户安装和使用过程需要做好权限控制,建议参考文件权限进行设置。
文件权限控制
| 类型 | Linux权限参考最大值 |
|---|---|
| 用户主目录 | 750(rwxr-x---) |
| 程序文件(含脚本文件、库文件等) | 550(r-xr-x---) |
| 程序文件目录 | 550(r-xr-x---) |
| 配置文件 | 640(rw-r-----) |
| 配置文件目录 | 750(rwxr-x---) |
| 日志文件(记录完毕或者已经归档) | 440(r--r-----) |
| 日志文件(正在记录) | 640(rw-r-----) |
| 日志文件目录 | 750(rwxr-x---) |
| Debug文件 | 640(rw-r-----) |
| Debug文件目录 | 750(rwxr-x---) |
| 临时文件目录 | 750(rwxr-x---) |
| 维护升级文件目录 | 770(rwxrwx---) |
| 业务数据文件 | 640(rw-r-----) |
| 业务数据文件目录 | 750(rwxr-x---) |
| 密钥组件、私钥、证书、密文文件目录 | 700(rwx------) |
| 密钥组件、私钥、证书、加密密文 | 600(rw-------) |
| 加解密接口、加解密脚本 | 500(r-x------) |
漏洞安全声明
请参见MindStudio漏洞机制声明。
数据安全
-
工具使用过程中需要加载和保存数据,部分接口直接或间接使用pickle风险模块,可能存在数据风险,如torch.load等接口,可参考torch.load了解具体风险。
-
onnx模型加载解析特色功能依赖第三方onnx,小于1.15.0版本容易受到越界读取的攻击,使用前要先确保加载的onnx模型可信。
-
工具使用过程中通常会从硬盘中读取您从互联网所下载的模型权重(通过您提供的命令行参数或配置文件),使用非可信的模型权重可能会导致未知的安全风险,建议您在使用工具前通过SHA256校验等方法,确保模型权重可信后再传递给工具。
构建安全
msit、msmodelslim支持源码编译安装,在编译时会下载依赖第三方库并执行构建shell脚本,在编译过程中会产生临时程序文件和编译目录。用户可根据需要自行对源代码目录内的文件进行权限管控降低安全风险,用户在构建过程中可根据需要修改构建脚本以避免相关安全风险,并注意构建结果的安全。
运行安全
-
工具加载数据集时,如数据集加载内存大小超出内存容量限制,可能引发错误并导致进程意外退出;采集时间过长导致生成数据超过磁盘剩余空间大小时,可能会导致异常退出。
-
工具在运行异常时会退出进程并打印报错信息,属于正常现象。建议用户根据报错提示定位具体错误原因,包括查看日志文件,采集解析过程中生成的结果文件等方式。
-
为了避免远程代码注入攻击,如涉及到
--trust-remote-code参数,请将其设置为False。
公网地址
在msit仓工具的配置文件和脚本中存在的公网信息,请参见公网地址。
公开接口
msit项目采用C++和Python联合开发,提供的对外接口均已在资料中公开,正式接口只提供Python接口,动态库不直接提供服务,暴露的接口为内部使用,不建议用户使用。
Python等脚本语言,源码发布,建议直接使用资料说明的公开接口,不建议直接调用未明确公开的接口源码。
ATB预检、OM模型保存、AIE模型转换的源码在安装过程中编译后使用,编译出的动态库暴露的接口为内部使用,不建议用户随意修改和使用。
安全函数使用说明
不强制禁用不安全函数,但推荐使用缓冲区长度作为参数明确传入的_s安全版本,如memset_s、memcpy_s等。
通信安全加固
暂不涉及远程通信,建议用户在有防火墙或本地局域网的安全网络环境中使用工具,并注意其他三方软件的通信安全。
通信矩阵
| 代码仓 | 功能 | 源设备 | 源IP | 源端口 | 目的设备 | 目的IP | 目的端口(侦听) | 协议 | 端口说明 | 端口配置 | 侦听端口是否可更改 | 认证方式 | 加密方式 | 所属平面 | 版本 | 特殊场景 | 备注 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| msserviceprofiler | vllm服务端通信 | 自动寻优工具拉起的VLLM服务端 | 推理服务port参数对应的IP地址。 | 根据现网客户实际要求配置的固定端口,对应起服务时的--port字段,默认配置为8000。 | vllm客户端 | vllm客户端通信ip地址 | 默认8000 | HTTP | 工具将通过命令行拉起客户环境中的推理服务,若客户未进行配置,则默认端口8000,否则使用客户配置指定端口拉起vllm服务。 | 不涉及 | 可修改 | 不涉及 | 不涉及 | 数据面 | 所有版本 | 无 | 无 |
| msprechecker | 网络连通性与硬件检查(ping/hccn_tool) | 预检工具所在节点 | 预检工具所在节点的IP地址 | ICMP协议无端口(ping);hccn_tool默认使用系统保留端口(如RDMA相关端口)。 | 目标主机或网卡 | 目标主机IP或网卡地址 | ICMP无端口 | ICMP | 1. ping:测试网络连通性,基于ICMP协议无端口概念; 2. hccn_tool:检查昇腾NPU网卡状态,依赖系统默认RDMA/IB端口(如3225、18515等)。 |
不涉及 | 不可修改(ICMP) | 无 | 无 | 控制面 | 所有版本 | 部分需root权限执行 | 1. ping可能被防火墙拦截;2. hccn_tool需NPU驱动支持。 |
msserviceprofiler optimizer 工具会通过 mindie-service 产品运行服务端,mindie-service 使用了如下端口:
-
推理服务EndPoint提供业务面推理服务rest接口,客户端通过该端口请求发起推理请求,对应config.json配置文件中的port字段,可配范围为1024~65535,默认配置为1025。pd分离场景下默认端口号为31015。
-
推理服务EndPoint提供管理面服务状态查询rest接口,客户端通过该端口请求发起推理服务状态查询请求。对应config.json配置文件中的managementPort字段(管理面与业务面使用不同端口场景)或者port字段(管理面与业务面使用相同端口场景),可配范围为1024~65535,默认配置为1026。
-
推理服务EndPoint提供管理面服务状态查询rest接口,客户端通过该端口请求发起推理服务状态查询请求。对应config.json配置文件中的metricsPort字段,可配范围为1024~65535,默认配置为1027。
具体可参考MindIE资料说明。
msserviceprofiler optimizer工具会使用aisbench,vllm_benchmark等产品,通过端口和mindie-service以及vllm serve服务端进行交互,使用的端口需和服务端保持一致,请用户自行配置,并保证端口和服务端一致。
msprechecker工具会通过ping和hccn_tool进行多机网络连通性检查,以及通过HCCL通信状态验证。
其中ping网络连通性检查,基于ICMP协议,通过IP层直接通信。hccn_tool依赖昇腾NPU的RoCE(RDMA)协议,默认使用硬件通信端口3225(部分场景可能为18515)。
msprechecker工具调用了hccn_tool的vinc,tls,link,ping和hccs_ping子命令,不同命令可能使用了不同的默认端口。hccn_tool 端口与硬件本身端口相关,具体可参考昇腾硬件选择您对应的硬件产品查阅通信矩阵。
msprechecker工具通过上述协议与端口完成检查,无需用户额外配置端口,但需确保网络环境满足协议要求。