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