劇本是指預先定義好的邏輯流程或指令碼,用於對安全事件進行識別、分類、判斷和響應。劇本包括一系列步驟,用於執行特定的操作,以確定是否存在安全威脅,如何響應和緩解威脅。劇本可以根據不同的安全事件類型和層級進行定製和配置,以適應不同的安全需求。通過使用劇本,響應編排可以協助您提高安全響應的效率和一致性。
核心概念
劇本類型
Security Center提供兩種類型的劇本:
預定義劇本:Security Center結合常見的安全威脅情境及解決方案,內建了一批劇本,無需配置您可直接使用。同時可複製預定義劇本另存新檔您的自訂劇本,並在此基礎上根據實際情況進行調整修改,降低自訂劇本的配置難度。
自訂劇本:在面臨複雜、個人化程度較高的安全威脅情境時,Security Center提供了靈活性的自訂劇本。您可藉助流程編輯器對各類組件進行自由配置,輕鬆實現自動化的安全處理方案。
劇本參數(輸入輸出參數)
輸入參數:即配置觸發劇本的條件。選擇不同的條件,在調試時參數範例會隨之變化。
輸出參數:定義劇本執行結束後,輸出的欄位,可供後續節點使用,也可通過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(要建立的地址薄已存在)。 | Cloud Firewall的地址簿名字衝突。 |
sts_openapi.Internal.PermissionError | NoPermission : caller has no permission(使用者沒有許可權)。 | 使用者沒有許可權修改相關資源。 |
sts_openapi.Internal.CFWRuleError | acl or expand acl count exceed(規則數量超限額)。 | Cloud Firewall的規則數量超出限額。 |
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(使用者沒有購買該產品)。 | 使用者沒有購買Cloud Firewall產品。 |
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組件輸入格式報錯,詳情請查看報錯資訊或聯絡技術支援人員。 |