安全分析工作流定制
工作流(Workflow)是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工 作流系统是以规格化的流程描述作为输入的软件组件,它维护流程的运行状态,并在人和应 用之间分派活动。
为实现特定业务目标,工作流利用计算机 在多个参与者之间按某种预定规则自动传递文档、信息或者任务。 市面上已经涌现了大量的开源工作流管理工具,包括 Airflow、DVC、Elyra、Flyte、 Kale、Metaflow、Ploomber 等。其中,Jupyter lab 的插件 Elyra 提供交互式 搭建工作流的功能,适合基于 Kubernetes 进行部署。
工作流设计
定义内涵
一个工作流模块是指在工作流场景下的一个可以执行的流程,其内部可能包含了数据、 代码、模型、脚本以及代码运行环境等。通过将一个个工作流模块组合起来,并将不同模块 之间的输入和输出进行对接,可以形成一个完整的工作流模板,进行一键式地运行。
技术背景
为了能够使模块成功运行,需要确保模块内拥有代码、代码运行时所用的环境、启动代 码的命令等,这些信息可以被配置在一个 yaml 文件中。 Yaml 文件是一个可读性高,易于理解,用来表达数据序列化的格式。它的语法和其他高 级语言类似,并且可以简单表达清单(数组)、散列表、标量等数据形态。它使用空白符号 缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件等。 Kubernetes 中的大量操作都可以通过 yaml 文件来进行。
思路方案
Jupyterlab 的一个工作流模块是容器内的一个代码文件,通过可视化地将一个个文件组 合起来即可实现工作流的运行。而这种方式无法跨容器运行,因此 SecXOps 实现了一个从项 目到工作流模块的快速封装功能,支持用户从项目中挑选代码或脚本进行模块化。在模块化 过程中,SecXOps 会自动保存容器内指定的代码文件和脚本,同时为了确保代码能供正常运 行,需要检测容器内是否存在 Dockerfile,确保了用户环境能够在工作流运行时进行加载。 Dockerfile 准备完成后,程序就拥有了运行环境,启动命令则是在 yaml 文件中进行存储。 SecXOps 允许用户在封装模块时填写启动模块所需要的指令,如“python3 train.py --input data.txt”、“sh start.sh”等等。在封装模块时,所有预设的参数都需要以 $ 符号附带参数 名称进行替换,确保使用模块的用户能够*指定参数。这些启动命令将被存储在 yaml 文 件的启动配置项字段,工作流运行时会调用这些命令,让用户能够正常运行模块
参考资料
绿盟SecXOps安全智能分析技术白皮书http://github5.com/view/54257?csdn
友情链接
河北省法治社会建设实施方案(2021—2025年)