剧本是指预先定义好的逻辑流程或脚本,用于对安全事件进行识别、分类、判断和响应。剧本包括一系列步骤,用于执行特定的操作,以确定是否存在安全威胁,如何响应和缓解威胁。剧本可以根据不同的安全事件类型和级别进行定制和配置,以适应不同的安全需求。通过使用剧本,响应编排可以帮助您提高安全响应的效率和一致性。
核心概念
剧本类型
云安全中心提供两种类型的剧本:
-
预定义剧本:云安全中心结合常见的安全威胁场景及解决方案,内置了一批剧本,无需配置您可直接使用。同时可复制预定义剧本另存为您的自定义剧本,并在此基础上根据实际情况进行调整修改,降低自定义剧本的配置难度。
-
自定义剧本:在面临复杂、个性化程度较高的安全威胁场景时,云安全中心提供了灵活性的自定义剧本。您可借助流程编辑器对各类组件进行自由配置,轻松实现自动化的安全处理方案。
剧本参数(输入输出参数)
-
输入参数:即配置触发剧本的条件。选择不同的条件,在调试时参数样例会随之变化。
-
输出参数:定义剧本执行结束后,输出的字段,可供后续节点使用,也可通过setOutput动作提供给被其他剧本引用。语法格式:${event.参数路径}。
说明除自定义的输出参数外,还提供默认的系统参数,请参见剧本中的系统参数。
自定义剧本配置流程图
流程编辑器简介
剧本流程通过可视化流程编辑器完成创建、修改、调试及发布,以下为流程编辑器的主要信息:

|
序号 |
说明 |
|
1-菜单栏 |
|
|
2-流程节点 |
与外部无关,每个流程都需要的基础组件。每个流程必须有一个开始节点作为起始点,可以有多个结束节点。更多说明,请参见系统组件。 |
|
3-组件动作和剧本 |
|
|
4-画布区域 |
画布区域,您可以将需要添加的组件拖动至画布区域,在画布中根据组件之间的逻辑关系进行连接。
|
|
5-调试区域 |
单击调试或者右下角的
|
自定义剧本配置步骤
步骤一:创建剧本基本信息
-
登录云安全中心控制台。
-
在左侧导航栏,选择。在控制台左上角,选择需防护资产所在的区域:中国内地或非中国内地。
-
在自定义剧本页签,单击新增剧本。
-
在新增剧本面板,填写剧本名称和剧本描述,单击确定。
也可在预定义剧本页签,选择合适的剧本单击操作列复制,将预定义剧本复制为一个新的自定义剧本。
步骤二:配置剧本流程
-
按步骤一创建剧本基本信息完毕后,会自动跳转至剧本流程配置页面。也可从自定义剧本列表页,单击操作列编辑按钮,进入配置页面。
-
配置剧本输入输出参数
-
在剧本编辑页面,单击右上角的设置,在配置面板,单击输入输出配置。
说明每个流程必须要有开始和结束节点,每个流程只能有一个开始节点,但可有多个结束节点。

-
在输入输出配置面板,配置剧本输入和输出参数。更多说明,请参见剧本参数(输入输出参数)。
-
-
编排处置流程
这是剧本的核心,需要将代表不同操作的组件拖拽到画布并连接起来。本文以DataFormat组件为例,其他组件参数配置说明请参见流程组件说明。
重要-
开始节点使用event作为节点名称,所以在剧本编排的过程中,不要把组件的名称设置为event。
-
您可根据业务需求选择多个流程组件,并设定各组件上下文联系。
-
选择组件动作
在左侧基础组件中选择DataFormat组件,选择合适的动作例如:joindata、convertToJSON等后,将其拖拽至画布中。
-
配置组件参数
在画布区域单击选择的DataFormat组件,或在基础信息配置页动作配置模块单击
进入参数配置页面。参数配置请参见DataFormat组件。-
支持填写常量、变量参数、系统参数、表达式等,更多信息请参见组件参数及节点执行流程。
-
也可手动填写参数配置,可在输入框节点下拉列表中,选择节点参数后会生成对应的语法。如下图所示:

-
-
-
完成组件配置后,单击左上角菜单栏保存按钮。
警告若不保存,直接退出会丢失已编辑的流程信息。
步骤三:流程调试
剧本设置完成后,需要进行调试以验证流程的正确性,确保流程节点的顺利运行。
-
设置断点(可选):
-
操作说明:为验证复杂流程中的某个特定环节,可以在一个组件上设置断点。调试时,流程将执行到该断点的上游并暂停,方便检查中间结果。
重要-
若流程有多个分支,系统仅调试设置了断点的分支。
-
同一分支设置多个断点时,仅最后一个断点生效。
-
-
操作方法:单击流程节点的
按钮即可将当前节点设置为断点。
-
-
执行调试
-
单击左上角
调试按钮,打开调试参数面板,单击调试按钮。说明根据配置的剧本输入参数类型不同,调试参数配置也不相同。
-
加载参数样例:
-
单击输入样例。
-
在查看输入样例页面,单击加载样例。
-
-
修改参数:根据实际情况修改参数,然后单击确定。
说明为方便修改,系统提供了更直观的可视化模式。
-
-
查看调试结果
可通过单击节点的
按钮或调试区域的执行日志,查看节点详细输入输出数据和执行状态。部分输出参数说明如下:参数名称
说明
datalist
结果预览数据。
重要最多只显示3条预览数据,全量数据请从完整输出结果页签查看。
total_data_successful
执行过程中处理成功的数据量。
total_data
执行过程中处理总数据量。
total_exe_successful
当前动作运行成功的次数。
total_exe
当前动作运行总次数。
total_data_with_dup
执行过程中处理成功后去重后的数据量

