Files
openmind/security_statement.md
张烨槟 47d1089dff !142 【安全】更新隐私声明
Merge pull request !142 from 张烨槟/dev
2024-12-24 09:30:08 +00:00

14 KiB
Raw Permalink Blame History

安全声明

依赖三方软件安全

  1. 推荐用户通过openMind Library自动安装依赖三方软件指定版本或默认最新版本如因用户使用旧版本依赖三方软件引入安全漏洞产生影响openMind Library不承担相关责任。
  2. 参考PyTorchtorch.load()API文档openMind Library在使用PyTorch框架torch.load()方法时,除非参数weights_only设置为True否则PyTorch框架将隐式使用pickle模块进行反序列化加载这是已知不安全的。攻击者可构造恶意pickle数据进而通过反序列化过程实现任意代码执行。请用户关注切勿在非安全模式下加载非信任来源或可能被篡改的数据仅加载您信任的数据。
  3. 三方库torch< 2.2.0版本中存在CVE-2024-31584漏洞,该漏洞在torch/csrc/jit/mobile/flatbuffer_loader.cpp组件中存在越界读取问题openMind Library不涉及该场景。
  4. 三方库torch< 2.2.0版本中存在CVE-2024-31583漏洞,该漏洞在torch/csrc/jit/mobile/interpreter.cpp组件中存在use-after-free问题内存释放后程序继续使用该内存openMind Library不涉及该场景。

运行用户建议

出于安全性及权限最小化角度考虑不建议使用root等管理员类型账号使用。

安全隐私声明

访问令牌使用声明

当用户使用openMind Library访问hub非公开模型资源时需要在openMind Library接口参数中传入用户的访问令牌该数据属于用户个人数据请用户在使用时关注以下内容

  1. 使用个人数据时请遵从当地适用的法律法规;
  2. 个人数据的使用目的访问hub非公开模型资源时用于用户身份认证。接口接收访问令牌后该令牌仅透传给openmind_hub组件不涉及网络传输不涉及存储
  3. 个人数据的使用范围openMind Library接口参数AutoConfig.from_pretrained(token=***)方法,具体接口/参数详细信息请参考API文档
  4. 个人数据的使用方式用户调用openMind Library接口时通过参数传入用户应做好个人数据保护避免因肩窥python历史命令记录等途径被恶意获取利用
  5. 个人数据的使用时限:与被调用接口进程的运行时间保持一致,接口调用期间保存在内存中,进程结束后从内存中销毁;
  6. 个人数据的销毁方式:操作系统内存回收;
  7. 推荐用户定期更新访问令牌;

空间名称使用声明

当用户使用openMind Library访问hub模型资源时需要在openMind Library接口参数中传入期望访问的模型空间名称该名称通常由"组织名/模型仓库名"构成,该数据属于用户个人数据,请用户在使用时关注以下内容:

  1. 使用个人数据时请遵从当地适用的法律法规;
  2. 个人数据的使用目的明确期望访问的hub模型资源。接口接收空间名称后该名称仅透传给openmind_hub组件不涉及网络传输不涉及存储
  3. 个人数据的使用范围openMind Library接口参数AutoConfig.from_pretrained(pretrained_model_name_or_path=***)方法,具体接口/参数详细信息请参考API文档
  4. 个人数据的使用方式用户调用openMind Library接口时通过参数传入用户应做好个人数据保护避免因肩窥python历史记录等途径被恶意获取利用
  5. 个人数据的使用时限:与被调用接口进程的运行时间保持一致,接口调用期间保存在内存中,进程结束后从内存中销毁;
  6. 个人数据的销毁方式:操作系统内存回收;

文件权限控制

  1. 建议用户在主机包括宿主机及容器中设置运行系统umask值为0027及以上保障新增文件夹默认最高权限为750新增文件默认最高权限为640。

  2. 建议用户对个人数据、商业资产、源文件、训练过程中保存的各类文件、openMind Library安装目录、多用户使用共享数据集等敏感内容做好权限管控管控权限可参考表1进行设置。

    表1 文件(夹)各场景权限管控推荐最大值

    类型 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------

构建安全声明

openMind Library在源码构建安装过程中会产生临时目录和程序文件。用户可根据需要对源代码目录中的文件及文件夹进行权限管控降低安全风险。

运行安全声明

  1. 建议用户结合运行环境资源状况编写对应训练脚本。若训练脚本与资源状况不匹配,如数据集加载内存大小超出内存容量限制、训练脚本在本地生成数据超过磁盘空间大小等情况,可能引发错误并导致进程意外退出。
  2. openMind Library在运行异常时会退出进程并打印报错信息属于正常现象为降低用户敏感信息泄露风险将不会打印错误栈。
  3. openMind Library通过monkey-patching技术对huggingface_hub的download_url函数进行覆盖。出于安全性考虑openMind Library对该函数缓存临时文件路径进行限制~/.cache/openmind/tmp_files_from_url并在缓存时通过日志对缓存临时路径及对应url进行提示。因该方法不会自动删除已经缓存的数据请用户关注及时清理避免因缓存大量数据导致磁盘过度占用。
  4. 使用openMind Library时存在从openMind Library社区hub加载模型文件的场景需要用户在openMind Library接口传入trust_remote_code=True参数。请在使用该参数时确认使用openMind Library社区hub模型文件的安全性推荐指定模型文件版本避免hub模型文件变化带来影响。

