過 怡
(蘇州市職業(yè)大學(xué) 計(jì)算機(jī)工程學(xué)院,江蘇 蘇州 215000)
Wonderware Intrack是廣泛應(yīng)用于制造行業(yè)的生產(chǎn)批次跟蹤系統(tǒng)[1],具有很強(qiáng)的擴(kuò)展性和配置性[2],其后臺數(shù)據(jù)庫支持Oracle和SQL Server。在多工廠環(huán)境中,由于需要保證制造執(zhí)行系統(tǒng)的實(shí)時(shí)性,往往各工廠會安裝獨(dú)立的Wonderware Intrack系統(tǒng),在實(shí)踐中發(fā)現(xiàn),這樣帶來了兩個問題:①由于數(shù)據(jù)庫軟件廠商在體系架構(gòu)上的差異,使得Oracle和SQL Server數(shù)據(jù)庫之間的管理模式區(qū)別較大,在多實(shí)例環(huán)境下,管理員需要配置和管理多個Oracle和SQL Server數(shù)據(jù)庫實(shí)例,而數(shù)據(jù)庫的安全管理是非常重要的一個環(huán)節(jié),由于其配置的復(fù)雜性和平臺的不同,使得系統(tǒng)安全更依賴于管理員的能力和經(jīng)驗(yàn)[3];②Wonderware Intrack沒有多實(shí)例的管理配置平臺,只有單實(shí)例的ModelMaker客戶端作為管理后臺,管理員需要切換不同的Wonderware Intrack系統(tǒng)進(jìn)行用戶權(quán)限和機(jī)臺物料等的配置,而切換需要一系列操作,包括數(shù)據(jù)庫設(shè)置→數(shù)據(jù)庫連接→ModelMaker登錄,效率較低,且需要重復(fù)登錄數(shù)據(jù)庫。因此,設(shè)計(jì)一個集成的數(shù)據(jù)庫安全管理工具,實(shí)現(xiàn)對Oracle和SQL Server數(shù)據(jù)庫的統(tǒng)一管理,能夠進(jìn)行基本的Wonderware Intrack系統(tǒng)配置,屏蔽復(fù)雜而又不盡相同的數(shù)據(jù)庫之間的操作細(xì)節(jié),對于提高整個系統(tǒng)的管理效率和安全性有著重要的意義。
本工具的主要功能分為兩個層次:底層是數(shù)據(jù)庫軟件的安全管理,上層是Wonderware Intrack的應(yīng)用層配置管理,數(shù)據(jù)庫是聯(lián)系兩個層次的紐帶。
主流數(shù)據(jù)庫都有完備的安全機(jī)制,主要包括用戶管理、角色管理和權(quán)限管理等。Oracle還有更為細(xì)粒度的管理機(jī)制,如概要文件管理,用以控制對口令文件和內(nèi)核資源的使用[4]。SQL Server則是以內(nèi)部機(jī)制自動管理內(nèi)部資源[5]。由于Oracle的角色管理比SQL Server更加細(xì)粒度化,不適合集成。因此,本工具將安全管理的重點(diǎn)放在用戶管理、權(quán)限管理和SQL導(dǎo)出等通用功能的集成上。其中權(quán)限管理是核心,包括用戶對各種數(shù)據(jù)庫對象的操作,比如表、過程、視圖。在普通數(shù)據(jù)庫客戶端軟件中,這種管理有諸多不便,例如如果要知道某個用戶擁有哪些對象的權(quán)限,只能通過復(fù)雜的查詢來弄清楚;又如要將數(shù)據(jù)導(dǎo)出,客戶端需要直接操作數(shù)據(jù)庫,會帶來安全隱患。因此,集成數(shù)據(jù)庫安全管理工具需要能夠針對不同數(shù)據(jù)庫平臺做出不同的操作,達(dá)到在同一系統(tǒng)下實(shí)現(xiàn)多實(shí)例、多平臺安全管理的目的。
ModelMaker是Wonderware Intrack的單實(shí)例管理后臺,本工具通過模擬ModelMaker的連接過程,把ModelMaker的連接集成到數(shù)據(jù)庫連接中。這樣設(shè)計(jì)的好處是:①簡化了Wonderware Intrack的實(shí)例切換;②把ModelMaker擴(kuò)展成為多實(shí)例管理后臺。另外,由于Wonderware Intrack提供了豐富的API,本工具也集成了Wonderware Intrack的常用配置功能,包括用戶管理和機(jī)臺物料的配置。
如上所述,本文需要設(shè)計(jì)一個集成數(shù)據(jù)庫安全機(jī)制管理平臺,包括Oracle和SQL Server的用戶管理、權(quán)限管理和SQL導(dǎo)出,并利用ModelMaker的開放平臺將Wonderware Intrack的安全和配置管理集成到系統(tǒng)中。安全管理工具的框架結(jié)構(gòu)如圖1所示。
圖1 安全管理工具的框架結(jié)構(gòu)
集成數(shù)據(jù)庫安全管理平臺包括用戶登錄、用戶管理、權(quán)限管理和SQL導(dǎo)出四個模塊。本工具所有的數(shù)據(jù)庫操作都是可視化運(yùn)行,運(yùn)行腳本可從臨時(shí)SQL文件中查看,運(yùn)行結(jié)果保存在日志文件中。
用戶登錄集成數(shù)據(jù)庫安全管理平臺,需要選擇相應(yīng)數(shù)據(jù)庫。如果需要同時(shí)對ModelMaker進(jìn)行用戶管理,需要選擇同時(shí)登錄ModelMaker,輸入相應(yīng)管理員賬號密碼登錄。數(shù)據(jù)庫實(shí)例通過XML文件預(yù)先定義,包括實(shí)例名稱和類型,配置格式圖2所示。其中,
圖2 數(shù)據(jù)庫實(shí)例定義
用戶管理的主要功能包括:①創(chuàng)建和刪除數(shù)據(jù)庫用戶;②更改用戶信息,包括授予或者回收角色、密碼;③顯示和更改用戶的使用狀態(tài),包括鎖定/解鎖/過期。用戶管理用到的表和視圖如表1所示。
表1 用戶管理相關(guān)表和視圖
由于SQL Server沒有直接提供狀態(tài)變更功能,需要修改表sysxlogins中的保留字段xstatus實(shí)現(xiàn),在多次實(shí)驗(yàn)后,本工具采用的實(shí)現(xiàn)方式如下:
xstatus = xstatus& (~2048)
在當(dāng)前狀態(tài)下,通過對xstatus的變更可以實(shí)現(xiàn)狀態(tài)在正常、鎖定和過期之間的轉(zhuǎn)換。
權(quán)限管理是系統(tǒng)的核心功能,本工具實(shí)現(xiàn)的功能有:①顯示所有的用戶概要文件、用戶、角色和數(shù)據(jù)庫對象權(quán)限,以及對應(yīng)的使用狀態(tài),在SQL Server中,本文用自定義角色取代Oracle的用戶概要文件;②將數(shù)據(jù)庫對象的權(quán)限授予指定用戶;③回收用戶擁有的數(shù)據(jù)庫對象權(quán)限。權(quán)限管理用到的表和視圖如表2所示。
表2 權(quán)限管理相關(guān)表和視圖
本工具實(shí)現(xiàn)了將表和視圖的數(shù)據(jù)通過SQL以拼接的形式導(dǎo)出。用戶可以選擇表或者視圖,輸入所需的條件,本工具可以將相關(guān)數(shù)據(jù)生成可直接運(yùn)行的SQL腳本,這是一種更安全、更簡便的數(shù)據(jù)導(dǎo)出方式。SQL導(dǎo)出用到的表和視圖如表3所示。
表3 SQL導(dǎo)出相關(guān)的表和視圖
如果用戶登錄系統(tǒng)的同時(shí)也選擇登錄ModelMaker,則用戶可以在系統(tǒng)中進(jìn)行Wonderware Intrack的配置。為了實(shí)現(xiàn)與ModelMaker的連接,本工具需要把Wonderware安裝后對應(yīng)的配置連接庫文件導(dǎo)入系統(tǒng),然后通過Wonderware的API連接到Wonderware服務(wù)器,語句如下:
OLE_CreateObject(%ItDlg, "InTrack.Dialog.Connect");
%ItDlg.Launch();
登錄成功后,當(dāng)前客戶端的ModelMaker連接已經(jīng)設(shè)為所連接的數(shù)據(jù)庫,所以可以直接從系統(tǒng)登錄ModelMaker。本工具Wonderware Intrack的配置通過API實(shí)現(xiàn),以用戶創(chuàng)建為例,語句如下:
InUser.Create(user_name, password, InSecuritygroup, InUsercertification);
其中InUser是Intrack用戶對象,InSeuritygroup是權(quán)限組,InUsercertification是用戶認(rèn)證,user_name和password是新建用戶賬號。
該集成數(shù)據(jù)庫管理工具操作簡單,實(shí)現(xiàn)了Wonderware Intrack和數(shù)據(jù)庫的登錄和安全管理的集成,可以實(shí)現(xiàn)對Wonderware Intrack的基本安全配置,能對多實(shí)例、多平臺下的Oracle或者SQL Server數(shù)據(jù)庫的用戶、角色、權(quán)限、數(shù)據(jù)快捷準(zhǔn)確配置,切換方便,能夠滿足大多數(shù)情況下的數(shù)據(jù)庫安全管理要求。
另外,該工具具有一定伸縮性,可以單獨(dú)實(shí)現(xiàn)對Oracle和SQL Server數(shù)據(jù)庫的安全管理。