前言
如今隨著軟件項(xiàng)目規(guī)模的日益增大以及項(xiàng)目復(fù)雜性的不斷加劇,軟件配置管理(SCM)的重要性已越來越受到大家的認(rèn)可。許多的軟件配置管理工具也應(yīng)運(yùn)而生,使得我們能夠輕松有效地管理我們的軟件項(xiàng)目,作為這其中的一員,Microsoft Visual SourceSafe具有簡單易用、方便高效、與Windows操作系統(tǒng)及微軟開發(fā)工具高度集成等優(yōu)點(diǎn)。,我們來講講VSS中的權(quán)限管理。
首先我將講解VSS中權(quán)限機(jī)制實(shí)現(xiàn)的原理,這里面設(shè)計(jì)到VSS的默認(rèn)安全訪問機(jī)制、項(xiàng)目安全等內(nèi)容,接著我將告訴實(shí)現(xiàn)權(quán)限機(jī)制的具體方法,后我將結(jié)合一個(gè)軟件移交項(xiàng)目的具體情況來談?wù)剻?quán)限管理如何應(yīng)用到實(shí)際的項(xiàng)目過程中。
一、VSS默認(rèn)的安全訪問控制
每次你安裝VSS以后,系統(tǒng)自動(dòng)激活默認(rèn)的安全訪問控制機(jī)制。這套機(jī)制非常簡單,它包括兩個(gè)等級(jí)的權(quán)限:
1) 只讀權(quán)限:用戶可以查看VSS數(shù)據(jù)庫中的所有對(duì)象,但是不能夠修改
2) 讀寫權(quán)限:用戶可以查看和修改VSS數(shù)據(jù)庫中的任何對(duì)象
每次你增加新用戶的時(shí)候,你可以決定該用戶的權(quán)限等級(jí)。在“Add User”對(duì)話框中包含一個(gè)“Read Only”復(fù)選框,你可以通過它來確定用戶具有的權(quán)限。
我們前面說過這只是個(gè)極其簡單、粗線條的解決方案,但同時(shí)也是簡單的。在實(shí)際過程中,你可能需要更細(xì)化的權(quán)限分配,甚至希望每個(gè)文件針對(duì)不同的用戶都能設(shè)置不同的權(quán)限。那我們得親自動(dòng)手設(shè)置我們項(xiàng)目的安全機(jī)制。
注意:SourceSafe中的所有安全設(shè)置都是在Visual SourceSafe Administrator中進(jìn)行的,所以在深入以下細(xì)節(jié)之前,你必須確認(rèn)一件事情:你的Admin密碼足夠安全,除你之外沒有任何人可以隨心所欲地進(jìn)入Visual SourceSafe Administrator。否則,一切安全考慮都是徒勞。
二、項(xiàng)目安全與用戶訪問權(quán)限
在講解項(xiàng)目安全之前我們先來回顧一下VSS的基本組成框架,VSS包含多個(gè)數(shù)據(jù)庫(database),每個(gè)數(shù)據(jù)庫又包含許多的項(xiàng)目,而且可能項(xiàng)目里嵌套著不同的子項(xiàng)目,后才是你的源文件。你可以把這個(gè)類比成操作系統(tǒng)中的磁盤分區(qū),目錄,子目錄,文件,每臺(tái)機(jī)器包含許多的磁盤分區(qū),每個(gè)分區(qū)中包含無數(shù)個(gè)目錄、子目錄,在子目錄下才是你的文件。VSS中的用戶是基于VSS數(shù)據(jù)庫的,也是說每個(gè)數(shù)據(jù)庫都包含有自己的用戶清單。用戶訪問權(quán)限意思是用戶可以訪問(包括查看、修改和執(zhí)行命令等)數(shù)據(jù)庫中的哪些項(xiàng)目,對(duì)項(xiàng)目來說是它只能被那些已經(jīng)授權(quán)的用戶訪問,也是所謂的項(xiàng)目安全。
很遺憾VSS只提供了到項(xiàng)目(對(duì)應(yīng)于目錄)的用戶權(quán)限控制,并不能針對(duì)每個(gè)文件來設(shè)置不同的用戶訪問權(quán)限(比如Rational ClearCase等提供此功能)。雖然你可以用某種變通的方法來做到這一點(diǎn),比如增加子項(xiàng)目,不過那樣破壞了整個(gè)項(xiàng)目結(jié)構(gòu)的規(guī)范性、可讀性和合理性,甚至產(chǎn)生些無任何意義的子項(xiàng)目。
VSS定義了四級(jí)用戶訪問權(quán)限,級(jí)別由低到高,后者包括所有前者的權(quán)限,比如說擁有Check Out權(quán)限自動(dòng)擁有了讀的權(quán)限。
1) 只讀(R):允許查看文件,對(duì)應(yīng)于View、Get等命令
2) Check Out(C):可以使用Check Out,Check In,Undo Check Out等命令修改文件內(nèi)容
3) 文件增刪(A):可以在項(xiàng)目中增加、刪除、重命名文件或者給文件加標(biāo)簽,對(duì)應(yīng)的命令有Add,Delete,Label,Rename等
4) 破壞(D):這級(jí)權(quán)限對(duì)應(yīng)于那些具有巨大破壞性的操作(是那些一不小心可能被炒魷魚的操作),請(qǐng)牢記它們的名字:Destroy,Purge,Rollback。所以亦有人戲稱之為自殺權(quán)限。
其實(shí)你可以發(fā)現(xiàn)默認(rèn)安全機(jī)制中的兩級(jí)權(quán)限是和這四者對(duì)應(yīng)起來的,只不過后者把前者的讀寫權(quán)限細(xì)分為三個(gè)不同的級(jí)別。好啦,了解每級(jí)權(quán)限各自的含義之后我們可以開始設(shè)置不同用戶的權(quán)限啦。
設(shè)置用戶權(quán)限之前,你必須激活項(xiàng)目安全機(jī)制。打開VSS Administrator的Tools菜單,點(diǎn)擊Options得到SourceSafe Options對(duì)話框,選取Project Security并且勾上Enable project security復(fù)選框。
VSS中有三種方法可以設(shè)置用戶的項(xiàng)目訪問權(quán)限:針對(duì)項(xiàng)目設(shè)置每個(gè)用戶的權(quán)限,針對(duì)用戶設(shè)置訪問每個(gè)項(xiàng)目的權(quán)限,拷貝用戶權(quán)限,它們分別對(duì)應(yīng)于Tools菜單下的Assign Rights by Project,Rights Assignments for User,Copy User Rights。我們以方法一為例做一簡單說明。如下圖所示,在左邊框中選定項(xiàng)目,在右上框中選定用戶,右下腳的User rights中顯示該用戶現(xiàn)具有的權(quán)限,選中不同的復(fù)選框來設(shè)置你自己的權(quán)限。注意:對(duì)每個(gè)項(xiàng)目的用戶權(quán)限設(shè)置自動(dòng)反映到該項(xiàng)目的所有子項(xiàng)目中。
三、權(quán)限管理在實(shí)際項(xiàng)目中的應(yīng)用
在本小節(jié)中,我主要結(jié)合在實(shí)際項(xiàng)目過程中作為配置管理員的經(jīng)驗(yàn)來談?wù)剻?quán)限管理的實(shí)際應(yīng)用,以及在應(yīng)用過程中需要考慮的因素。
我們要接觸的這個(gè)項(xiàng)目為一軟件移交的項(xiàng)目,這個(gè)項(xiàng)目團(tuán)隊(duì)的成員組成和職責(zé)分配如下:
項(xiàng)目經(jīng)理:1人,負(fù)責(zé)協(xié)調(diào)整個(gè)項(xiàng)目
業(yè)務(wù)分析師,1人,負(fù)責(zé)整個(gè)系統(tǒng)業(yè)務(wù)的掌握
系統(tǒng)架構(gòu)師:1人,負(fù)責(zé)整個(gè)系統(tǒng)的系統(tǒng)架構(gòu)
Package Owner:3人,分別負(fù)責(zé)系統(tǒng)前端、中間層及后臺(tái)數(shù)據(jù)庫三個(gè)部分
模塊負(fù)責(zé)人:3-5人,分別負(fù)責(zé)各個(gè)模塊
數(shù)據(jù)庫管理員(DBA):1人,負(fù)責(zé)系統(tǒng)數(shù)據(jù)庫
Test/QA:1人,負(fù)責(zé)整個(gè)軟件的測試和質(zhì)量保證
Technical Writer:1人,負(fù)責(zé)相關(guān)技術(shù)文檔的寫作
變更控制委員會(huì)(CCB):3人,負(fù)責(zé)項(xiàng)目需求的變更審核及執(zhí)行,包括軟件配置管理員,外方項(xiàng)目經(jīng)理
實(shí)際過程中大多會(huì)發(fā)生人員交叉現(xiàn)象,比如我們項(xiàng)目的實(shí)際人數(shù)只有9人,項(xiàng)目經(jīng)理又同時(shí)是CCB中的一員,Package Owner同時(shí)兼任模塊負(fù)責(zé)人。根據(jù)我們項(xiàng)目的實(shí)際組成情況,我在VSS中給出了如下所示的項(xiàng)目結(jié)構(gòu):
圖示說明:
1、exec項(xiàng)目中主要存放項(xiàng)目可執(zhí)行文件或者軟件安裝文件,由于該項(xiàng)目比較復(fù)雜,建立過程耗時(shí)長且比較復(fù)雜,所以直接在VSS中存放可執(zhí)行文件。一般的項(xiàng)目不推薦這樣使用。
2、接下來,需要為每個(gè)項(xiàng)目、子項(xiàng)目設(shè)置不同的用戶訪問權(quán)限。由于所有的軟件重大變更都需要交由CCB審核簽字后方可執(zhí)行,所以我們把整個(gè)項(xiàng)目的D(6)級(jí)權(quán)限賦給CCB成員。而項(xiàng)目經(jīng)理主要負(fù)責(zé)項(xiàng)目的整體進(jìn)度的把握以及與外方項(xiàng)目組、其他部門的協(xié)調(diào)工作,所以擁有整個(gè)項(xiàng)目的R權(quán)限并且擁有development document的A權(quán)限。配置管理員的權(quán)限有兩者可能,一種是擁有整個(gè)項(xiàng)目的A權(quán)限,另外一種可能是只擁有部分項(xiàng)目的A權(quán)限,這主要取決于賦予給配置管理員的實(shí)際權(quán)限有多大。以此類推,各個(gè)模塊負(fù)責(zé)人擁有各自模塊的A權(quán)限。此外由于移交項(xiàng)目的特殊性,一般在項(xiàng)目開始過程中主要以培訓(xùn)為主,很少涉及到軟件的修改,所以建議在項(xiàng)目開始階段不賦予開發(fā)工程師用戶C權(quán)限以免引起不必要的錯(cuò)誤和爭論。
總結(jié)
本文通過討論VSS中權(quán)限管理實(shí)現(xiàn)的具體機(jī)制,并且結(jié)合例子講解了在實(shí)際過程中的應(yīng)用。雖然移交項(xiàng)目有著它本身的特殊性,但我相信對(duì)于任何項(xiàng)目來說其安全管理的基本思路是相通的,希望此文能夠給大家以一定的啟示和借鑒。
參考
1) 本文中會(huì)大量涉及到“項(xiàng)目”一詞,有的時(shí)候它是指實(shí)際的軟件項(xiàng)目,有時(shí)它又是指VSS數(shù)據(jù)庫中的項(xiàng)目、子項(xiàng)目,請(qǐng)注意區(qū)分。
2) 有關(guān)軟件配置管理的更詳細(xì)信息,可以參考本網(wǎng)站相關(guān)內(nèi)容。軟件配置管理主要包括版本管理、變更管理、權(quán)限管理等方面,本文主要涉及權(quán)限管理。
3) 軟件版本采用Microsoft Visual SourceSafe 6.0英文版,其他的版本請(qǐng)進(jìn)行相應(yīng)的對(duì)照。
4) 所有這些命令的詳細(xì)信息可以參考VSS幫助。
5) 項(xiàng)目背景大致介紹:所移交的軟件為一國外公司的軟件,是基于Microsoft的DNA架構(gòu)的三層應(yīng)用,代碼量為150萬行左右。移交的目標(biāo):掌握現(xiàn)有系統(tǒng),充分了解相關(guān)的商業(yè)邏輯,為以后開發(fā)出自己的符合中國國情的軟件做好充分的準(zhǔn)備。這其中可能涉及到需求的再分析、系統(tǒng)的重新架構(gòu)以及向Java平臺(tái)的遷移。
6) 我們分別用R、C、A、D來表示VSS中的四級(jí)權(quán)限Read,Check Out,Add,Destroy。