步骤四:保存并发布
调试通过后,单击左上角菜单栏发布按钮,将剧本转为正式版。
使用剧本
发布后的剧本才能被自动响应规则、安全事件处理使用。
-
绑定到自动响应规则:此方式用于实现对特定告警的自动化处置。具体操作,请参见自动响应规则。
-
在事件处置中手动执行:对于需要人工研判的复杂安全事件,可以在事件处置中心手动触发剧本,辅助完成处置操作。具体操作,请参见评估及处理Agentic SOC安全事件中的运行剧本。
-
直接运行:在响应规则的预定义剧本和自定义剧本页签,单击目标剧本操作列的运行,执行一次剧本流程。
其他操作
剧本回滚
若已发布的剧本恢复至历史版本,可选择回滚操作。操作步骤如下:
-
在自定义剧本页签,找到需要回滚的剧本。单击操作列详情按钮,在详情页基本信息页签发布历史区域,查看剧本发布的历史版本。
-
运行测试(可选):选择需要回滚的版本,单击操作列查看按钮,跳转至剧本页签。在输入参数(运行)区域完成回滚版本的运行测试。
-
选择需要回滚的版本,单击操作列回滚到编辑或回滚并发布。
-
回滚并发布:将当前版本覆盖到编辑页面的草稿版,并发布上线。
-
回滚到编辑:将当前版本覆盖到编辑页面的草稿版。
-
使用正式版回滚后,可能会覆盖已保存的草稿版。回滚前,务必详细评估版本间的流程差异。
剧本导入
仅支持导入JSON文件。
-
在流程编辑器菜单栏,单击更多,并单击下拉列表导入JSON。
-
在导入页面,上传导入JSON文件后单击确定

