剧本配置使用指南

剧本是指预先定义好的逻辑流程或脚本,用于对安全事件进行识别、分类、判断和响应。剧本包括一系列步骤,用于执行特定的操作,以确定是否存在安全威胁,如何响应和缓解威胁。剧本可以根据不同的安全事件类型和级别进行定制和配置,以适应不同的安全需求。通过使用剧本,响应编排可以帮助您提高安全响应的效率和一致性。

核心概念

剧本类型

云安全中心提供两种类型的剧本:

  • 预定义剧本:云安全中心结合常见的安全威胁场景及解决方案,内置了一批剧本,无需配置您可直接使用。同时可复制预定义剧本另存为您的自定义剧本,并在此基础上根据实际情况进行调整修改,降低自定义剧本的配置难度。

  • 自定义剧本:在面临复杂、个性化程度较高的安全威胁场景时,云安全中心提供了灵活性的自定义剧本。您可借助流程编辑器对各类组件进行自由配置,轻松实现自动化的安全处理方案。

剧本参数(输入输出参数)

  • 输入参数:即配置触发剧本的条件。选择不同的条件,在调试时参数样例会随之变化。

  • 输出参数:定义剧本执行结束后,输出的字段,可供后续节点使用,也可通过setOutput动作提供给被其他剧本引用。语法格式:${event.参数路径}。

    说明

    除自定义的输出参数外,还提供默认的系统参数,请参见剧本中的系统参数

自定义剧本配置流程图

image

流程编辑器简介

剧本流程通过可视化流程编辑器完成创建、修改、调试及发布,以下为流程编辑器的主要信息:

剧本编辑

序号

说明

1-菜单栏

  • 保存:在画布中编辑剧本后,单击保存,将当前的剧本保存为草稿版

    重要
    • 若不保存,直接退出会丢失已编辑的流程信息。

    • 草稿版为短期状态,使用正式版回滚后,可能会覆盖已保存的草稿版。如果需要将剧本持久化保存,请单击保存并发布

  • 发布:将剧本发布为正式版,可以在剧本的详情页面查看剧本的版本信息。

    说明

    发布后的剧本才可在自动响应规则事件处置中使用。

  • 调试:在页面下方的调试区域输入参数,可调试当前剧本能否正常运行,帮助您及时调整流程配置。

    断点调试:在画布编辑组件时,您可以选中组件后单击断点调试图标,为该组件添加断点,此时运行调试时,系统仅执行至该节点的上游节点。

  • 检测:检查剧本流程是否异常,仅当检测无异常时才可发布剧本。

  • 查看线上:查看当前剧本最新发布的正式版。

  • 更多:可进行保存为JSON、导入JSON、保存为图片、撤销、删除等操作。

2-流程节点

与外部无关,每个流程都需要的基础组件。每个流程必须有一个开始节点作为起始点,可以有多个结束节点。更多说明,请参见系统组件

3-组件动作和剧本

  • 组件

    • 基础组件:包含IT类通用组件,例如写入数据库、向SLS写入数据、调用Python 3.0进行脚本处理等。

      说明

      Python 3.0代码运行在归属于当前阿里云账号的内置的Python3.9 版本的容器环境中,容器0.25vCPU、内存256MB,脚本最大执行时长为600s。

    • 安全组件:直接处理安全威胁的组件,例如安骑士结束进程、阿里云防火墙封禁组件等。

    • 云产品组件:调用阿里云产品OpenAPI和查询威胁情报的组件,更多说明,请参见云产品组件(OpenAPI)AliyunThreatIntelligence组件

    • 云外组件:调用非阿里云产品OpenAPI(如腾讯云和华为云的Web应用防火墙)组件,更多说明,请参见云外组件(OpenAPI)

  • 剧本

    • 自定义剧本:包含当前账号创建的所有自定义剧本。

    • 预定义剧本:包含所有系统预置的预定义剧本。

4-画布区域

画布区域,您可以将需要添加的组件拖动至画布区域,在画布中根据组件之间的逻辑关系进行连接。

  • 在画布区域双击开始节点(开始节点图标),可设置开始节点的基本信息以及流程的输入方式和触发方式。

  • 在画布区域双击基础编排组件或安全处置组件节点,可设置组件的基本信息、执行条件、执行动作等信息。

  • 在画布区域双击结束节点(结束节点图标),可设置结束节点的基本信息。

5-调试区域

单击调试或者右下角的展开图标,展开调试区域,可调试剧本能否正常运行。

  • 调试参数:在该页签下,输入调试参数,然后单击调试

    调试参数仅支持标准JSON格式。您可以单击输入参数向导,查看输入的参数示例。

  • 执行日志:运行剧本后,可单击执行日志,查看剧本的运行结果、详情等信息。

  • 历史调试记录:查看历史调试记录。

自定义剧本配置步骤

步骤一:创建剧本基本信息

  1. 登录云安全中心控制台

  2. 在左侧导航栏,选择Agentic SOC > 响应编排。在控制台左上角,选择需防护资产所在的区域:中国内地非中国内地

  3. 自定义剧本页签,单击新增剧本

  4. 新增剧本面板,填写剧本名称剧本描述,单击确定

说明

也可在预定义剧本页签,选择合适的剧本单击操作列复制,将预定义剧本复制为一个新的自定义剧本。

