課程名稱:資料庫系統 授課老師:李春雄 博士 第 十六章 資料庫安全 課程名稱:資料庫系統 授課老師:李春雄 博士
本章學習目標 1.讓讀者瞭解資料庫安全性的不同層面及目標。 2.讓讀者瞭解資料庫安全的實務作法。
本章內容 16-1 資料庫的安全性(Security) 16-2 資料庫安全的目標 16-3 資料控制語言 16-4 安全保護實務作法 16-5 資料備份的媒體 16-6 資料備份的檔案及方法 16-7 資料的還原機制
引言 我們都知道資料庫是企業內最重要的資產,因此,身為資訊人員的我們,如何確保資料庫的安全是一件非常重要的任務與責任。
16-1資料庫的安全性(Security) 資料庫系統主要是將許多相關的資料表加以集中化管理, 雖然有助於資料操作與分享,但是在資料的安全性(Security)上,卻產生了極大的隱憂,因為一旦資料庫被非法入侵者破壞時,則將會導致難以評估後果。因此,唯有做好資料庫安全(Database Security),才能確保企業的生存與競爭力。 既然資料庫的安全性對企業那麼重要?那何謂資料庫安全(Database Security)呢? 【定義】 是指可以保護資料庫儲存的資料,不讓沒有得到授權的使用者進行存取。
不同層面來探討 基本上,保護資料庫的安全,我們可以從下列不同層面來探討: 1.實體安全(Physical Security) 不同層面來探討 基本上,保護資料庫的安全,我們可以從下列不同層面來探討: 1.實體安全(Physical Security) 2.作業系統方面(Operating System Level) 3.資料庫系統方面(Database System Level) 4.人為問題(Human Problem)
1.實體安全(Physical Security) 【定義】 是指放置「資料庫系統」的主機必須要在一個有防護設備的環境中。 【例如】 機房的進出都必須要有門鎖或刷卡方式來記錄人員資料。但是,實體安全的機制尚無法確保資料百分百的安全。 【解決方法】 藉助其它的方法。
2.作業系統方面(Operating System Level) 【定義】 是指針對目前的「作業系統」的安全漏洞。導致非法使用者可以直接Login到資料庫系統中,或透過遠端方式進入到主機中。 【解決方法】 資料庫管理者(DBA)就必須要隨時更新最新官方網站的作業系統軟體版本。
3.資料庫系統方面(Database System Level) 【定義】 是指資料庫管理師(DBA)對使用者之授權,依使用者不同的管理層級,給予不同的存取資料的權限。 因此,管理層級較高的使用者就會具有「新增、修改及刪除」功能,但是,管理層級較低的使用者可能僅能查詢,而無法進行異動資料。
4.人為問題(Human Problem) 【定義】 是指資料庫管理者(DBA)對於已經被授權的使用者,也應該進行不定期的追蹤資料庫的使用歷程。否則,「實體安全」再嚴密,也無法以避免不法使用者受誘惑而出賣使用密碼及相關的機密資訊。但是,人為問題可說是「資料庫的安全」中最難預防的問題。
16-2 資料庫安全的目標 基本上,資料庫安全有以下四個目標: 一、保密性(Confidentiality) 16-2 資料庫安全的目標 基本上,資料庫安全有以下四個目標: 一、保密性(Confidentiality) 二、完整性(Integrity) 三、可用性(Availability) 四、認證性(Authentication)
一、保密性(Confidentiality) 【定義】是指用來預防未授權的資料存取,以確保資料的「保密性」。 【例如1】 在公司中,非授權的「員工」是無法查詢同事的薪資或紅利獎金。 【例如2】 在學校中,非授權的「老師」是無法查詢非授課班級學生的成績。 【例如3】 在醫院中,非授權的「醫師」是無法查詢某一病人的病歷資料。
二、完整性(Integrity) 【定義】是指用來預防未授權的資料異動,得以維持資料的「正確性」。 【例如1】在公司中,「員工」不能更改自己的薪水。 【例如2】在學校中,「學生」不能更改個人的學業成績,但只能查詢。 【例如3】在醫院中,「醫師」不能隨意更改某一病人的病歷資料。
三、可用性(Availability) 【定義】 是指對已被授權的使用者,就可以合法及正常使用被授權的資源。 【例如1】 在公司中,正式「員工」就可以進行線上學習,以累計學習點數。 【例如2】在學校中,有學籍「學生」就可以讓順利的選課。 【例如3】在醫院中,門診「醫師」就可以記錄該門診病人的病歷資料。
四、認證性(Authentication) 【定義】 是指資料庫管理系統(DBMS)必須要能夠辨識每一位使用者的身份,以便提供不同權限的資訊。 【例如1】 在公司中,「教育訓練網站」就須能夠辨識使用者為員工、講師及 最高主官。 【例如2】 在學校中,「數位學習系統」就須能夠辨識使用者為學生或授課老師。 【例如3】 在醫院中,「網路掛號系統」就須能夠辨識使用者為病友或醫師。
16-3 資料控制語言 各位讀者還記得在本書中的第六章已經介紹SQL所提供三種語言,分別如下: 16-3 資料控制語言 各位讀者還記得在本書中的第六章已經介紹SQL所提供三種語言,分別如下: 第一種為資料定義語言(Data Definition Language; DDL) 第二種為資料操作語言(Data Manipulation Language; DML) 第三種為資料控制語言(Data Control Language; DCL) 其中第三種語言就是所謂資料控制語言(DCL),在第六章並沒有詳細介紹。因此,在本單元中將更進一步來說明DCL。 基本上,在DCL語言中,它提供兩個指令來管理使用者的權限。 一、GRANT指令(授予使用權) 二、REVOKE指令(撤銷使用權)
一、GRANT指令(授予使用權) 【定義】是指用來「授予」現有資料庫使用者帳號的權限。 【語法】 其中,「權限」可分為四種:Insert, Update, Delete, Select SQL語法 GRANT 權限 [ON OBJECT] TO [使用者 | PUBLIC] [WITH GRANT 選項]
[實例1] 對USER1與USER2「授予」SELECT與INSERT對客戶資料表的使用者權限功能 SQL語法 GRANT SELECT, INSERT ON 客戶資料表 TO USER1, USER2
[實例2] 對所有的使用者「授予」Select的功能權限。 SQL語法 GRANT SELECT ON 客戶資料表 TO PUBLIC
[實例3] 對User1和User2「授予」TempDB資料庫裡建立資料表和建立檢視表的權限 SQL語法 USE TempDB GO [實例3] 對User1和User2「授予」TempDB資料庫裡建立資料表和建立檢視表的權限 SQL語法 USE TempDB GO GRANT CREATE TABLE, CREATE VIEW TO User1, User2
【實例4】 對User1「授予」查詢「學生資料表」中的Stu_no與Stu_name兩個欄位,以及刪除資料列的權限。 SQL語法 【實例4】 對User1「授予」查詢「學生資料表」中的Stu_no與Stu_name兩個欄位,以及刪除資料列的權限。 SQL語法 GRANT SELECT(Stu_no, Stu_name), DELETE ON 學生資料表 TO User1
【實例5】 對User1「授予」DELETE權限授予User2 SQL語法 GRANT DELETE ON 學生資料表 TO User2
【實例6】 對User2「授予」對於「學生資料表」有INSERT、UPDATE、DELETE、SELECT等權限 SQL語法 【實例6】 對User2「授予」對於「學生資料表」有INSERT、UPDATE、DELETE、SELECT等權限 SQL語法 GRANT ALL ON Emp TO User2
二、REVOKE指令(撤銷使用權) 【定義】指用來「撤銷」資料庫使用者已取得的權限。 【語法】 SQL語法 SQL語法 REVOKE 權限 [GRANT.OPTION FOR] ON OBJECT FROM 使用者 |RESTRICT | CASCADE]
【實例】 表示從USER2帳號移除對「客戶資料表」的INSERT權限。 SQL語法 REVOKE INSERT ON 客戶資料表 【實例】 表示從USER2帳號移除對「客戶資料表」的INSERT權限。 SQL語法 REVOKE INSERT ON 客戶資料表 FROM USER2
16-4 安全保護實務作法 基本上,資料庫的安全保護,有以下三種不同的作法: 一、建立稽核追蹤系統(Audit Trail System) 16-4 安全保護實務作法 基本上,資料庫的安全保護,有以下三種不同的作法: 一、建立稽核追蹤系統(Audit Trail System) 二、建立視界(Views) 三、存取權限的管控(Authority Control)
一、建立稽核追蹤系統(Audit Trail System) 【定義】是指用來記錄使用者在資料庫中的各種操作動作。 【例如】 1.當刪除一筆學生的學籍資料時,順便將該筆資料加入到「休退學 資料表」中。 2.當學生的曠缺課的節數高於某一規定的門檻值時,自動寄送mail 給學生及家長。 3.當某產品的庫存量低於安全存量時,自動通知管理者。 【相關技術】利用第十三章介紹的「觸發程序」技術。
二、建立視界(Views) 【定義】是指用來保護的資料與隱私,不讓未授權的使用者直接取存基底關聯表。 【舉例1】讓不同使用者對於資料有不同的觀點與使用範圍。 例如:教務處是以學生的「學業成績」為主要觀點。 學務處是以學生的「操行成績」為主要觀點。 【舉例2】定義不同的視界,讓使用者看到的資料過濾後的資訊。 例如:一般使用者所看到的資訊只是管理者的部份子集合。 【舉例3】有保密與資料隱藏的作用。 例如:個人可以看到個人全部資訊,但是,無法觀看他人的資料 (如:薪資、紅利、年終獎金等)。 【相關技術】利用第十五章介紹的「VIEW視界」技術。
三、存取權限的管控(Authority Control) 【定義】是指對不同的使用者分別「授予」其不同的存取權限。 【例如】在SQL Server中可用GRANT與REVOKE的指令來「授予」與「撤銷」使用者的使用權。並建立「授權矩陣」(Authorization Matrix)供稽核人員稽查。 表16-1 授權矩陣的例子 關聯表 使用者 關聯表(R1) 關聯表(R2) 關聯表(R3) 關聯表(R4) 一心 All 二聖 Select Insert Delete 三多 None 四維 五福
表16-1 授權矩陣的例子 【說明】 從上面的授權矩陣中,我們可以清楚得知每一位「使用者」與各個「關聯表」之間的權限範圍。其中: 表16-1 授權矩陣的例子 關聯表 使用者 關聯表(R1) 關聯表(R2) 關聯表(R3) 關聯表(R4) 一心 All 二聖 Select Insert Delete 三多 None 四維 五福 【說明】 從上面的授權矩陣中,我們可以清楚得知每一位「使用者」與各個「關聯表」之間的權限範圍。其中: (1)All權限:表示使用者具有新增、修改、刪除及查詢的全部權限。 例如:管理者。 (2)Select權限:表示使用者只能對某一關聯表進行「查詢」功能。 例如:一般使用者。 (3)Delete權限:表示使用者只能對某一關聯表進行「刪除」功能。 (4)Insert權限:表示使用者只能對某一關聯表進行「新增」功能。 (5)None權限:表示使用者完全沒有存取權力。
【舉例】 以「三多」使用者為例,資料庫管理師(DBA)可以撰寫以下列指令來限制使用者的權限: 【舉例】 以「三多」使用者為例,資料庫管理師(DBA)可以撰寫以下列指令來限制使用者的權限: Grant All on Table R1 to 三多 Grant Select on Table R2 to 三多 Grant Select on Table R4 to 三多 Revoke All on Table R3 from 三多
兩種策略 一般而言,資料庫管理師(DBA)可以使用下列兩種策略來「授予」使用者權限: 《策略一》電子公文例 《策略二》客戶訂購單為例
《策略一》電子公文例 依照「管理層級」來授予使用者不同的「密件資料」 密件資料 管理層級 絕對機密 極機密 機密 密 一般 董事長 All 總經理 None Select 部門經理 組長 員工
《策略二》客戶訂購單為例 依照「上、下班時間」來授予使用者的使用權限 有效時間 管理層級 上班時間 下班時間 董事長 All 總經理 《策略二》客戶訂購單為例 依照「上、下班時間」來授予使用者的使用權限 有效時間 管理層級 上班時間 下班時間 董事長 All 總經理 部門經理 INSERT,UPDATE,SELECT 組長 INSERT,SELECT 員工 SELECT
16-5 資料備份的媒體 一般而言,我們在備份資料庫時,常用的儲存媒體有以下三種: 一、磁帶(Tape) 16-5 資料備份的媒體 一般而言,我們在備份資料庫時,常用的儲存媒體有以下三種: 一、磁帶(Tape) 它是一種早期的大型主機的備份設備。磁帶類似錄音帶,它是以循序方式將資料寫入磁帶中。 二、硬式磁碟(Hard Disk) 目前大部份的資料庫都是利用另一台硬式磁碟作為備份裝置。 例如:我們可以使用USB介面的外接式硬碟來備份資料。 三、可燒錄光碟(DVD) 是指利用高容量的光碟片來備份資料。
16-6 資料備份的檔案及方法 當我們建立完成一個資料庫系統之後,就可以開始與應用程式連結運作,並且逐漸的建立許多資料,而當資料庫非常龐大時,資料庫管理者的工作就是要確保整個資料庫的安全性及完整性,但是,在一些不可預期的情況之下,可能會導致資料庫的毀損,以致於產生無法挽救的局面。 因此,為了資料庫的安全性,資料庫中的資料必須定期地備份(Backup) ,以防因當機、突然停電、磁碟毀損等突發狀況所造成的損害。
資料備份 【定義】 備份(Backup)資料庫是身為一位管理者都應該要具備的常識與技能,其最主要的目的是能夠防護資料庫的安全。 資料備份 【定義】 備份(Backup)資料庫是身為一位管理者都應該要具備的常識與技能,其最主要的目的是能夠防護資料庫的安全。 【資料檔案類型】 基本上,在資料庫中需要備份的資料檔案有兩種: 第一種就是主要的「資料庫檔案」,其副檔名為「.mdf」。 第二種就是「交易記錄檔」,其副檔名為「.ldf」。
兩個檔案的儲存預設路徑 因此,資料庫管理師(DBA)在執行備份時,除了備份主要的「資料庫檔案」外,還必須要同時備份「交易記錄檔」。 兩個檔案的儲存預設路徑 因此,資料庫管理師(DBA)在執行備份時,除了備份主要的「資料庫檔案」外,還必須要同時備份「交易記錄檔」。 以上兩個檔案的儲存預設路徑為: C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
備份的三種方法 【注意】當我們想要備份上圖中這兩個檔案到其他儲存設備時,則我們有三種方法: 第一種:執行「卸離」功能 備份的三種方法 【注意】當我們想要備份上圖中這兩個檔案到其他儲存設備時,則我們有三種方法: 第一種:執行「卸離」功能 第二種:執行「離線工作」功能 第三種:撰寫「BACKUP指令」
第一種:執行「卸離」功能 利用Microsoft SQL Server Management Studio環境中
第二種:執行「離線工作」功能 利用Microsoft SQL Server Management Studio環境中
第三種:撰寫「BACKUP指令」 利用Microsoft SQL Server Management Studio環境中 在SQL Server中還提供線上備份的功能,可以讓我們在異動資料的存取時,不須先停止SQL Server的連接,就可以進行線上備份的作業。 註:若要指定實體備份裝置,請使用 DISK 或 TAPE 選項: { DISK | TAPE } =實體備份裝置名稱 BACKUP語法 BACKUP DATABASE 資料庫名稱 TO <備份裝置位置> [WITH <還原選項>]
【實例】請利用BACKUP指令來備份ch1_DB資料庫到C碟中。 BACKUP DATABASE ch1_DB TO DISK=‘c:\ch1_DATA_BAK.bak’ BACKUP LOG ch1_DB TO DISK='c:\ch1_LOG_BAK.bak’
註:以上三種方法都屬於「完整資料庫備份」,它會備份整個資料庫。
SQL Server中有四種備份型式 基本上,在SQL Server中有四種備份型式: (1)完整資料庫備份 (2) 差異資料庫備份 (3)交易記錄檔備份 (4)檔案及檔案群組 各位讀者如果對SQL Server的四種備份型式有興趣的話,可以參考「SQL Server資料庫管理」的相關書籍。
16-7 資料的還原機制 當我們平常有作備份的習慣之後,就可以比較放心資料庫的安全,但是如果被網站駭客入侵或不小心而損壞時,我們就可以將平常所備份的資料庫還原回來,雖然我們在前一節已經學會了資料庫的備份,我們也必須要學會資料庫的還原,因為資料庫的備份與還原是相輔相成的,缺一不可。 【定義】是指將備份在儲存媒體的資料回存資料庫系統。 【使用時機】 1.人為的錯誤 2.儲存設備的損壞 3.電腦病毒
【實例】 假設我們的「ch1_DB」資料庫被網站駭客入侵或不小心而損壞時,則我們可以利用「還原機制」來進行回復。其常用的方法有兩種: 【實例】 假設我們的「ch1_DB」資料庫被網站駭客入侵或不小心而損壞時,則我們可以利用「還原機制」來進行回復。其常用的方法有兩種: 第一種:執行「附加」功能(Microsoft SQL Server Management Studio環境中) 【注意】 利用此種方法還原時,其條件就是備份時是使用「卸離」與「離線工作」功能,將原先的資料庫及交易記錄備份到其他的設備中才可以。
第二種:撰寫「RESTORE指令」(Microsoft SQL Server Management Studio環境中) 利用此種方法,其條件就是在ch16-6章節中,利用「BACKUP指令」來進行備份動作。 註: WITH <還原選項>可省略 RESTORE語法 RESTORE DATABASE 資料庫名稱 FROM <備份裝置位置> [WITH <還原選項>]
【舉例】請利用RESTORE指令來還原剛才備份的資料庫(ch1_DATA_BAK.bak) RESTORE DATABASE ch1_DB FROM DISK='c:\ch1_DATA_BAK.bak’