張 松,陳鯉文
(福建工程學(xué)院,福建 福州 350000)
云計(jì)算是指配置了相關(guān)的計(jì)算服務(wù)模塊,用戶根據(jù)自身項(xiàng)目需求選擇服務(wù)器、系統(tǒng)等計(jì)算資源進(jìn)行項(xiàng)目開發(fā)的技術(shù)。其技術(shù)特點(diǎn)可以擴(kuò)展到物聯(lián)網(wǎng)傳感資源的管理,實(shí)現(xiàn)物聯(lián)網(wǎng)和云計(jì)算的方法和技術(shù)的融合[1],這將會(huì)成為項(xiàng)目開發(fā)人員的另一種選擇。大規(guī)模物聯(lián)網(wǎng)項(xiàng)目中的傳感器通常會(huì)有幾個(gè)數(shù)量級(jí)的數(shù)量分散部署,物聯(lián)網(wǎng)包含了物聯(lián)對(duì)象的所有信息,不可避免地帶來了信息安全問題。為了有效地管理邊緣傳感設(shè)備和物聯(lián)網(wǎng)信息安全[2],迫切需要一種管理機(jī)制,即需要?jiǎng)?chuàng)建管理傳感資源的動(dòng)態(tài)基礎(chǔ)設(shè)施的解決方案。因此,本文基于開源云架構(gòu)OpenStack和開源物聯(lián)網(wǎng)解決方案Stack4Tings構(gòu)建了物聯(lián)網(wǎng)云平臺(tái),能夠管理邊緣傳感資源和保障物聯(lián)網(wǎng)信息安全,為開發(fā)大型物聯(lián)網(wǎng)項(xiàng)目提供了方案參考。
OpenStack是一個(gè)旨在為公共及私有云的建設(shè)與管理提供軟件支持的開源項(xiàng)目[3],各個(gè)組件之間相互關(guān)聯(lián),協(xié)同管理各類計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)資源,其特點(diǎn)為模塊松耦合、組件配置靈活和二次開發(fā)簡單等。
物聯(lián)網(wǎng)云平臺(tái)搭建選用的核心組件及其功能介紹如下。(1)Keystone:身份認(rèn)證服務(wù)[4],是OpenStack 框架中負(fù)責(zé)驗(yàn)證用戶身份、設(shè)定訪問服務(wù)規(guī)則和簽發(fā)服務(wù)令牌的組件。具體表現(xiàn)為訪問資源和執(zhí)行操作需要驗(yàn)證用戶的身份與權(quán)限。Keystone可以說是整個(gè)Openstack框架的注冊(cè)表,OpenStack中各項(xiàng)服務(wù)都是通過Keystone來注冊(cè)其網(wǎng)絡(luò)端口(服務(wù)訪問的URL),在本平臺(tái)中會(huì)注冊(cè)物聯(lián)網(wǎng)服務(wù)的網(wǎng)絡(luò)端口進(jìn)行功能調(diào)用,實(shí)現(xiàn)對(duì)邊緣開發(fā)板實(shí)例的創(chuàng)建、查詢和刪除等。(2)Horizon:儀表盤服務(wù),為OpenStack提供了一個(gè)Web前端的管理界面,管理員可以通過前端界面直觀地看到各種操作結(jié)果與運(yùn)行狀態(tài)。
Stack4Things是一個(gè)開源的物聯(lián)網(wǎng)框架,由意大利墨西拿大學(xué)的移動(dòng)和分布式系統(tǒng)實(shí)驗(yàn)室開發(fā)[5]。Stack4Things可以不用獲取嵌入式設(shè)備的物理位置、網(wǎng)絡(luò)配置和底層技術(shù)就能夠管理物聯(lián)網(wǎng)設(shè)備,是一個(gè)面向云的水平解決方案,提供物聯(lián)網(wǎng)對(duì)象虛擬化、定制和編排服務(wù)。
Stack4Things物聯(lián)網(wǎng)框架主要包含3部分。(1)IoTronic:物聯(lián)網(wǎng)平臺(tái)核心服務(wù),部署在云基礎(chǔ)設(shè)施側(cè),同OpenStack其他服務(wù)類似,需要通過Keystone注冊(cè)獲得其網(wǎng)絡(luò)端口。該組件主要接收用戶命令,傳遞命令到開發(fā)板,接收開發(fā)板的數(shù)據(jù)反饋到云端,完成將OpenStack云計(jì)算架構(gòu)擴(kuò)展到傳感資源管理的任務(wù)。(2)Lighting-Rod:邊緣開發(fā)板側(cè)服務(wù)程序,完成來自云端用戶命令的接收和與開發(fā)板上的外接傳感資源交互的任務(wù),同時(shí)將傳感器獲得的數(shù)據(jù)上傳云端。(3)IoTronicClient:命令行工具,通過Keystone服務(wù)認(rèn)證的用戶可以使用IoTronicClient命令行工具輸入相關(guān)命令實(shí)現(xiàn)對(duì)開發(fā)板的創(chuàng)建、查詢和刪除等操作。
本文設(shè)計(jì)了物聯(lián)網(wǎng)平臺(tái)的總體架構(gòu),如圖1所示。總體架構(gòu)主要分為兩部分:云基礎(chǔ)設(shè)施側(cè)和邊緣開發(fā)板側(cè),重點(diǎn)注重于OpenStack組件和Stack4Tings組件的分布情況。在云基礎(chǔ)設(shè)施側(cè),Keystone服務(wù)完成對(duì)用戶的認(rèn)證,IoTronic組件代表了物聯(lián)網(wǎng)云平臺(tái)的核心,管理數(shù)據(jù)庫,存儲(chǔ)所有必要的信息。在邊緣開發(fā)板側(cè),Lighting-Rod作為板側(cè)軟件架構(gòu)的核心,代表了云基礎(chǔ)設(shè)施的接觸點(diǎn),通過WebSocket全雙工通道連接到一個(gè)特定的WAMP路由器與IoTronic進(jìn)行通信,完成與云端收發(fā)命令和數(shù)據(jù)的任務(wù)。
圖1 物聯(lián)網(wǎng)平臺(tái)總體架構(gòu)
同時(shí),本文給出了云基礎(chǔ)設(shè)施側(cè)和邊緣開發(fā)板側(cè)之間具體的信息交互,如圖2所示。假定用戶已經(jīng)通過身份認(rèn)證,操作物聯(lián)網(wǎng)云平臺(tái)的具體信息流程如下:(1)用戶通過命令行工具或者Web前端界面連接到IoTronic服務(wù)。(2)用戶命令轉(zhuǎn)化為對(duì)IoTronic API接口的調(diào)用,同時(shí)將調(diào)用消息放進(jìn)RabbitMQ消息隊(duì)列。(3)IoTronic conductor從消息隊(duì)列中提取消息并查詢數(shù)據(jù)庫檢查用戶要操作的開發(fā)板是否已經(jīng)注冊(cè),如果已注冊(cè)則獲取該開發(fā)板的WAMP通信協(xié)議代理。(4)IoTronic conductor向消息隊(duì)列推送新的消息,WAMP通信協(xié)議代理從消息隊(duì)列中提取消息,并在相應(yīng)的WAMP路由的主題上發(fā)布信息。(5)在邊緣開發(fā)板側(cè),通過WAMP庫,Lighting-Rod從路由上獲得信息,同時(shí)打開反向套接字隧道連接到由云端IoTronic conductor指定的網(wǎng)絡(luò)套接字隧道代理,并且生成一個(gè)TCP端口。(6)隧道代理通過指定的端口發(fā)布一條用戶命令被執(zhí)行的消息到消息隊(duì)列中。(7)IoTronic API接口從消息隊(duì)列中提取消息顯示在Web前端界面。
圖2 物聯(lián)網(wǎng)平臺(tái)內(nèi)部信息流
對(duì)于OpenStack基礎(chǔ)云架構(gòu)的搭建主要包含以下幾個(gè)步驟:(1)基礎(chǔ)環(huán)境搭建。本次搭建采用一臺(tái)4核4 G內(nèi)存、Centos7系統(tǒng)的虛擬機(jī)作為基礎(chǔ)云架構(gòu)的controller節(jié)點(diǎn)?;A(chǔ)設(shè)置包括設(shè)置虛擬機(jī)雙網(wǎng)卡模式(NAT和主機(jī)模式),關(guān)閉防火墻并設(shè)置開機(jī)不啟動(dòng),安裝MySQL數(shù)據(jù)庫、RabbitMQ消息隊(duì)列服務(wù)、Memcached緩存服務(wù)等。(2)安裝OpenStack相關(guān)服務(wù)。Keystone身份驗(yàn)證服務(wù)和Horizon儀表盤服務(wù),本文采用的是先電云平臺(tái)一鍵式搭建。(3)搭建成功驗(yàn)證。在瀏覽器上輸入controller節(jié)點(diǎn)的IP地址進(jìn)入云平臺(tái)登錄界面可以驗(yàn)證是否安裝成功。云平臺(tái)登錄界面如圖3所示。
圖3 云平臺(tái)登錄界面
對(duì)于Stack4Things物聯(lián)網(wǎng)架構(gòu)搭建主要包含以下幾個(gè)步驟:(1)搭建前準(zhǔn)備。在controller節(jié)點(diǎn)準(zhǔn)備完成后,需要在MySQL數(shù)據(jù)庫創(chuàng)建名為“iotronic”的數(shù)據(jù)庫,使用Keystone服務(wù)創(chuàng)建名為“iotronic”用戶并將用戶加入項(xiàng)目域,再創(chuàng)建名為“iot”的服務(wù)并為該服務(wù)注冊(cè)網(wǎng)絡(luò)端口以供用戶訪問。(2)Stack4Things相關(guān)組件安裝。此次搭建采用一臺(tái)4核4 G內(nèi)存、Ubuntu18.04系統(tǒng)的虛擬機(jī)作為IoTroinc節(jié)點(diǎn)。安裝Crossbar服務(wù),Crossbar實(shí)現(xiàn)了開放式Web應(yīng)用程序消息傳遞協(xié)議(WAMP),上文提到的WAMP路由由此服務(wù)提供。安裝IoTroinc服務(wù),是物聯(lián)網(wǎng)云平臺(tái)的核心。安裝apache2服務(wù),作用為開放該節(jié)點(diǎn)特定的網(wǎng)路端口。(3)IoTroinc服務(wù)相關(guān)進(jìn)程開啟。通過systemctl命令開啟conductor、WAMP agent等進(jìn)程,并設(shè)置為開機(jī)自啟動(dòng)。
對(duì)于邊緣開發(fā)板側(cè)架構(gòu)的搭建主要包含以下幾個(gè)步驟:(1)搭建前準(zhǔn)備。本次搭建采用一塊MPU為RK3568的開發(fā)板,運(yùn)行Debian10系統(tǒng)。安裝JavaScript 運(yùn)行環(huán)境NodeJS、反向代理服務(wù)器NGINX和自動(dòng)化安全證書管理工具Certbot。(2)Lighting-Rod安裝。安裝完成后通過systemctl命令運(yùn)行Lighting-Rod。安裝完成后登錄界面如圖4所示。
圖4 Lighting-Rod登錄界面
本次測(cè)試在云基礎(chǔ)設(shè)施側(cè)和邊緣開發(fā)板側(cè)分別測(cè)試。在云基礎(chǔ)設(shè)施側(cè)的測(cè)試為在controller節(jié)點(diǎn)創(chuàng)建用戶,用戶通過IoTronicClient命令行工具進(jìn)行創(chuàng)建、查看和刪除開發(fā)板設(shè)備實(shí)例。邊緣開發(fā)板側(cè)的測(cè)試為通過命令行配置數(shù)據(jù)并在Web端登錄開發(fā)板,與數(shù)據(jù)庫中創(chuàng)建的開發(fā)板實(shí)例相匹配。
云基礎(chǔ)設(shè)施側(cè)測(cè)試:通過IotronicClient命令行工具輸入命令“iotronic board-create
代表開發(fā)板唯一標(biāo)識(shí)符,在邊緣開發(fā)板側(cè)實(shí)際注冊(cè)時(shí)需要提供此標(biāo)識(shí)符,當(dāng)惡意攻擊者要將設(shè)備接入云端會(huì)因數(shù)據(jù)庫沒有該實(shí)例或者無法提供開發(fā)板標(biāo)識(shí)符而失敗,從而保證了物聯(lián)網(wǎng)信息安全。
圖5 創(chuàng)建、查看和刪除開發(fā)板實(shí)例
邊緣開發(fā)板側(cè)測(cè)試:本次測(cè)試分為模擬未獲取開發(fā)板實(shí)例標(biāo)識(shí)符的攻擊者惡意接入云端和云端用戶正常接入云端。在云端創(chuàng)建名為“rk3568”開發(fā)板實(shí)例的標(biāo)識(shí)符為000001。在開發(fā)板安裝Lighting-Rod后,命令行輸入lr_configure
為創(chuàng)建實(shí)例的標(biāo)識(shí)符,
圖6 開發(fā)板未接入云端
圖7 開發(fā)板成功接入云端
本文基于云計(jì)算開源項(xiàng)目OpenStack和物聯(lián)網(wǎng)開源項(xiàng)目Stack4Tings構(gòu)建了物聯(lián)網(wǎng)云平臺(tái),將按需分配和管理計(jì)算資源的云計(jì)算技術(shù)特點(diǎn)擴(kuò)展到對(duì)物聯(lián)網(wǎng)傳感資源的管理,實(shí)現(xiàn)了物聯(lián)網(wǎng)和云計(jì)算的方法和技術(shù)的融合。該物聯(lián)網(wǎng)平臺(tái)能夠?qū)崿F(xiàn)對(duì)邊緣傳感資源的管理,使得大型物聯(lián)網(wǎng)項(xiàng)目部署傳感資源更快捷,同時(shí)也能保障物聯(lián)網(wǎng)信息的安全。下一步工作是將外接傳感器的開發(fā)板應(yīng)用到某個(gè)場(chǎng)景中,配合OpenStack存儲(chǔ)服務(wù)將采集的數(shù)據(jù)同步上傳云端,同時(shí)進(jìn)行網(wǎng)絡(luò)前端的開發(fā),實(shí)現(xiàn)一鍵式數(shù)據(jù)采集、上傳、存儲(chǔ)和計(jì)算功能。
[1]舒俊.云計(jì)算在物聯(lián)網(wǎng)領(lǐng)域的應(yīng)用研究[J].中國高新科技,2023(2):109-111.
[2]李鵬.云計(jì)算技術(shù)在基于信任的物聯(lián)網(wǎng)中的應(yīng)用[J].無線互聯(lián)科技,2023(6):103-105.
[3]曹海平.基于OpenStack的云計(jì)算平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J].信息記錄材料,2023(4):237-239.
[4]尹譽(yù)衡.OpenStack Keystone認(rèn)證機(jī)制研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2021(2):122-126.
[5]BRUNEO D,DISTEFANO S.Stack4Things as a fog computing platform for smart city applications:2016 IEEE conference on computer communications workshops [C].New York:IEEE, 2016.