查看剧本执行记录
在剧本列表,单击剧本ID或操作列详情,进入剧本详情页面。在历史执行记录可查看基本执行记录。
当采用剧本方式处理事件或安全告警时,系统将自动生成一条对应的剧本执行记录。
修改剧本名称
在剧本列表,单击剧本ID或操作列详情,进入剧本详情页面。在基础信息单击剧本名称旁边的编辑按钮。
-
预定义剧本不可修改剧本名称。
-
请保持剧本名称唯一。
剧本执行/调试常见错误码
错误码分为剧本编排过程中的错误码和组件执行过程中的错误码。
剧本编排相关的错误码
|
错误信息 |
说明 |
排查及解决思路 |
|
The filter condition for node [%s] is invalid. It must include data from the datalist of node [%s]. |
filter节点的条件判断配置不正确,必须包含要过滤的节点数据。 |
对某个节点的数据过滤时,保证过滤条件中包含节点的数据变量及对应的条件。 |
|
Start node has no downstream configuration. |
开始节点未定义下游节点。 |
定义开始节点的下游节点。 |
|
The node [nodeName] has no downstream nodes defined. |
普通节点未定义下游节点。 |
定义普通节点的下游节点。 |
|
节点[node]中的资产不存在! |
配置了资源实例,但是资源实例不存在。 |
重新选择存在的资源实例。 |
|
节点[node]中的资产是必需的,但没有配置 |
未配置资源实例。 |
选择资源实例配置。 |
|
多个节点具有相同的名字 [nodeName] |
节点名称重复。 |
查找重复的节点名,修改后保证各个节点名称唯一 |
|
节点 [node1] 中定义的路径 [path] 不合法, 因为子流程仅支持格式 ${<subTask>.curLoop} and ${<subTask>.curIndex}! |
子流程中,使用子流程的名称获取的变量格式不正确。目前子流程中只支持${<subTask>.curLoop}和${<subTask>.curIndex}。 |
查看子流程中参数的变量定义,修改不正确的变量定义。 |
|
节点 [node1] 中定义的路径 [node2.path] 不合法, 因为节点 [node2] 不存在! |
某个节点的参数中,变量所引用的节点不存在。 |
引用节点不存在或被删除,需要重新进行变量配置或者新增不存在的节点。 |
|
节点 [node1] 中定义的路径 [node2.path] 不合法, 因为节点 [node2] 不是当前节点的上游节点! |
某个节点的参数中,变量所引用的节点存在,但是不是自己的前置节点。 |
引用前置节点的变量。 |
组件执行过程相关的错误码
|
错误码errCode |
报错信息errMsg |
排查思路 |
|
sophon.Internal.Error |
系统内部错误。 |
请校验参数或者资产配置,详情请查看报错或联系技术支持人员。 |
|
component.Internal.ParamError |
组件参数错误。 |
请校验组件配置的参数是否正确。 |
|
component.Abnormal.InvokeError |
组件执行错误。 |
组件内部执行报错,详情请查看报错信息或联系技术支持人员。 |
|
filter.Abnormal.Fail |
数据没有满足过滤条件,请校验过滤条件设置是否正确。 |
数据没有满足过滤条件,请校验过滤条件设置是否正确。 |
|
securityGroup.Internal.HostIsOutside |
Hosts outside the cloud cannot use security groups to block ip (云外主机不能使用安全组来封禁IP)。 |
请校验封禁的主机是否非云外主机。 |
|
securityGroup.Internal.NumberExceedLimit |
The number of security groups or security group rules exceeds the limit(安全组数量或者安全组规则数量超限制)。 |
请检验主机关联的安全组数量或者安全组规则数量是否超额。 |
|
sts_openapi.Internal.ParamError |
ParamError : The parameters of your request are invalid(有无效的参数)。 |
请校验组件的实际输入参数是否正确。 |
|
sts_openapi.Internal.WafRuleError |
VerifyRuleCountExceed : The number of rules exceeds the limit(规则数量超限额)。 |
WAF的自定义规则数量超出限制。 |
|
sts_openapi.Internal.DefenseTemplateNotExist |
Defense.Control.DefenseTemplateNotExist : Protective template does not exist(规则的模板不存在) |
WAF的模板不存在,请确认是否有误删除WAF模板的情况。 |
|
sts_openapi.Internal.DefenseTemplateBindUnbindResourceInvalid |
Defense.Control.DefenseTemplateBindUnbindResourceInvalid(模板要绑定的资源不可用)。 |
WAF模板绑定资源失败,请确认相关资源是否可用。 |
|
sts_openapi.Internal.DefenseResourceRelationExist |
Defense.Control.DefenseResourceRelationExist(模板要绑定的资源已被其他模板绑定)。 |
WAF模板要绑定资源失败,请确认相关资源是否已绑定其他的模板。 |
|
sts_openapi.Info.DefenseSceneNotSupported |
Defense.Control.DefenseSceneNotSupported : This protection scenario is not supported(不支持保护该场景)。 |
WAF版本比较低,不支持自定义规则的功能。 |
|
sts_openapi.Internal.ErrorAddressGroupExist |
ErrorAddressGroupExist : The address group already exists(要新建的地址薄已存在)。 |
云防火墙的地址簿名字冲突。 |
|
sts_openapi.Internal.PermissionError |
NoPermission : caller has no permission(用户没有权限)。 |
用户没有权限修改相关资源。 |
|
sts_openapi.Internal.CFWRuleError |
acl or expand acl count exceed(规则数量超限额)。 |
云防火墙的规则数量超出限额。 |
|
sts_openapi.Internal.InvalidSecurityGroupId |
InvalidSecurityGroupId.NotFound : The specified SecurityGroupId does not exist(安全组不存在)。 |
安全组不存在,请确认是否有被误删除的安全组。 |
|
sts_openapi.Internal.ErrorParametersGroupAddress |
ErrorParametersGroupAddress : The IP address of the address group is invalid(IP地址簿不可用)。 |
当前的IP地址簿不可用。 |
|
sts_openapi.Internal.notBuyUser |
not buy user(用户没有购买该产品)。 |
用户没有购买云防火墙产品。 |
|
sts_openapi.Internal.Throttling |
有throttling或Throttling关键字(接口限流)。 |
云产品的OpenAPI接口被限流。 |
|
python.Info.aegis2 |
进程不存在。 |
进程不存在。 |
|
python.Internal.aegis3 |
进程Pid和Path不匹配。 |
进程Pid和Path不匹配。 |
|
python.Internal.aegis4 |
进程权限拒绝。 |
没有权限处置该进程。 |
|
python.Info.aegis5 |
文件不存在。 |
要处置的文件不存在。 |
|
python.Internal.aegis6 |
文件MD5不一致。 |
要处置的文件的入参MD5与实际MD5不一致。 |
|
python.Internal.aegis7 |
文件权限拒绝。 |
没有权限处置该文件。 |
|
python.Internal.aegis8 |
目标文件存在且MD5不一致。 |
目标文件存在且MD5不一致。 |
|
python.Internal.aegis9 |
备份文件不存在。 |
要处置文件的备份文件不存在。 |
|
python.Internal.aegis10 |
没有查到隔离记录。 |
未找到相关的文件隔离记录。 |
|
python.Internal.aegis11 |
不允许结束/隔离AliYunDun进程。 |
不允许结束/隔离AliYunDun进程。 |
|
python.Internal.aegis91 |
主机信息不存在。 |
主机信息不存在。 |
|
python.External.Fail |
python脚本报错。 |
python脚本执行报错,详情请查看报错信息或联系技术支持人员。 |
|
python.External.Data |
python组件输入格式报错。 |
python组件输入格式报错,详情请查看报错信息或联系技术支持人员。 |



调试按钮,打开调试参数面板,单击调试按钮。
按钮或调试区域的执行日志,查看节点详细输入输出数据和执行状态。部分输出参数说明如下: