近幾周互聯(lián)網(wǎng)企業(yè)頻繁暴出各類“癱瘓”事件,網(wǎng)易、支付寶也身負(fù)重傷,而5月28日攜程網(wǎng)站服務(wù)及App全站癱瘓,從事故發(fā)生至恢復(fù)長達近12小時,造成的損失不言而喻。在對攜程事件感到惋惜的同時,讓大家不由感嘆,對數(shù)據(jù)安全問題的重視已迫在眉睫。

隨著數(shù)據(jù)價值的不斷提升,數(shù)據(jù)安全問題里面,最常見的棘手問題為因黑客攻擊而造成的用戶數(shù)據(jù)泄密和丟失??v觀互聯(lián)網(wǎng)高速發(fā)展的這些年,黑客攻擊事件頻發(fā),光用戶數(shù)據(jù)泄密就已有如下九大慘案載入互聯(lián)網(wǎng)史冊。


由以上數(shù)據(jù)統(tǒng)計可以看出,每次黑客攻擊涉及的用戶數(shù)量巨大。另有數(shù)據(jù)稱,近4年的互聯(lián)網(wǎng)安全事故導(dǎo)致11.3億用戶信息泄露。而在福布斯上榜的中國企業(yè)中,大多都曾經(jīng)遭受過攻擊或出現(xiàn)信息泄露,特別是一些掌握大量民眾個人信息的企業(yè)成為黑客攻擊的“重災(zāi)區(qū)”,其中不乏國內(nèi)知名大公司,中國移動、淘寶、騰訊、小米以及12306。

當(dāng)網(wǎng)站受到攻擊,數(shù)據(jù)庫會被破壞,這時需要從備份里面恢復(fù)數(shù)據(jù)庫。防止黑客在入侵了以后,循著網(wǎng)站的備份腳本將備份刪除掉,或者備份設(shè)備被入侵,數(shù)據(jù)庫被破壞造成的備份丟失、泄露,是常規(guī)的備份手段難以解決的問題。因此,將數(shù)據(jù)庫安全地備份到云存儲實際上是一個比較簡單且成本很低的手段。

那么,如何安全地備份數(shù)據(jù)庫到云存儲?牛小七將分三個步驟為大家詳解。

如何導(dǎo)出數(shù)據(jù)

對于小數(shù)據(jù)庫或者低壓力數(shù)據(jù)庫就很簡單了,比如MySQL有mysqldump ,其它數(shù)據(jù)庫也有相對應(yīng)的dump工具,這些都能很好地解決問題。高壓力數(shù)據(jù)庫一般會做一個主從結(jié)構(gòu),如果從數(shù)據(jù)庫能夠停機就很方便,因為從數(shù)據(jù)庫停機了以后不管是用dump還是直接用拷備文件,都能夠快速方便地把數(shù)據(jù)庫給導(dǎo)出來;如果從數(shù)據(jù)庫不能停機,建議在從數(shù)據(jù)庫下面的LVM磁盤層來處理。首先把從數(shù)據(jù)庫設(shè)為只讀并且同步所有數(shù)據(jù)到磁盤(比如 MySQL中的 FLUSHTABLES WITH READ LOCK),這種情況下數(shù)據(jù)庫的讀操作可以繼續(xù),但磁盤上的文件不再更改。

這時,在LVM層執(zhí)行snapshot操作,完成之后,釋放掉數(shù)據(jù)庫中的鎖。再從LVM的snapshot中拷貝文件,就得到一個很完整的數(shù)據(jù)庫,并且不用擔(dān)心備份了事務(wù)中間的狀態(tài)。整個流程也很快,通常可以做到亞秒級的,而且在備份過程中從數(shù)據(jù)庫一直是可讀的,主從同步的延遲也影響很小,所以這個方案比較容易被接受,應(yīng)用也比較廣。

如何安全地加密數(shù)據(jù)

黑客入侵了之后,所有的腳本和很多加密機制都暴露在黑客面前。那么,怎樣才能完成加密又能避免黑客拿到相關(guān)信息來解密你的數(shù)據(jù)呢?一個簡單的方法是用非對稱密鑰,比如gpg就支持非對稱加密,即gpg這邊生成一對公私鑰,私鑰放在自己的電腦好好保存,公鑰可以放在你的服務(wù)器上,用來加密你的數(shù)據(jù),需要從備份恢復(fù)時才需要動用你的私鑰來解密數(shù)據(jù)。

如何安全地上傳數(shù)據(jù)到云存儲

防止客戶順著備份腳本把你的備份刪除或者覆蓋是兩個需要避免的問題。七牛云存儲有上傳憑證的概念,它是是七牛上傳時用來鑒權(quán)的一個工具,它能很好地幫助你解決這個問題:

上傳憑證中的路徑支持通配符,如 /backup/*,前后多次備份都可以使用同一個上傳憑證,不用每次準(zhǔn)備一個新的通配符;

上傳憑證具備有效期的概念,比如設(shè)一個一年的有效期,那么這一年的數(shù)據(jù)備份操作都可以用這個uptoken操作實現(xiàn);

上傳憑證還可以指定是否允許覆蓋原始文件。

例如,指定key的名字是 /backup/*,每次備份都可以用這個上傳憑證來上傳,指定有效期一年且不允許覆蓋,那么就可以做到方便地把你的數(shù)據(jù)備份放到云存儲,不用擔(dān)心黑客刪除或者覆蓋掉你的文件。

此外,七牛還額外做了些事情簡化提高整個備份的健壯性,比如上傳時支持分片上傳的操作,當(dāng)你的數(shù)據(jù)庫比較大,100G或者更大的一個數(shù)據(jù),想要一次性上傳成功,即使機房到機房上傳也是比較痛苦的,那么引入分片上傳的操作就可以提高上傳成功率。

備注:

上傳憑證的細(xì)節(jié)可以參考:

http://developer.qiniu.com/docs/v6/api/reference/security/upload-token.html

有一些開源項目也是關(guān)于如何備份數(shù)據(jù)庫到七牛的,比如:

* Ruby: https://github.com/lidaobing/backup2qiniu

* C#: https://github.com/abelyao/qiniu-backup

* Python: https://github.com/chitosai/backup2qiniu

大家也可以參考七牛的合作伙伴多備份的技術(shù)方案,也能為大家提供備份服務(wù)。

分享到

sunyingying

相關(guān)推薦