摘要:隨著智慧油氣田建設(shè)的不斷深入,網(wǎng)絡(luò)安全問題日益凸顯。為了解決長慶網(wǎng)絡(luò)安全態(tài)勢感知平臺無法直接提供數(shù)據(jù)接口的問題,采用Python編寫數(shù)據(jù)接口,將部分?jǐn)?shù)據(jù)提取、解析并寫入網(wǎng)絡(luò)安全可視監(jiān)控平臺數(shù)據(jù)庫。通過ChatGPT的智能輔助,進(jìn)行大規(guī)模的代碼修正和優(yōu)化,顯著提高開發(fā)效率和代碼質(zhì)量。值得強(qiáng)調(diào)的是,在這一過程中,ChatGPT在代碼修正和問題解決中發(fā)揮了至關(guān)重要的作用。成功實踐了ChatGPT在代碼修正中的技術(shù)路徑。為智慧油氣田建設(shè)中的網(wǎng)絡(luò)安全保障提供了創(chuàng)新的技術(shù)思路和可靠的解決方案。
關(guān)鍵詞:智慧油氣田建設(shè);網(wǎng)絡(luò)安全;ChatGPT;API數(shù)據(jù)提取
一、前言
隨著數(shù)字化油田發(fā)展和智慧油氣田的大力推進(jìn)[1],包括網(wǎng)絡(luò)安全在內(nèi)的油田六大數(shù)智化業(yè)務(wù)領(lǐng)域出現(xiàn)了大量信息化系統(tǒng)。為實現(xiàn)各項業(yè)務(wù)的集中統(tǒng)一監(jiān)控、智能輔助決策,數(shù)智事業(yè)部建立了數(shù)智事業(yè)部信息資產(chǎn)監(jiān)控平臺(以下簡稱信息資產(chǎn)監(jiān)控平臺)[2]。平臺建立的目的是對數(shù)智事業(yè)部的在線設(shè)備與業(yè)務(wù)服務(wù)實現(xiàn)自動化、智能化的實時監(jiān)控、自動報警、故障信息推送、大屏監(jiān)控等功能,需要與現(xiàn)有的各業(yè)務(wù)系統(tǒng)實現(xiàn)數(shù)據(jù)對接[3]。
長慶油田網(wǎng)絡(luò)安全態(tài)勢感知平臺(以下簡稱感知平臺)是長慶內(nèi)網(wǎng)的安全分析大腦,平臺上所分析研判出的各類網(wǎng)絡(luò)安全相關(guān)數(shù)據(jù),也需要與信息資產(chǎn)監(jiān)控平臺對接進(jìn)行監(jiān)控、展示[4]。由于感知平臺自身安全性及完整性要求,所用的Mongo數(shù)據(jù)庫存在一些保護(hù)措施,即便開啟了通用API接口,相關(guān)安全數(shù)據(jù)也無法主動推送至信息資產(chǎn)監(jiān)控平臺PostgreSQL數(shù)據(jù)庫中,要想展示相關(guān)數(shù)據(jù),只有靠人工錄入的方式,這違背了數(shù)智化發(fā)展的方向,也不符合信息資產(chǎn)監(jiān)控平臺建設(shè)的初衷[5]。如何打破系統(tǒng)間的不可能,讓數(shù)據(jù)對接的自動化、智能化變?yōu)榭赡埽愠闪司W(wǎng)絡(luò)安全中心需要解決的問題[6]。
此外,ChatGPT在Python腳本編寫中的應(yīng)用也越來越廣泛,通過利用ChatGPT編寫和優(yōu)化腳本,可以顯著提高開發(fā)效率和代碼質(zhì)量。例如,ChatGPT可以幫助生成函數(shù)文檔字符串、處理和轉(zhuǎn)換數(shù)據(jù),以及集成API接口等任務(wù)[7],為智慧油氣田建設(shè)中的數(shù)據(jù)自動化傳輸和處理提供了新的技術(shù)手段和方法。
二、設(shè)計思路
以數(shù)字化轉(zhuǎn)型、智能化發(fā)展為指導(dǎo)思想,結(jié)合迎難而上的拼搏理念,以自主學(xué)習(xí)和自主建設(shè)、鍛煉隊伍、培養(yǎng)技術(shù)力量為目的,合理利用ChatGPT等先進(jìn)的技術(shù)手段(向ChatGPT輸入的內(nèi)容全部經(jīng)過脫敏處理),打破感知平臺接口限制,實現(xiàn)數(shù)據(jù)的自動化傳輸。
(一)核心思路
既然無法實現(xiàn)數(shù)據(jù)自動化傳輸,是因為感知平臺Mongo數(shù)據(jù)庫因保護(hù)無法主動推送數(shù)據(jù),且信息資產(chǎn)監(jiān)控平臺FineReport無法主動拉取MongoDB數(shù)據(jù),那么設(shè)想基于通用的API接口和統(tǒng)一的開發(fā)標(biāo)準(zhǔn),建立一個中間PostgreSQL數(shù)據(jù)庫作為“橋梁”,一方面主動拉取感知平臺數(shù)據(jù),一方面主動推送至信息資產(chǎn)監(jiān)控平臺,實現(xiàn)兩個平臺的數(shù)據(jù)對接,如圖1所示。
(二)解決思路
通過其他途徑獲取感知平臺的數(shù)據(jù),并將數(shù)據(jù)解析后寫入PostgreSQL數(shù)據(jù)庫中,以便在FineReport大屏上進(jìn)行展示。因此,需要考慮如何通過感知平臺提供的API接口進(jìn)行部分?jǐn)?shù)據(jù)提取,以及如何將提取解析后的數(shù)據(jù)寫入信息資產(chǎn)監(jiān)控平臺數(shù)據(jù)庫中。
三、實驗設(shè)計
由于專業(yè)領(lǐng)域不同,網(wǎng)絡(luò)安全中心技術(shù)人員對API接口間的調(diào)用方法及流程等相關(guān)知識鮮有涉獵,從頭學(xué)起將無法滿足信息資產(chǎn)監(jiān)控平臺的上線時限,于是使用ChatGPT,詢問相關(guān)技術(shù)關(guān)鍵點,運用到實驗中,再將實驗時的報錯信息,反饋至ChatGPT,尋找解決方法,再運用到實驗中,如此反復(fù),直至運行成功。
(一) 感知平臺數(shù)據(jù)的獲取
在感知平臺無法對外提供數(shù)據(jù)的情況下,依照ChatGPT指導(dǎo),通過平臺提供的API接口進(jìn)行部分?jǐn)?shù)據(jù)提取。具體方案如下:
1.認(rèn)證和token獲取
在ChatGPT編寫API數(shù)據(jù)提取腳本之前,需要進(jìn)行認(rèn)證和token獲取。認(rèn)證通常需要提供用戶名和密碼,而token獲取則需要提供認(rèn)證后獲得的token(token有有效期,到期后將失效,失效后需要重新獲取token值)。這些信息可以通過Python編寫的腳本進(jìn)行自動化獲取。
2.數(shù)據(jù)提取
通過API接口獲取網(wǎng)絡(luò)安全態(tài)勢感知平臺的數(shù)據(jù),包括安全事件、分類、風(fēng)險等級、發(fā)現(xiàn)、分析、研判、下發(fā)處置通報等數(shù)據(jù)。這些數(shù)據(jù)通常以JSON格式呈現(xiàn)。
(二)感知平臺數(shù)據(jù)的解析
數(shù)據(jù)解析:通過Python編寫的腳本對JSON格式的數(shù)據(jù)進(jìn)行解析,將需要的數(shù)據(jù)提取,然后將它們寫入中間的PostgreSQL數(shù)據(jù)庫中。
(三)信息資產(chǎn)監(jiān)控平臺FineReport的數(shù)據(jù)寫入
數(shù)據(jù)庫調(diào)用:使用FineReport的數(shù)據(jù)庫集數(shù)據(jù)調(diào)用功能,將PostgreSQL數(shù)據(jù)庫中的數(shù)據(jù)集成到FineReport大屏中,這樣就可以在FineReport大屏上實時監(jiān)控網(wǎng)絡(luò)安全狀況。整體實驗流程圖如圖2所示。
四、利用ChatGPT的Python腳本編寫
(一) ChatGPT的腳本編寫
Python編寫API數(shù)據(jù)提取腳本的過程具體如下:
首先,需要編寫代碼獲取用戶名和密碼,并通過API接口進(jìn)行認(rèn)證,獲取token。這個過程可以通過Python的requests庫實現(xiàn)。
其次,通過API接口獲取感知平臺的數(shù)據(jù),以JSON格式呈現(xiàn)。這個過程也可以通過requests庫實現(xiàn)。
再次,將獲取的JSON格式數(shù)據(jù)解析為Python對象,然后提取需要的數(shù)據(jù)。在解析JSON數(shù)據(jù)時,使用Python內(nèi)置的json庫。
最后,將提取的數(shù)據(jù)寫入PostgreSQL數(shù)據(jù)庫中。在Python中,可以使用psycopg2庫連接并操作PostgreSQL數(shù)據(jù)庫。
(二)代碼修正
ChatGPT是一種基于GPT-3.5架構(gòu)的大型語言模型,具有強(qiáng)大的自然語言處理能力和智能的文本生成能力,但現(xiàn)階段的AI編程水平有限,在編寫Python API數(shù)據(jù)提取腳本的過程中難免會遇到一些問題,如API接口調(diào)用失敗、數(shù)據(jù)解析錯誤等。針對這些問題,需要通過人工干預(yù)。
首先,在系統(tǒng)中運行生成的腳本,進(jìn)行調(diào)試。在實際運行生成的腳本時,可能會遇到各種問題,如API接口調(diào)用失敗或數(shù)據(jù)解析錯誤。記錄這些錯誤信息非常重要,以便后續(xù)修正。
其次,將記錄下的錯誤信息及有問題的代碼段輸入ChatGPT中,利用其強(qiáng)大的自然語言處理能力,生成修正后的代碼。例如:
#將錯誤信息輸入ChatGPT中,獲取修正建議
error_info = \"Traceback (most recent call last):\nFile 'script.py', line 10, in
chatgpt_response = chatgpt_api.get_response(error_info)
print(chatgpt_response)
最后,根據(jù)ChatGPT提供的修正建議,修改腳本并再次運行。如此反復(fù),直到腳本能夠正常運行并正確提取和處理數(shù)據(jù)。
(三)具體實例
以下是一個具體實例,展示了如何通過ChatGPT生成和優(yōu)化代碼,實現(xiàn)從API提取數(shù)據(jù)并插入PostgreSQL數(shù)據(jù)庫:
1.編寫初始腳本,通過API接口進(jìn)行認(rèn)證和數(shù)據(jù)提取。
import requests
import json
import psycopg2
#API認(rèn)證
auth_url = \"https://api.example.com/auth\"
auth_payload = {'username': 'user', 'password': 'pass'}
auth_response = requests.post(auth_url, json=auth_payloadBY
token = auth_response.json().get('token')
#獲取數(shù)據(jù)
headers = {'Authorization': f'Bearer {token}'}
data_url = 'https://api.example.com/data'
data_response = requests.get(data_url, headers=headers)
data = data_response.json()
# 數(shù)據(jù)解析
required_data = data['key_of_interest']
#插入數(shù)據(jù)到PostgreSQL
conn = psycopg2.connect(
dbname='db',
user='user',
password='pass',
host='host',
port='port',
)
cursor = conn.cursor()
insert_query = 'INSERT INTO table (column1, column2) VALUES (%s, %s)
cursor.execute(insert_query,(required_data['fieldi'],required_data['field2']))
conn.commit()
cursor.close()
conn.close()
2.運行初始腳本,記錄錯誤信息并通過ChatGPT進(jìn)行修正。
如果API返回的數(shù)據(jù)格式不正確,導(dǎo)致json.decoder.JSONDecodeError錯誤:
try:
data = data_response.json()
except json.JSONDecodeError:
print(\"Error decoding JSON\")
根據(jù)ChatGPT建議進(jìn)行修正
data = {}
3.通過ChatGPT的多次迭代和優(yōu)化,最終實現(xiàn)了數(shù)據(jù)的自動化提取和處理,并將其成功寫入PostgreSQL數(shù)據(jù)庫中。
五、應(yīng)用效果
通過ChatGPT的協(xié)助,得以快速了解API對接的關(guān)鍵技術(shù)點,并且更加高效地完成腳本編寫及代碼修正工作,在有效解決了數(shù)據(jù)對接問題的同時,節(jié)省了大量的時間和精力。經(jīng)過多次運行試驗,感知平臺的數(shù)據(jù)與FineReport自動對接成功,并展示在信息資產(chǎn)監(jiān)控平臺 “網(wǎng)絡(luò)安全可視化監(jiān)控”界面。
六、效益分析與評價
隨著數(shù)智事業(yè)部信息資產(chǎn)監(jiān)控平臺在六大數(shù)智化業(yè)務(wù)領(lǐng)域的深入應(yīng)用與持續(xù)推廣,將進(jìn)一步對接更多的網(wǎng)絡(luò)安全應(yīng)用,實現(xiàn)油田網(wǎng)絡(luò)多維度的安全數(shù)據(jù)監(jiān)控。目前大多數(shù)網(wǎng)絡(luò)安全系統(tǒng)為第三方廠商標(biāo)品,存在數(shù)據(jù)保護(hù)情況,如果找廠家二次開發(fā)進(jìn)行數(shù)據(jù)對接,將產(chǎn)生一筆龐大的開發(fā)費用。幾乎所有的系統(tǒng)都開放了標(biāo)準(zhǔn)的API接口,此次利用ChatGPT將感知平臺的數(shù)據(jù)拉取并推送至FineReport試驗成功,說明該方法可行,后續(xù)可以沿用至其他系統(tǒng)與信息資產(chǎn)監(jiān)控平臺的數(shù)據(jù)對接。
一是提升對接效率。今后的系統(tǒng)對接可以參考本次經(jīng)驗,利用ChatGPT的分析能力,快速實現(xiàn)其他平臺的數(shù)據(jù)對接(應(yīng)用必須具備開放通用API接口且開放接口調(diào)用功能)。二是實現(xiàn)數(shù)據(jù)自動化傳輸。將需要提取的數(shù)據(jù)字段提交給ChatGPT,生成提取腳本后,所有需要的數(shù)據(jù)將自動被提取、解析、推送,告別傳統(tǒng)的人工錄入時代。三是輸出可控,提升安全保障??梢驝hatGPT針對輸出項進(jìn)行篩選,過濾掉不方便展示的敏感數(shù)據(jù)。四是創(chuàng)造經(jīng)濟(jì)效益。前期經(jīng)過咨詢,單一系統(tǒng)對接的二次開發(fā)報價接近30萬元,如果多個具有相同問題的應(yīng)用系統(tǒng)運用此方法對接成功,將節(jié)省近百萬元的成本。
七、結(jié)語
介紹了在智慧油氣田建設(shè)中實現(xiàn)感知平臺監(jiān)控數(shù)據(jù)提取的需求和解決思路,利用ChatGPT編寫API調(diào)用的Python腳本,成功地實現(xiàn)了兩個平臺的數(shù)據(jù)對接,并將網(wǎng)絡(luò)安全事件處置閉環(huán)數(shù)據(jù)展示到FineReport大屏中。同時,通過ChatGPT的幫助,實現(xiàn)了自主學(xué)習(xí)、自主建設(shè)的練兵目的。
在未來的研究方向上,可以進(jìn)一步優(yōu)化API數(shù)據(jù)提取腳本的效率和穩(wěn)定性,提高數(shù)據(jù)解析的準(zhǔn)確性和速度,并且可以考慮利用機(jī)器學(xué)習(xí)等技術(shù)來進(jìn)行數(shù)據(jù)分析和預(yù)測。同時,可以考慮將ChatGPT等大型語言模型應(yīng)用到更多的領(lǐng)域和場景中,從而提高效率和準(zhǔn)確性,推動智慧油氣田建設(shè)的發(fā)展。
參考文獻(xiàn)
[1]王偉.數(shù)字化轉(zhuǎn)型下的油田智能化建設(shè)[J].中國石油學(xué)報,2020(12):4-6.
[2]李強(qiáng).基于物聯(lián)網(wǎng)的智慧油氣田管理系統(tǒng)研究[J].計算機(jī)工程與應(yīng)用,2019(08):10-12.
[3]劉建國,張立華.數(shù)字油田與智能油氣田建設(shè)探討[M].北京:石油工業(yè)出版社,2021(11):15-20.
[4]黃磊.智慧油氣田中網(wǎng)絡(luò)安全問題與對策[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2019(10):38-40.
[5]李娜.物聯(lián)網(wǎng)在智慧油氣田建設(shè)中的應(yīng)用[J].物聯(lián)網(wǎng)技術(shù),2020(06):15-16.
[6]張曉明.智慧油氣田建設(shè)中的大數(shù)據(jù)應(yīng)用[J].大數(shù)據(jù)技術(shù)與應(yīng)用,2018(12):20-21.
[7]陳剛.基于區(qū)塊鏈的油氣田數(shù)據(jù)安全管理[J].信息安全技術(shù),2020(08):33-35.
作者單位:長慶油田分公司數(shù)智化事業(yè)部
■ 責(zé)任編輯:張津平、尚丹