步骤二:配置剧本流程

  1. 按步骤一创建剧本基本信息完毕后,会自动跳转至剧本流程配置页面。也可从自定义剧本列表页,单击操作列编辑按钮,进入配置页面。

  2. 配置剧本输入输出参数

    1. 剧本编辑页面,单击右上角的设置,在配置面板,单击输入输出配置

      说明

      每个流程必须要有开始和结束节点,每个流程只能有一个开始节点,但可有多个结束节点。

      image

    2. 输入输出配置面板,配置剧本输入和输出参数。更多说明,请参见剧本参数(输入输出参数)

  3. 编排处置流程

    这是剧本的核心,需要将代表不同操作的组件拖拽到画布并连接起来。本文以DataFormat组件为例,其他组件参数配置说明请参见流程组件说明

    重要
    • 开始节点使用event作为节点名称,所以在剧本编排的过程中,不要把组件的名称设置为event。

    • 您可根据业务需求选择多个流程组件,并设定各组件上下文联系。

    1. 选择组件动作

      在左侧基础组件中选择DataFormat组件,选择合适的动作例如:joindata、convertToJSON等后,将其拖拽至画布中。

    2. 配置组件参数

      在画布区域单击选择的DataFormat组件,或在基础信息配置页动作配置模块单击image进入参数配置页面。参数配置请参见DataFormat组件

      • 支持填写常量、变量参数、系统参数、表达式等,更多信息请参见组件参数及节点执行流程

      • 也可手动填写参数配置,可在输入框节点下拉列表中,选择节点参数后会生成对应的语法。如下图所示:

        image

  4. 完成组件配置后,单击左上角菜单栏保存按钮。

    警告

    若不保存,直接退出会丢失已编辑的流程信息。

步骤三:流程调试

剧本设置完成后,需要进行调试以验证流程的正确性,确保流程节点的顺利运行。

  1. 设置断点(可选)

    • 操作说明:为验证复杂流程中的某个特定环节,可以在一个组件上设置断点。调试时,流程将执行到该断点的上游并暂停,方便检查中间结果。

      重要
      • 若流程有多个分支,系统仅调试设置了断点的分支。

      • 同一分支设置多个断点时,仅最后一个断点生效。

    • 操作方法:单击流程节点的image按钮即可将当前节点设置为断点。

      image

  2. 执行调试

    1. 单击左上角image调试按钮,打开调试参数面板,单击调试按钮。

      说明

      根据配置的剧本输入参数类型不同,调试参数配置也不相同。

    2. 加载参数样例

      1. 单击输入样例

      2. 查看输入样例页面,单击加载样例

    3. 修改参数:根据实际情况修改参数,然后单击确定

      说明

      为方便修改,系统提供了更直观的可视化模式

  3. 查看调试结果

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

    参数名称

    说明

    datalist

    结果预览数据。

    重要

    最多只显示3条预览数据,全量数据请从完整输出结果页签查看。

    total_data_successful

    执行过程中处理成功的数据量。

    total_data

    执行过程中处理总数据量。

    total_exe_successful

    当前动作运行成功的次数。

    total_exe

    当前动作运行总次数。

    total_data_with_dup

    执行过程中处理成功后去重后的数据量

    image

步骤四:保存并发布

调试通过后,单击左上角菜单栏发布按钮,将剧本转为正式版。

使用剧本

发布后的剧本才能被自动响应规则、安全事件处理使用。

重要

剧本被触发执行后,可在处置中心查看对应生成的处置策略和处置任务,或在剧本详情页查看剧本执行记录

  • 绑定到自动响应规则:此方式用于实现对特定告警的自动化处置。具体操作,请参见自动响应规则

  • 在事件处置中手动执行:对于需要人工研判的复杂安全事件,可以在事件处置中心手动触发剧本,辅助完成处置操作。具体操作,请参见评估及处理CTDR安全事件中的运行剧本

  • 直接运行:响应编排预定义剧本自定义剧本页签,单击目标剧本操作列的运行,执行一次剧本流程。

其他操作

剧本回滚

若已发布的剧本恢复至历史版本,可选择回滚操作。操作步骤如下:

  1. 自定义剧本页签,找到需要回滚的剧本。单击操作列详情按钮,在详情页基本信息页签发布历史区域,查看剧本发布的历史版本。

  2. 运行测试(可选):选择需要回滚的版本,单击操作列查看按钮,跳转至剧本页签。在输入参数(运行)区域完成回滚版本的运行测试。

  3. 选择需要回滚的版本,单击操作列回滚到编辑回滚并发布

    • 回滚并发布:将当前版本覆盖到编辑页面的草稿版,并发布上线。

    • 回滚到编辑:将当前版本覆盖到编辑页面的草稿版。

警告

使用正式版回滚后,可能会覆盖已保存的草稿版。回滚前,务必详细评估版本间的流程差异。

剧本导入

说明

仅支持导入JSON文件。

  1. 在流程编辑器菜单栏,单击更多,并单击下拉列表导入JSON。

  2. 在导入页面,上传导入JSON文件后单击确定。

image

查看剧本执行记录

在剧本列表,单击剧本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

throttlingThrottling关键字(接口限流)。

云产品的OpenAPI接口被限流。

python.Info.aegis2

进程不存在。

进程不存在。

python.Internal.aegis3

进程PidPath不匹配。

进程PidPath不匹配。

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组件输入格式报错,详情请查看报错信息或联系技术支持人员。