全部產品
Search
文件中心

:解析函數說明

更新時間:Nov 21, 2024

威脅分析與響應CTDR(Cloud Threat Detection and Response)支援在Security Center控制台接入安全廠商日誌並進行統一的風險管理。解析函數是指對採集到的安全廠商日誌欄位(儲存在CTDR專屬Logstore)進行標準化處理的具體規則。本文介紹CTDR支援的解析函數及其說明,以協助您完成日誌解析規則設定。

解析函數類型說明

解析函數類型

說明

直接映射

是指對原始欄位的值不作任何處理直接映射到目標欄位。

例如把A欄位的值直接映射到B欄位。

常量映射

是指沒有原始欄位,把常量直接賦值給目標欄位。

例如將“abc”賦值給B欄位。

字典映射

是指對於一些安全廠商日誌的固定欄位,按照字典規則把對應欄位的值對應到CTDR標準欄位對應的值。

例如CTDR的標準欄位alert_level取值有1(資訊)、2(低)、3(中)、4(高)、5(嚴重),您需要在字典裡,把安全廠商日誌對應欄位的值對應到CTDR的警示等級alert_level裡,可構建如下映射表:

  • othernoneunknown--> 1(資訊);

  • low--> 2(低);

  • medium--> 3(中);

  • high--> 4(高)。

配置好字典映射規則後,就可以完成安全廠商日誌警示等級的標準化。

函數映射

是指將一個原始欄位經過函數處理,把處理後的值對應到目標欄位上。

函數映射支援的函數

函數名

文法

函數用途

入參說明

範例

JSON_VALUE

JSON_VALUE(content, path)

從JSON對象中擷取資料,支援多層擷取。

  • content:VARCHAR類型,指定需要解析的JSON對象,使用字串表示。字串不包含"$"、"[]"、"*"、"."。

  • path:VARCHAR類型,解析JSON的路徑運算式。

JSON_VALUE(json, '$.passenger_name')

LOWER

LOWER(A)

返迴轉換為小寫字元的字串。

A:VARCHAR類型。

LOWER(var1)

UPPER

UPPER(A)

返迴轉換為大寫字元的字串。

A:VARCHAR類型。

UPPER(var1)

SUBSTRING

  • SUBSTRING(a, start)

  • SUBSTRING(a, start, len)

擷取字串的子串,從指定位置start開始截取。如果提供了長度len,則截取該長度的子串;若未指定len,則截取至字串末尾。參數start從1開始計數,當start為0時視為1;若start為負數,則表示從字串末尾向前計算的位置。

  • a:VARCHAR類型,指定的字串。

  • len:INT類型,截取的長度。

  • start:INT類型,截取從字串a開始的位置。

  • SUBSTRING(str, 2)

  • SUBSTRING(str, -2, 1)

KEYVALUE

KEYVALUE( str, split1, split2, key_name)

該函數用於解析字串str中的索引值對。解析過程基於兩個分隔字元:

  • split1用於分隔不同的索引值對。

  • split2用於分隔每個索引值對中的鍵(key)和值(value)。

通過指定key_name可以擷取對應的值。如果key_name在字串中不存在或出現異常情況,則返回NULL

  • str:VARCHAR類型,待解析的字串。

  • split1:VARCHAR類型,索引值對的分隔字元。當split1為null時,表示按照whitespace作為kv對的分割符;當split1的長度>1,split1僅表示分隔字元的集合,每個字元都表示一個有效分隔字元。

  • split2:VARCHAR類型,鍵和值的分隔字元。

    • 當split2為null,表示按照whitespace(空白字元)作為鍵和值的分隔字元;

    • 當split2的長度大於1,split2僅表示分隔字元的集合,每個字元都表示一個有效分隔字元。

  • key_name:VARCHAR類型,鍵的名稱。

KEYVALUE(str, split1, split2, key1)

REGEXP_EXTRACT