公网地址声明

代码涉及公网地址参考 public_address_statement.md

公开接口声明

openMind Library在各级package的__init__.py文件中,通过懒加载、__all__约束公开接口范围,公开接口涉及模块包括Auto ClassesPipelineTrainerPreTrainerUtils 具体接口规格可通过链接访问对应API文档查询。其他接口默认不作为公开接口属于内部接口可能因业务需要出现变更不建议用户直接使用。

通信安全加固

openMind Library在分布式训练场景需要在设备间进行通信出于安全考虑建议用户针对此场景进行安全加固具体方法可参考通信安全加固

通信矩阵

openMind Library涉及通信矩阵如下

场景 SwanLab离线实验跟踪 openmind-cli deploy场景
源设备 运行swanlab进程的服务器 运行openmind-cli deploy进程的服务器
源IP 设备地址IP 设备地址IP
源端口 操作系统自动分配,分配范围由操作系统的自身配置决定 操作系统自动分配,分配范围由操作系统的自身配置决定
目的设备 运行swanlab进程的服务器 运行openmind-cli deploy进程的服务器
目的IP 设备地址IP 设备地址IP
目的端口 (侦听) 默认值5092用户可以设定端口号 默认值1025用户可以设定端口号
协议 TCP TCP
端口说明 在SwanLab离线实验跟踪场景中目的端口默认5092用于接收和发送数据源端口用于接收和发送数据 在openmind-cli deploy场景中目的端口默认1025用于接收和发送数据源端口用于接收和发送数据
侦听端口是否可更改
认证方式 无认证方式 无认证方式
加密方式
所属平面 不涉及 不涉及
版本 所有版本 所有版本
特殊场景
备注 该通信过程由开源软件SwanLab控制配置为SwanLab原生设置可参考SwanLab文档。源端口由操作系统自动分配,分配范围由操作系统的配置决定。 在使用LMDploy作为后端时该通信过程由开源软件LMDeploy控制配置为LMDeploy原生设置可参考LMDeploy文档。在使用MindIE作为作为后端时该通信过程由MindIE控制可参考MindIE文档。源端口由操作系统自动分配,分配范围由操作系统的配置决定。

除上述场景外openMind Library不涉及端口开放、侦听等相关行为PyTorch模型分布式训练涉及的相关端口行为由用户在模型脚本调用原生接口配置为PyTorch原生设置可参考PyTorch文档,具体通信矩阵可参考torch_npu文档Mindspore模型分布式训练涉及的相关端口行为由用户在模型脚本调用原生接口配置为Mindspore原生设置可参考Mindspore文档,具体通信矩阵可参考mindformers文档。建议用户注意做好安全防护,分布式训练的情况下请勿绑定全局端口,推荐进行通信安全加固。此外openMind Library内部会使用到openMind Hub组件可查询其通信矩阵

内置环境变量声明

openMind Library内置环境变量如下

环境变量名称 环境变量描述 默认值
ACCELERATE_USE_MEGATRON_LM PreTrainer是否使用Megatron-LM加速库 False
LOCAL_RANK 运行进程的设备卡号,不需要人工设置 -1
OPENMIND_OFFLINE 是否使用离线模式 "0"
OM_ENDPOINT openMind Library社区官网地址 "https://modelers.cn"
OM_MODULES_CACHE openMind Library缓存module的缓存路径 "~/.cache/openmind/modules"
OPENMIND_CACHE openMind Library缓存hub数据的缓存路径 "~/.cache/openmind/hub"
PYTORCH_OPENMIND_CACHE openMind Library缓存pytorch模型的缓存路径 "~/.cache/openmind/hub"
PYTORCH_PRETRAINED_BERT_CACHE openMind Library缓存pytorch BERT模型的缓存路径 "~/.cache/openmind/hub"
JIT_COMPILE openmind-cli chat 在昇腾NPU运行时是否开启即时编译设置为"1"、"true"表示即时编译,设置为其他值表示非及时编译 "0"
FORCE_CHECK_IMPORTS openmind-cli chat 是否强制校验模型依赖的三方库是否存在,设置为"1"、"true"表示强制校验,设置为其他值表示非强制校验 "0"
OPENMIND_MAX_CONCURRENT openmind-cli chat 对话过程开启异步线程池的信号量大小 "1"