資料庫安全
一、VB 環境下使用 DAO 物件 (一) 鎖住資料庫
指令:Set db =DbEngine.OpenDatabase([資料庫名稱], True) 第二個參數True 代表開啟之資料庫排他性(Exclusive)設成真。
(二) 鎖住資料表
指令:Set rs =db.OpenRecordset([資料表名稱],[開啟型態], [鎖定型態]) 鎖定型態:dbDenyRead (=2):拒絕他人讀取
dbDenyRead (=1):拒絕他人寫入
dbDenyRead+ dbDenyRead (=3):拒絕他人讀和寫 (三) 鎖住資料頁 (2K 空間)
指令:rs.LockEdits = True (悲觀型), False (樂觀型)
鎖定型態:悲觀型:執行Edit 或 AddNew 時,資料頁即上鎖,一直到執行 Update 或 Cancel 才解除。
樂觀型:執行Edit 或 AddNew 時,資料頁並不上鎖,在執行 Update 時才上鎖
註:在執行rs.Update 時,可在此指令後下達 DbEngine.Idle dbFreeLOcks 指令,
強制VB 暫停,讓開啟之資料及更新資料,可以確保程式中的資料是最新 的版本。所有的ODBC 資料來源都只用樂觀型鎖定。
(四) 交易處理
交易指令:Workspace(0).BeginTRans,必須在建立 Recordset 物件前下達這個 指令
確認指令:Workspace(0).CommitTrans,完成資料異動後下達此指令,將異動 資料寫入資料庫,處理方式是以批次方式進行。
取消異動:Workspace(0).Rollback,取消所有異動動作。
註:交易進行時,是在本機暫時目錄下進行,因此需要足夠之磁碟空間,方可 成功進行異動作業。進行交易處理時,通常將資料庫啟成排他性。
二、 ASP 環境下使用 ADO 物件 之 Recordset Open 方法
指令:rs.Open [SQL 指令], [資料庫連線], [資料集類型], [記錄鎖定類型]
(一) 資料集類型:
1. adOPenForwardOnly (=0):唯讀,記錄只能往前移動 2. adOPenStatic (=3):唯讀,記錄可自由移動
3. adOpenKeyset (=1):可讀寫,記錄可自由移動 4. adOpenDynamic (=2) :可讀寫,記錄可自由移動
3 和 4 均可同時讓多人共用資料庫,但方法 3 無法看到他人新增的記錄(除非 重新開啟資料庫),方法 4 則可以看到他人新增的記錄。
(二) 記錄鎖定類型
1. adLockReadOnly (=1):預設值,用來開啟唯讀的記錄 2. adLockPessimistic (=2):悲觀鎖定
當欲更新某筆記錄時,該筆記錄即進入鎖定狀態,不允許他人更新該筆資料。
更新記錄指令:rs.Update
取消更新記指令:rs.CancelUpdate 3. adLockOptimistic (=3):樂觀鎖定
假定不會有兩個程式同時更新同筆資料,只在資料寫入資料庫時,才鎖定該 筆記錄。
更新記錄指令:rs.Update
取消更新記錄指令:rs.CancelUpdate
4. adLockBatchOptimistic (=4):批次樂觀鎖定
更新資料時暫時不鎖定記錄,只在呼叫UpdateBatch 時才鎖定欲更新的記錄 更新記錄指令:rs.UpdateBatch
取消更新記錄指令:rs.CancelBatch (三) 交易處理:異動大量資料時
建議採用Recordset 物件,不要採用 SQL 指令,因一旦下達 SQL 指令,異 動資料立即寫入資料庫而無反悔之機會。使用Recordset 物件,可使用
CancelUpdate 指令來取消更新動作。
交易指令:conn.BeginTRans,必須在建立 Recordset 物件前下達這個指令 確認指令:conn.CommitTrans,完成資料異動後下達此指令,將異動資料寫入
資料庫,處理方式是以批次方式進行。
取消異動:conn.RollbackTrans,取消所有異動動作。
註:交易進行時,是在本機暫時目錄下進行,因此需要足夠之磁碟空間,方可 成功進行異動作業。
三、異動資料之四個安全要素 (一) 單元性:Atomicity
異動資料時,將待異動之資料看成一個整體,必須將整個異動動作執行完 畢,異動期間若發生錯誤或中斷,則必須將異動過的資料回復至異動前的原點 (RollBack 動作)。一般說來,發生撤回(RollBack)之原因有三:
1. 由異動本身所發出:肇因於異動條件不足,資料錯誤,或使用者要求。
2. 由系統本身所發出:肇因於異動資料太大,或是系統本身發生死結。
3. 當機或無法抗拒之意外狀況。
(二) 並行性:Concurrency
一個應用系統在處理資料庫時,同時可能有數個程式等待執行。為了執行 效率及均衡各異動之反映時間,需要將原先以依序方式執行之程式,改成分段 且得以同時執行,其執行結果應與依序執行之結果完全相同,符合此條件則稱 此應用程式具並行性。
(三) 隔離性:Isolation
資料異動期間,系統所產生之中間結果不能透露給其他應用程式讀取或修 改,此項特性稱之為隔離性。
(四) 持續性:Durability
如果異動執行過程完全正常,即可透過「委任」(Commit)指令將異動資料反 應到資料庫內。若系統發生錯誤時,應利用各種方法,儘全力恢復資料庫之正確 此項特性稱之為持續性。常用的做法有:
1. 定期備分資料(Backup) 2. 磁碟副本(Disk Mirroring)
3. 將運算資料(Operational Data)與異動記錄(Transaction Log)分開存放 4. 擬定完整的企業備分策略
使用者權限管理 – Access 環境下
一、使用者及群組權限管理 (一) 設定
(二) 變更
(三) 群組管理
(四) 群組成員管理
(五) 群組及成員密碼管理