REGEXP_EXTRACT( str, pattern, index)

根據給定的Regex模式pattern從字串str中抽取第index個(從1開始計數)匹配的子字串。如果輸入參數為空白或提供的Regex無效,則返回null

  • str:VARCHAR類型,待解析的字串。

  • pattern:VARCHAR類型,Regex。

  • index:INT類型,指定返回第幾個被匹配的字串。

說明

在編寫Regex時,請遵循Java的文法規範。因為這些Regex將直接被轉換為Java代碼中的字串常量。

例如,如果你想匹配一個數字,在SQL中應該寫作'\d'而不是\d

這種寫法確保了當運算式被編譯成Java代碼時,能夠正確地識別並處理該Regex。簡而言之,您需要以Java程式設計語言中定義正則的方式來進行書寫,即使是在SQL環境中。更多資訊,請參見Java Pattern

REGEXP_EXTRACT(str1, 'foo(.*?)(bar)', 1)

DATE_FORMAT

DATE_FORMAT(TIMESTAMP time, VARCHAR to_format)

將字串類型的日期從原格式轉換至目標格式。

  • 第一個參數為源字串;

  • 第二個參數from_format可選,為原字串的格式,預設為yyyy-MM-dd HH:mm:ss;

  • 第三個參數為返回日期的格式,傳回值為轉換格式後的字串類型日期,若有參數為null或解析錯誤,返回null

  • date:VARCHAR類型日期,預設日期格式:yyyy-MM-dd HH:mm:ss。

  • time:TIMESTAMP類型的日期。

  • from_format:指定輸入日期格式。

  • to_format:指定輸出日期格式。

DATE_FORMAT(datetime1, 'yyMMdd')

FROM_UNIXTIME

FROM_UNIXTIME(BIGINT unixtime, VARCHAR format)

將給定的Unix時間戳記(以秒或毫秒為單位)轉換成可讀性更強的日期時間格式。該函數接收兩個參數:

  • unixtime:長整型時間戳記,單位為秒;

  • format:選擇性參數,指定日期格式的字串,預設為yyyy-MM-dd HH:mm: ss

該函數返回一個VARCHAR類型的字串,表示按照給定格式或預設格式轉換後的日期時間。如果unixtimeformat任一為null,或者在格式化過程中發生錯誤,則返回null

  • unixtime:BIGINT類型,表示以秒為單位的Unix時間戳記。僅接受標準Unix時間格式的數值輸入;對於非整數或不符合格式的資料,系統將拋出異常。

  • format:VARCHAR類型,指定輸出日期格式。

FROM_UNIXTIME(unixtime1, 'MMdd-yyyy')

UNIX_TIMESTAMP

UNIX_TIMESTAMP(VARCHAR date, VARCHAR format)

該函數用於將給定的日期時間字串轉換為Unix時間戳記(單位:秒)。支援兩個選擇性參數:

  • 第一個參數是待轉換的日期時間字串。

  • 第二個參數是指定的日期時間格式,預設為yyyy-MM-dd HH:mm:ss。

傳回值是第一個參數轉換成的長整型的時間戳記,單位為秒。如果不提供任何參數,則預設返回目前時間的時間戳記(與NOW()函數功能相同)。如果有參數為null或解析錯誤,返回null

  • timestamp:TIMESTAMP類型。

  • date:VARCHAR類型日期,表示日期或時間的字串。預設日期格式:yyyy-MM-dd HH:mm:ss。

  • format:VARCHAR類型,定義了date參數中日期時間字串的具體格式。

UNIX_TIMESTAMP('2024-11-19', 'yyyy-MM-dd')

SPLIT_INDEX

SPLIT_INDEX(str, sep, index)

以sep作為分隔字元,將字串str分隔成若干段,取其中的第index段,取不到返回null,index從0開始計數。任一參數為null,返回null

  • str:VARCHAR類型,被分隔的字串。

  • sep:VARCHAR類型,表示用於分隔字串的字元或符號。

  • index:INT類型,用於指定從一系列參數或資料區段中選取的具體位置編號,其中0代表第一個元素或段落。

