MySQL數(shù)據(jù)庫安全解決方案_第1頁
MySQL數(shù)據(jù)庫安全解決方案_第2頁
MySQL數(shù)據(jù)庫安全解決方案_第3頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、MySQL 數(shù)據(jù)庫安全解決方案隨著網(wǎng)絡(luò)的普及, 基于網(wǎng)絡(luò)的應(yīng)用也越來越多。 網(wǎng)絡(luò)數(shù)據(jù)庫就是其中 之一。通過一臺或幾臺服務(wù)器可以為很多客戶提供服務(wù), 這種方式給 人們帶來了很多方便,但也 給不法分子造成了可乘之機。由于數(shù)據(jù) 都是通過網(wǎng)絡(luò)傳輸?shù)模?這就可以在傳輸?shù)倪^程中被截獲, 或者通過非 常手段進入數(shù)據(jù)庫。由于以上原因,數(shù)據(jù)庫安全就顯得十 分重要。 因此,本文就以上問題討論了 MySQL 數(shù)據(jù)庫在網(wǎng)絡(luò)安全方面的一些 功能。帳戶安全帳戶是 MySQL 最簡單的安全措施。每一帳戶都由用戶名、密碼 以及位置(一般由服務(wù)器名、 IP 或通配符)組成。如用戶 john 從 server1 進行登錄可能和

2、john 從 server2 登錄的權(quán)限不同。MySQL 的用戶結(jié)構(gòu)是用戶名 /密碼 /位置。這其中并不包括數(shù)據(jù)庫名。下面的兩條命令為databasel和database2設(shè)置了 SELECT用戶權(quán) 限。GRANT SELECT ON database1.* to 'abc''server1' IDENTIFIEDBY 'password1'GRANT SELECT ON database2.* to 'abc''server1' IDENTIFIED BY 'password2'第一條命令設(shè)置了用

3、戶 abc 在連接數(shù)據(jù)庫 database1 時使用 passwords第二條命令設(shè)置了用戶abc在連接數(shù)據(jù)庫database2時使 用password因此,用戶 abc在連接數(shù)據(jù)庫 databasel和database2 的密碼是不一樣的。上面的設(shè)置是非常有用的。 如果你只想讓用戶對一個數(shù)據(jù)庫進行 有限的訪問, 而對其它數(shù)據(jù)庫不能訪問, 這樣可以對同一個用戶設(shè)置 不同的密碼。 如果不這樣做, 當用戶發(fā)現(xiàn)這個用戶名可以訪問其它數(shù) 據(jù)庫時,那將會造成麻煩。MySQL 使用了很多授權(quán)表來跟蹤用戶和這些用戶的不同權(quán)限。 這些表就是在 mysql 數(shù)據(jù)庫中的 MyISAM 表。將這些安全信息保存 在

4、MySQL 中是非常有意義的。因此,我們可以使用標準的 SQL 來 設(shè)置不同的權(quán)限。一般在 MySQL 數(shù)據(jù)庫中可以使用 3 種不同類型的安全檢查:登錄驗證也就是最常用的用戶名和密碼驗證。 一但你輸入了正確的用戶名 和密碼,這個驗證就可通過。授權(quán)在登錄成功后, 就要求對這個用戶設(shè)置它的具體權(quán)限。 如是否可 以刪除數(shù)據(jù)庫中的表等。訪問控制這個安全類型更具體。 它涉及到這個用戶可以對數(shù)據(jù)表進行什么 樣的操作,如是否可以編輯數(shù)據(jù)庫,是否可以查詢數(shù)據(jù)等等。訪問控制由一些特權(quán)組成,這些特權(quán)涉及到所何使用和操作 MySQL 中的數(shù)據(jù)。它們都是布爾型,即要么允許,要么不允許。下 面是這些特權(quán)的列表:SELE

