全部產品
Search
文件中心

ActionTrail:建立自訂警示規則

更新時間:Dec 27, 2024

您可以通過建立自訂警示規則,配置需要監控的事件,從而更加靈活地進行企業安全監控。Action Trail會根據您添加的查詢統計、定義的檢查頻率、觸發條件等配置產生警示,並根據您所選擇的警示策略和行動策略進行警示降噪和通知。本文為您介紹如何建立自訂警示規則、不同情境的自訂警示語句和自訂警示樣本。

背景資訊

自訂警示規則使用SQL(Structured Query Language)文法篩選事件。關於SQL文法的更多資訊,請參見查詢概述分析概述

操作步驟

  1. 登入Action Trail控制台

  2. 在左側導覽列,單擊事件告警

  3. 警示中心頁面的警示規則頁簽,單擊建立警示

  4. 建立警示面板,添加查詢統計。

    1. 單擊查詢統計右側的添加

    2. 查詢統計對話方塊的進階配置頁簽,選擇類型日誌庫授權方式預設

      說明

      地區專案將自動填入,與啟用事件警示的跟蹤相同,無需手動設定。

    3. 選擇跟蹤投遞的日誌庫(日誌庫名稱格式為actiontrail_<跟蹤名稱>

    4. 選擇是否開啟獨享SQL。

      說明
      • 自動:預設不使用獨享SQL。當遇到查詢並發限制或者查詢結果不精確時,自動嘗試使用獨享SQL重新查詢。

      • 啟用:始終使用獨享SQL進行查詢和分析。

      • 關閉:關閉獨享SQL。

      關於開啟獨享SQL的更多資訊,請參見開啟SQL獨享版

    5. 設定查詢區間,並在查詢右側的文字框,輸入自訂警示語句,然後單擊預覽

      關於自訂警示語句的更多資訊,請參見自訂警示語句

    6. 單擊確認

  5. 警示監控規則面板,設定規則名稱檢查頻率分組評估觸發條件添加標籤添加標註恢複通知進階配置輸出目標等參數。

    關於參數的更多資訊,請參見警示監控規則參數

  6. 單擊確定

    建立自訂警示規則成功後,警示規則列表中顯示新建立的警示規則,您可以根據需求管理警示規則。具體操作,請參見管理警示規則

自訂警示語句

情境

說明

自訂警示語句

篩選雲端服務和事件

通過指定雲端服務名稱(serviceName)和事件名稱(eventName),對特定雲端服務和事件進行警示。

  • 指定單個服務的單個事件。例如:指定Elastic Compute Service的建立執行個體事件。

    serviceName: Ecs and eventName: RunInstances

  • 指定單個服務的多個事件。例如:指定雲資料庫RDS的釋放執行個體事件。

    event.serviceName: RDS and (event.eventName: DeleteDBInstance or event.eventName: Release or event.eventName: DestroyDBInstance)

  • 指定多個服務的多個事件。例如:指定資源管理(Resource Management)和存取控制RAM的許可權變更事件。

    (event.serviceName: ResourceManager and (event.eventName: AttachPolicy or event.eventName: DetachPolicy )) or (event.serviceName: Ram and (event.eventName: AttachPolicyToUser or event.eventName: AttachPolicyToGroup or event.eventName: AttachPolicyToRole or event.eventName: DetachPolicyFromUser or event.eventName: DetachPolicyFromGroup or event.eventName: DetachPolicyFromRole))

擷取和指定參數

事件參數以JSON格式儲存在event.requestParameterJson參數中,Action Trail可以針對事件參數的具體取值進行警示。

  • 擷取Elastic Compute Service修改執行個體屬性中執行個體釋放保護屬性為false的事件。

    event.serviceName: Ecs and event.eventName: ModifyInstanceAttribute | SELECT * FROM (SELECT cast(json_extract("event.requestParameterJson", '$.DeletionProtection') as varchar) as deletion_protection FROM log) WHERE deletion_protection = 'false'

  • 擷取雲資料庫RDS將白名單設定為0.0.0.0的事件。

    event.serviceName: Rds and event.eventName: ModifySecurityIps | SELECT * FROM (SELECT cast(json_extract("event.requestParameterJson", '$.SecurityIps') as varchar) as security_ips FROM log) WHERE security_ips like '%0.0.0.0%'

擷取資源

通過指定事件的相關資源名稱(resourceName)和事件的相關資源類型(resourceType),擷取事件的資源。

關於參數的更多資訊,請參見管控事件結構定義

擷取單個資源。例如:擷取Elastic Compute Service釋放執行個體事件中操作的執行個體ID。

event.serviceName: Ecs and (event.eventName: DeleteInstances or event.eventName: DeleteInstance or event.eventName: Release) | SELECT resourceArray[num] as instance_id FROM (SELECT split("event.resourceName", ';') as resourceArray, array_position(split("event.resourceType", ';'), 'ACS::ECS::Instance') as num FROM log) where num > 0

擷取身份

您可以擷取事件中的身份資訊,對指定身份進行警示。

身份資訊(userIdentity)包含身份類型(type)、身份名稱(userName)、身份ID(principalId)、阿里雲帳號ID(accountId)等多個參數。關於參數的更多資訊,請參見管控事件結構定義

  • 擷取身份類型。

    * | SELECT "event.userIdentity.type" as user_type

  • 擷取身份名稱。

    * | SELECT "event.userIdentity.userName" as user_name

  • 擷取身份ID。

    * | SELECT "event.userIdentity.principalId" as principal_id

  • 擷取阿里雲帳號ID。

    * | SELECT "event.userIdentity.accountId" as account_id

統計數量

您可以統計事件發生次數,超過指定次數時進行警示。

  • ECS執行個體重啟次數過多警示。例如:ECS執行個體重啟次數超過2次進行警示。

    event.serviceName: Ecs and (event.eventName: RebootInstances or event.eventName: RebootInstance) | SELECT account_id, resourceArray[num] as instance_id, count(*) as cnt FROM ( SELECT "event.userIdentity.accountId" as account_id, split("event.resourceName", ';') as resourceArray, array_position(split("event.resourceType", ';'), 'ACS::ECS::Instance') as num FROM log) where num > 0 group by account_id, instance_id

  • 帳號登入錯誤次數過多警示。例如:登入錯誤次數超過2次進行警示。

    event.eventName: ConsoleSignin and event.userIdentity.type: ram-user and not event.errorMessage: success | select "event.userIdentity.principalId" as user_id, "event.userIdentity.userName" as user_name, count(1) as cnt group by user_id, user_name

自訂警示樣本

arbitrary函數用於返回x中任意一個非空的值,文法為:arbitrary(x)。關於arbitrary函數的更多資訊,請參見arbitrary函數。以下為您介紹兩個使用arbitrary函數的自訂警示樣本:

  • 樣本一:RDS執行個體釋放警示

    event.serviceName: RDS and (event.eventName: DeleteDBInstance or event.eventName: Release or event.eventName: DestroyDBInstance) | SELECT account_id, resourceArray[num] as instance_id, ram_user_id, user_type, user_name FROM (SELECT "event.userIdentity.accountId" as account_id, "event.userIdentity.principalId" as ram_user_id, split("event.resourceName", ';') as resourceArray, array_position(split("event.resourceType", ';'), 'ACS::RDS::DBInstance') as num, "event.userIdentity.type" as user_type, "event.userIdentity.userName" as user_name FROM log ) where num > 0

  • 樣本二:安全性群組配置變更警示

    event.eventName: CreateSecurityGroup OR event.eventName: AuthorizeSecurityGroup OR event.eventName: AuthorizeSecurityGroupEgress OR event.eventName: RevokeSecurityGroup OR event.eventName: RevokeSecurityGroupEgress OR event.eventName: JoinSecurityGroup OR event.eventName: LeaveSecurityGroup OR event.eventName: DeleteSecurityGroup OR event.eventName: ModifySecurityGroupPolicy) | select "event.userIdentity.accountId" as account_id, "event.userIdentity.principalId" as ram_user_id, "event.eventName" as event_name, arbitrary("event.userIdentity.type") as user_type, arbitrary("event.userIdentity.userName") as user_name group by account_id, ram_user_id, event_name

相關文檔