1 / 18

MySQL 資料庫安全管理

MySQL 資料庫安全管理. ▊Outlines. MySQL 的安全機制 MySQL 權限系統 保護使用者帳戸 系統安全管理. ▊MySQL 的安全機制. 我們要登錄 MySQL 資料庫時,需要輸入帳號和密碼。但是 MySQL 資料庫和作業系統的帳號和密碼不一定要相同。 MySQL 會將權限設定在 MySQL 資料庫的五個資料表中。 MySQL 資料庫底下有六個主要的資料表格: columns_priv 資料表、 db 資料表、 func 資料表、 host 資料表、 tables_priv 資料表和 user 資料表。 其中和權限有關的資料表有五個:

stian
Download Presentation

MySQL 資料庫安全管理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MySQL資料庫安全管理

  2. ▊Outlines • MySQL的安全機制 • MySQL權限系統 • 保護使用者帳戸 • 系統安全管理

  3. ▊MySQL的安全機制 • 我們要登錄MySQL資料庫時,需要輸入帳號和密碼。但是MySQL資料庫和作業系統的帳號和密碼不一定要相同。 • MySQL會將權限設定在MySQL資料庫的五個資料表中。 • MySQL資料庫底下有六個主要的資料表格:columns_priv資料表、db資料表、func資料表、host資料表、tables_priv資料表和user資料表。 • 其中和權限有關的資料表有五個: • columns_priv:和特定欄位的權限有關 • db:對資料庫的權限設定有關 • host:對特定連線主機和使用者組合的權限有關 • tables_priv:對資料表的權限設定有關 • user:和全域性的權限有關。

  4. MySQL權限系統 • MySQL在權限系統上可分為兩個階段: • 檢查使用者是否擁有登入到MySQL資料庫系統的權限(驗証階段) • 透過授權資料表來判斷是否擁有足夠的特定查詢指令權限(授權階段)

  5. 第一階段:驗証階段 • 檢查使用者是否擁有登入到MySQL資料庫系統的權限 • 當我們要連接到MySQL資料庫伺服器時,我們輸入使用者名稱(username)、連線主機(host)和密碼(password)。這時,MySQL會檢查使用者資料表 (user table)來看看我們是否可以連線, 如果不符合即不會連結到該伺服器。

  6. 我們使用describe user來顯示我們user資料表的欄位內容。 • 有使用者的名稱User、密碼Password和主機Host,也有我們SQL敘述的權限,而權限的類型Type是屬於Enum(‘n’,’y’),’有’或’沒有’。 • 在user資料表中不允許使用者名稱出現萬用字元’%’。 • 一般使用者通常沒有全域性的權限。

  7. 在user資料表的記錄,記載著某一個使用者是否有全域性的權限。在user資料表的記錄,記載著某一個使用者是否有全域性的權限。 • 右表為欄位名稱所對應的權限內容,就部份內容說明如下: • Alter_priv權限允許使用者修改資料表的內容 • Create_priv則設定使用者是否可以新建資料庫和資料表 • Delete_priv權限設定使用者是否可以執行刪除資料(DELETE)敘述

  8. 第二階段:授權階段 • 透過授權資料表來判斷是否擁有足夠的特定查詢指令權限。 • 當使用者進入MySQL資料庫後,db、host、tables_priv、columns_priv資料表會設定使用者的各項權限。 • 在進行特定指令之前,MySQL會依據授權資料表來判定該使用者是否擁有足的權限。

  9. 我們使用describe db來顯示我們db資料表的欄位內容。 • 有使用者的名稱User、資料庫Db和主機Host,也有我們SQL敘述的權限,而權限的類型Type是屬於Enum(‘n’,’y’),’有’或’沒有’。 • 在db資料表中不允許使用者名稱出現萬用字元’%’。

  10. 我們使用describe host來顯示我們Host資料表的欄位內容。 • 在這裏有資料庫Db和主機Host,也有我們SQL敘述的權限,而權限的類型Type是屬於Enum(‘n’,’y’),’有’或’沒有’。 • MySQL將db和host資料表配合使用來控制存取資料庫的權限。

  11. 我們使用describe tables_priv來顯示我們資料表tables_priv的欄位內容。 • 在這裏有資料庫Db、使用者User和主機Host。

  12. 我們使用describe columns_priv來顯示我們columns_priv資料表的欄位內容。

  13. 我們可以使用show grants敘述來查看使用者目前的權限。 • root是超級使用者,一般我們都授與全部(ALL)的權限(PRIVILEGES)給他,localhost是我們主機的名稱。

  14. lulu是一般使用者,localhost是我們主機的名稱。lulu的權限有select、insert、update、delete,而辨別lulu的密碼為已經加密過的’19b68057189b027f’。lulu是一般使用者,localhost是我們主機的名稱。lulu的權限有select、insert、update、delete,而辨別lulu的密碼為已經加密過的’19b68057189b027f’。

  15. 保護使用者帳戸 • 設定root密碼 • 否則任何人只要使用root 這個超級使用者代號,皆能進入該系統。 • 刪除匿名帳戸 • 不論在Windows或Linux作業系統,MySQL在安裝後,皆會產生匿名帳號,為求安全起見,可利用下列方式來刪除匿名帳號: Delete from user where user=“”; Delete from db where user=“”; • 危險的權限 (設定管理者層級的權限給其他人時) • Process: 允許使用者使用指令 “Show processlist” ,這樣將會揭露所有的查詢執行程序 ,等於是讓使用者資料曝光。 • With Grant Option: 若給予其他使用者此權限,即准許使用者彼此分享權限,可能會導致DBA 辛辛苦苦建立的權限架構崩潰。 • File: 可讓使用者藉由指令 “Load data infile”從伺服器載入檔案(密碼檔或資料庫檔等)。

  16. 管理者層級權限

  17. ▊系統安全管理 • For Database Server: • MySQL資料庫使用存取控制列表(ACL)的方式來管理權限。 • 資料庫伺服器會維護一組儲存使用者權限的資料表,這組資料表所記載的權限可以針對資料庫、資料表或欄位來對不同的使用者作授權。 • For System: • MySQL會以常駐程式的方式來提供服務,因此我們的作業系統和網路服務的安全機制也需同時考量。 • 若無法控制作業系統內的檔案存取,而耗費時間去規劃MySQL的使用者權限設定,到頭來會白忙一場。所以需注意作業系統相關的檔案與目錄的存取權限。 • 另外,可以使用防火牆來隔絕不安全的區域。

  18. 其它注意事項: • 考慮使用SSL (Secure Sockets Layer) 連線 • 在網路上要傳送重要訊息時(ex: 資金訊息、交易訊息、信用卡資料…等),為避免駭客竊聽MySQL與用戸端之間的封包,可以使用SSL安全通訊協定來加密。 • 採用RC4, MD5及RSA等加密演算法。 • 在網上買東西,當進入輸入信用卡號碼的網頁時,若該網頁的URL是以https://開頭,那個s就是SSL的意思。 • 注意主機安全 • 資料庫是一個企業的命脈,因此資料庫主機也必須做好保全的工作 (ex: 備份)。 • 要防止電源被切斷、主機被竊…等事項。

More Related