SPLIT_INDEX(VARCHAR str, VARCHAR sep, INT index)

CONCAT

concat([var], split)

將兩個或多個VARCHAR類型的字串值串連成一個新的字串。如果任一參數為null,則在串連過程中忽略該參數。請注意,所有參與串連的參數必須是VARCHAR類型,不接受INTBIGINT等其他資料類型的輸入。

  • var1:VARCHAR類型,字串值。

  • var2:VARCHAR類型,字串值。

CONCAT(var1, var2, var3)

REGEXP_REPLACE

REGEXP_REPLACE( str, pattern, replacement)

該函數通過使用replacement字串來替換str中所有符合patternRegex的子串,並返回處理後的字串。如果輸入參數為空白或提供的Regex無效,則函數返回null

  • str:VARCHAR類型,要被搜尋和可能被修改的字串。

  • pattern:VARCHAR類型,Regex,用於定義被替換的目標子串。

  • replacement:VARCHAR類型,用於替換的字串。當找到與pattern相匹配的內容時,這部分內容會被replacement所指定的新文本所替換。如果replacement為空白,則匹配到的部分會被刪除。

說明

在編寫Regex時,請遵循Java的文法規範。因為這些Regex將直接被轉換為Java代碼中的字串常量。

例如,如果你想匹配一個數字,在SQL中應該寫作'\d'而不是\d

這種寫法確保了當運算式被編譯成Java代碼時,能夠正確地識別並處理該Regex。簡而言之,您需要以Java程式設計語言中定義正則的方式來進行書寫,即使是在SQL環境中。更多資訊,請參見Java Pattern

REGEXP_REPLACE(str1, '(\d+)', '')

管理映射字典

新增映射字典

  1. 登入Security Center控制台。在控制台左上方,選擇需防護資產所在的地區:中國全球(不含中國)

  2. 在左側導覽列,選擇威脅分析與響應 > 產品接入

  3. 產品接入頁面,單擊頁面右上方的日誌解析規則

  4. 日誌解析規則頁面,單擊頁面右上方的管理映射字典

  5. 映射字典管理面板,單擊新增字典

  6. 建立映射字典面板,配置對應參數並單擊確定

    配置項

    說明

    字典名稱

    輸入字典的名稱。

    目標標准欄位

    在下拉式清單中選擇字典生效的目標標準欄位。

    備忘

    輸入字典的備忘資訊。

    設定映射關係

    設定原始欄位值和目標標準欄位值的映射關係。您可以單擊添加映射關係,添加多條映射關係。

編輯映射字典

編輯映射字典後,對已使用該字典的規則無影響。如果您修改了規則,規則會自動拉取最新的字典資訊,所以只有修改規則後該規則中引用的字典內容才會發生變化。

  1. 登入Security Center控制台。在控制台左上方,選擇需防護資產所在的地區:中國全球(不含中國)

  2. 在左側導覽列,選擇威脅分析與響應 > 產品接入

  3. 產品接入頁面,單擊頁面右上方的日誌解析規則

  4. 日誌解析規則頁面,單擊頁面右上方的管理映射字典

  5. 單擊目標字典操作列的編輯

  6. 編輯映射字典面板,修改映射字典的內容,並單擊確定

刪除映射字典

刪除映射字典後,對已使用該字典的規則無影響。

  1. 登入Security Center控制台。在控制台左上方,選擇需防護資產所在的地區:中國全球(不含中國)

  2. 在左側導覽列,選擇威脅分析與響應 > 產品接入

  3. 產品接入頁面,單擊頁面右上方的日誌解析規則

  4. 日誌解析規則頁面,單擊頁面右上方的管理映射字典

  5. 單擊目標字典操作列的刪除

  6. 刪除提示對話方塊中單擊確定