安全分析工作流定制
工作流(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年)
暂无评论内容