5、CTSELECT 是設(shè)定用戶是否可以使用 SELECT 來查詢數(shù)據(jù)。如果用 戶沒有這個特權(quán),那么就只能執(zhí)行一些簡單的 SELECT 命令,如計 算 表 達 式 ( SELECT 1+2 ) , 或 是 日 期 轉(zhuǎn) 換 ( SELECTUnix_TIMESTAMP(NOW( ) 等。INSERTUPDATEINDEXINDEX 決定用戶是否可以對表的索引進行設(shè)置。如果用戶沒有 這個權(quán)限,那么將無法設(shè)置表中的索引。ALTERCREATEGRANT如果一個用戶擁有這個 GRANT 權(quán)限,那么他就可以將自己的權(quán) 限授給別的用戶。 也就是說, 這個用戶可以和其它用戶共享自己的權(quán) 限。REFERENCES

6、有了 REFERENCES 權(quán)限,用戶就可以將其它表的一個字段作為 某一個表的外鍵約束。除了以上的權(quán)限外, MySQL 還有一些權(quán)限可以對整個 MySQL 進行操作。Reload這個權(quán)限可以使用戶有權(quán)執(zhí)行各種 FLUSH 命令,如 FLUSH TABLES, FLUSH STATUS 等。Shutdow n這個權(quán)限允許用戶關(guān)閉 MySQLProcess通過這個權(quán)限,用戶可以執(zhí)行SHOW PROCESSLIST和KILL命 令。這些命令可以查看 MySQL 的處理進程,可以通過這種方式查看 SQL 執(zhí)行的細節(jié)。File這個權(quán)限決定用戶是否可以執(zhí)行 LOAD DATA INFILE 命令。給 用戶

7、這個權(quán)限要慎重, 因為有這個權(quán)限的用戶可以將任意的文件裝載 到表中,這樣對 MySQL 是十分危險的。Super這個權(quán)限允許用戶終止任何查詢 (這些查詢可能并不是這個用戶 執(zhí)行的)。以上幾種權(quán)限是非常危險的,在給用戶授權(quán)限時要非常謹慎。NextPageMySQL 中的 SSL以上的帳戶安全只是以普通的 Socket 進行數(shù)據(jù)傳輸?shù)?,這樣非常不安全。因此,MySQL在4.1版以后提供了對 SSL (Secure Scokets Layer)的支持。MySQL使用的是免費的OpenSSL庫。由于 MySQL 的 Linux 版本一般都是隨 Linux 本身一起發(fā)布,因 此,它們默認時都不使用SSL

8、進行傳輸數(shù)據(jù)。如果要打開SSL功能,需要對hava_openss變量進行設(shè)置:MySQL 的 Windows 版本已經(jīng)將 OpenSSL 加入了。也面的命令 是查看你的 MySQL 是否打開了 SSL 功能。SHOW VARIABLES LIKE 'have_ope nssl:+| Variable_name | Value |+| have_openssl | NO |+1 row in set (0.00 sec)如果返回的是NO,那么說明你需要將 OpenSSL編譯進自己的MySQL在有時你可能需要將用戶名和密碼進行加密傳輸。 在這時可以使 用下面 GRANT 命令:GRANT

9、ALL PRIVILEGES ON ssl_only_db.* to 'abc''%' IDENTIFIED BY "password!" REQUIRE SSL;還可以通過 REQUIRE x509 選項進行 SSL 傳輸:GRANT ALL PRIVILEGES ON ssl_only_db.* to 'abc''%' IDENTIFIED BY "password!" REQUIRE x509;你還可以使用 REQUIRE SUBJECT 來指定一個特定的客戶端證 書來訪問數(shù)據(jù)庫。GR

10、ANT ALL PRIVILEGES ON ssl_only_db.* to 'abc''%'IDENTIFIED BY "password!"REQUIRE SUBJECT "/C=US/ST=New York/L=Albany/O=WidgetsInc./CN=client-ray.也許你并不關(guān)心使用的是什么客戶許可, 而僅僅關(guān)心的是你的證 書。那么你可以使用 REQUIRE ISSUER 來實現(xiàn):GRANT ALL PRIVILEGES ON ssl_only_db.* to 'abc''%'

11、IDENTIFIED BY "password!"REQUIRE ISSUER"/C=US/ST=New+20York/L=Albany/O=WidgetsInc./CN=/emailAddress="SSL還可以直接通過密碼進行加密??梢允褂肦EQUIRE CIPHER設(shè)置密碼。GRANT ALL PRIVILEGES ON ssl_only_db.* to 'abc''%' IDENTIFIED BY "password!"REQUIRE CIPHER "

12、;EDH-RSA-DES-CBC3-SHA"上面使用了 GRANT 命令對用戶權(quán)限進行設(shè)置。 而這些信息都是 保存在授權(quán)表中, 這些表是安全系統(tǒng)的心臟。 在這些表中保存了每一 個用戶和客戶機所具有的權(quán)限。 如果正確地操作這些表, 將會對數(shù)據(jù) 庫的安全起到積極的作用,而如果使用不慎,將是非常危險的。下面讓我們來看看 MySQL 中的最要的 5 個授權(quán)表。user用戶表保存了用戶的權(quán)限和被加密的密碼。 這個表負責確定哪些 用戶和客戶機可以連接到服務(wù)器上。host這個表為每一個客戶機分配權(quán)限,它并不考慮用戶的權(quán)限。MySQL 在確定是否接收還是拒絕一個連接時, 首先考慮的是 user 表。

13、 而使用 GRANT 或 REVOKE 命令并不影響 host 表,我們可以通過手 工方式修改這個表中的內(nèi)容。dbdb 表保存了數(shù)據(jù)庫層的權(quán)限信息。tables_priv這個表存儲了表的權(quán)限信息。columns_priv這個表保存了單獨列的權(quán)限信息。 通過這個表, 可以將操作某一 列的權(quán)限授予一個用戶。NextPage哈希加密如果數(shù)據(jù)庫保存了敏感的數(shù)據(jù),如銀行卡密碼,客戶信息等,你 可能想將這些數(shù)據(jù)以加密的形式保存在數(shù)據(jù)庫中。 這樣即使有人進入 了你的數(shù)據(jù)庫,并看到了這些數(shù)據(jù),也很難獲得其中的真實信息。在應(yīng)用程序的大量信息中,也許你只想交很小的一部分進行加 密,如用戶的密碼等。這些密碼不應(yīng)該以

14、明文的形式保存,它們應(yīng)該 以加密的形式保存在數(shù)據(jù)庫中。一般情況下,大多數(shù)系統(tǒng),這其中包 括 MySQL 本身都是使用哈希算法對敏感數(shù)據(jù)進行加密的。哈希加密是單向加密, 也就是說, 被加密的字符串是無法得到原 字符串的。 這種方法使用很有限, 一般只使用在密碼驗證或其它需要 驗證的地方。在比較時并不 是將加密字符串進行解密,而是將輸入 的字符串也使用同樣的方法進行加密, 再和數(shù)據(jù)庫中的加密字符串進 行比較。這樣即使知道了算法并得到了加密字符串,也無 法還原最 初的字符串。銀行卡密碼就是采用的這種方式進行加密。MySQL 提供了 4 個函數(shù)用于哈希加密: PASSWORD, ENCRYPT, SH

15、A1 和 MD5 。下面讓我們試一試這 4 個函數(shù),看看會得到什么結(jié)果。 我們以加密字符串"pa55word"為例進行說明:讓我們先來看看 MD5 函數(shù)SELECT MD5('pa55word');+| MD5('pa55word') |+| a17a41337551d6542fd005e18b43afd4 |1 row in set (0.13 sec)面是 PASSWORD 函數(shù)SELECT PASSWORD('pa55word');+| PASSWORD('pa55word') |+| 1d35c6556

16、b8cab45 |+1 row in set (0.00 sec)面是 ENCRYPT 函數(shù)SELECT ENCRYPT('pa55word');+| ENCRYPT('pa55word') |+| up2Ecb0Hdj25A |+1 row in set (0.17 sec) 上面的每個函數(shù)都返回了一個加密后的字符串。 為了區(qū)分加密字符串的大小寫, 最好在使用 ENCRYPT 生成加密字符串時, 將這個字段定義成 CHAR BINARY 類型。上面列舉了 3 種加密的方法,但我認為使用 MD5 加密是最好的。 這是因為這樣做可以將明文密碼顯示在處理列表中或是查詢?nèi)罩局?,這樣便于跟蹤。 如下面的 INSER

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論