本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
剧本是指预先定义好的逻辑流程或脚本,用于对安全事件进行识别、分类、判断和响应。剧本包括一系列步骤,用于执行特定的操作,以确定是否存在安全威胁,如何响应和缓解威胁。剧本可以根据不同的安全事件类型和级别进行定制和配置,以适应不同的安全需求。通过使用剧本,响应编排可以帮助您提高安全响应的效率和一致性。
前提条件
已购买威胁分析与响应日志接入流量。具体操作,请参见购买并开通威胁分析与响应。
剧本类型说明
云安全中心提供两种类型的剧本:
预定义剧本:云安全中心结合常见的安全威胁场景及解决方案,内置了一批剧本,无需配置您可直接使用。同时可复制预定义剧本另存为您的自定义剧本,并在此基础上根据实际情况进行调整修改,降低自定义剧本的配置难度。
自定义剧本:在面临复杂、个性化程度较高的安全威胁场景时,云安全中心提供了灵活性的自定义剧本。您可借助流程编辑器对各类组件进行自由配置,轻松实现自动化的安全处理方案。
自定义剧本配置流程图
流程编辑器简介
剧本流程通过可视化流程编辑器完成创建、修改、调试及发布,以下为流程编辑器的主要信息:
序号 | 说明 |
1-菜单栏 |
|
2-基础节点 | 与外部无关,每个流程都需要的基础组件。每个流程必须有一个开始节点作为起始点,可以有多个结束节点。 说明 您可以将鼠标移动到节点图标上,查看组件节点的使用介绍。 |
3-组件配置 |
|
4-画布区域 | 画布区域,您可以将需要添加的组件拖动至画布区域,在画布中根据组件之间的逻辑关系进行连接。
|
5-调试区域 | 单击调试或者右下角的
|
自定义剧本配置步骤
步骤一:创建剧本基本信息
登录云安全中心控制台。在控制台左上角,选择需防护资产所在的区域:中国或全球(不含中国)。
在左侧导航栏,选择 。
在自定义剧本页签,单击新增剧本。
在新增剧本面板,填写剧本名称和剧本描述,单击确定。
也可在预定义剧本页签,选择合适的剧本单击操作列复制,将预定义剧本复制为一个新的自定义剧本。
步骤二:配置剧本流程
按步骤一创建剧本基本信息完毕后,会自动跳转至剧本流程配置页面。也可从自定义剧本列表页,单击操作列编辑按钮,进入配置页面。
配置开始节点。
在剧本编辑页面,单击开始节点,在配置面板,单击配置输入输出。
说明每个流程必须要有开始和结束节点,每个流程只能有一个开始节点,但可有多个结束节点。
在配置输入输出面板,配置剧本输入和输出参数,具体信息请参见系统组件。
输入参数:即配置触发剧本的条件。选择不同的条件,在调试时输入参数向导会随之变化。
输出参数:定义剧本执行结束后,输出的字段。可供后续节点使用,也可通过setOutput动作提供给被其他剧本引用。
在2-基础节点、3-组件配置区域选择合适的组件或剧本,并配置相关参数。本文以DataFormat组件为例,其他组件参数配置说明请参见流程组件说明。
重要开始节点使用event作为节点名称,所以在剧本编排的过程中,不要把组件的名称设置为event。
您可根据业务需求选择多个流程组件,并设定各组件上下文联系。
在左侧基础编排组件中选择DataFormat组件,选择合适的动作例如:joindata、convertToJSON等后,将其拖拽至画布中。
在画布区域单击选择的DataFormat组件或在基础信息配置页动作配置模块单击
进入参数配置页面,配置相关参数,参数配置请参见DataFormat组件。
支持填写常量、变量参数、系统参数、表达式等,更多信息请参见组件参数及节点执行流程。
也可手动填写参数配置,也可在输入框节点下拉列表中,选择节点参数生成对应的语法。如下图所示:
完成组件配置后,请及时单击左上角菜单栏保存按钮。
警告若不保存,直接退出会丢失已编辑的流程信息。
步骤三:流程调试
剧本设置完成后,需要进行调试以验证流程的正确性,确保流程节点的顺利运行。推荐进行断点调试即在关键节点设置断点,运行测试时仅执行到断点节点即停止。
若流程中有多个分支,只会调试有断点的分支。
暂不支持多断点调试,若分支上有多个断点,只会执行到最后一个断点。
设置断点(可选)。单击流程节点的
按钮即可将当前节点设置为断点。
单击左上角
调试按钮,并在输入参数(调试)区域填写输入参数。
说明可单击输入参数向导获取参数示例,根据开始节点配置剧本触发条件不同,调试参数配置也不相同,具体信息请参见开始组件说明。
单击输入参数(调试)区域的调试按钮。
查看调试结果。
可通过单击节点的
按钮或调试区域的执行日志,查看节点详细输入输出数据和执行状态。输出参数页签部分参数说明如下:
参数名称
说明
datalist
结果预览数据。
重要最多只显示3条预览数据,全量数据请从完整输出结果页签查看。
total_data_successful
执行过程中处理成功的数据量。
total_data
执行过程中处理总数据量。
total_exe_successful
当前动作运行成功的次数。
total_exe
当前动作运行总次数。
total_data_with_dup
执行过程中处理成功后去重后的数据量
步骤四:保存并发布
调试通过后,单击左上角菜单栏保存并发布按钮,将剧本转为正式版。发布后的剧本才能被自动响应规则、手动安全事件处理使用。
其他操作
剧本回滚
若已发布的剧本恢复至历史版本,可选择回滚操作。操作步骤如下:
在自定义剧本页签,找到需要回滚的剧本。单击操作列详情按钮,在详情页基本信息页签发布历史区域,查看剧本发布的历史版本。
运行测试(可选):选择需要回滚的版本,单击操作列查看按钮,跳转至剧本页签。在输入参数(运行)区域完成回滚版本的运行测试。
选择需要回滚的版本,单击操作列回滚到编辑或回滚并发布。
回滚并发布:将当前版本覆盖到编辑页面的草稿版,并发布上线。
回滚到编辑:将当前版本覆盖到编辑页面的草稿版。
使用正式版回滚后,可能会覆盖已保存的草稿版,请回滚前请先详细查看和评估回滚前后的剧本流程。
剧本导入
仅支持导入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组件输入格式报错,详情请查看报错或联系技术支持人员。 |
相关文档
若您想了解关于组件参数流传及支持的参数格式,请参见组件参数及节点执行流程。
若您想了解关于系统组件参数配置详情,请参见系统组件。