譯者 | 陳峻
審校 | 孫淑娟
創(chuàng)新式的開發(fā)對于碼農(nóng)來說往往是一項艱巨的“修行”任務(wù)。每個GitLab用戶都或多或少地認(rèn)識到,源代碼對于保障DevOps團(tuán)隊能夠不間斷地開展工作流程的重要性。
有人也許會問:GitLab可謂最可靠的源代碼管理(SCM)工具提供平臺之一。它會發(fā)生什么狀況呢?作為一個開源的開放性平臺,GitLab不可避免地會受到諸如:服務(wù)中斷、勒索軟件、以及系統(tǒng)宕機(jī)等各種潛在威脅。這些有的源自GitLab服務(wù)器受到攻擊,有的來自GitLab數(shù)據(jù)庫的自身故障。為此,您和您的團(tuán)隊?wèi)?yīng)始終為各種突發(fā)情況提前做好準(zhǔn)備,即:為自己的GitLab數(shù)據(jù)建立一個強(qiáng)大的備份機(jī)制。同時,您也應(yīng)當(dāng)保證能夠?qū)⒛J(rèn)的備份策略,集成到自己的DevSecOps流程、以及CI/CD管道中。
一、GitLab備份應(yīng)該包含什么?
一旦決定了待備份的GitLab環(huán)境,我們就應(yīng)該確保GitLab的備份內(nèi)容包含了各種GitLab存儲庫和元數(shù)據(jù)。我們可以將此處的“元數(shù)據(jù)”,理解為針對各類Wiki、問題、問題注釋、部署密鑰、合并請求、LFS(Linux from Scratch,一種從網(wǎng)上直接下載源碼,從頭編譯Linux的安裝方式)、標(biāo)簽、Webhook、里程碑、發(fā)布、操作等組件和環(huán)節(jié)的備份。只有備份好了這些,開發(fā)團(tuán)隊和整個公司在項目中用到的所有Git存儲庫數(shù)據(jù),才能得到充分的保護(hù)。
二、備份策略的關(guān)鍵特性
如果您已梳理清楚了手頭的工作流程,那么便可以開始制定備份策略了。為了確保工作流程的不間斷,我們應(yīng)該按需進(jìn)行多重備份,從而不僅可以及時恢復(fù)GitLab數(shù)據(jù),而且能夠滿足審計、合規(guī)、以及安全性等需求。下面便是一些值得注意的安全性要素:
- AES加密以及自用的各種動態(tài)與靜態(tài)加密密鑰;
- 區(qū)分靈活的、長期的以及無限期的保存需求;
- 對舊的、未使用的存儲庫進(jìn)行歸檔的可行性;
- 通過報告和郵件通知等監(jiān)控方式,來檢查GitLab備份的執(zhí)行情況;
- 對勒索軟件予以防護(hù);
- 檢查災(zāi)難恢復(fù)技術(shù)是否滿足恢復(fù)目標(biāo)。
上面只是與完善備份策略相關(guān)的基本安全方面。如果您想制定GitLab環(huán)境的完整備份計劃,則需要考慮并構(gòu)建包含各種高級備份功能的替代性備份策略。
1.3-2-1備份規(guī)則
如果DevOps團(tuán)隊已經(jīng)為某些源代碼日夜奮戰(zhàn)了許久,那么一旦出現(xiàn)GitLab的中斷或備份失敗,則會導(dǎo)致他們的成果覆水難收,同時也會讓企業(yè)蒙受財務(wù)上的損失。對此,我向您介紹一個3-2-1的“黃金”備用規(guī)則。即:一家公司應(yīng)當(dāng)將3個備份副本保存在2個不同的存儲實例中,并且至少有1個處于離線。因此,您需要注意備份復(fù)制的相關(guān)問題,以便它能夠協(xié)助您將本機(jī)備份的副本保存到多個位置,進(jìn)而實現(xiàn)服務(wù)的冗余和業(yè)務(wù)的連續(xù)性。
當(dāng)然,如果您的DevOps備份軟件具有多存儲兼容性的話,則可以大幅節(jié)省花費(fèi)在軟件上的開銷。目前,AWS S3、Backblaze B2、谷歌云存儲(Google Cloud Storage)、Azure Blob Storage、GitProtect Cloud以及其他任何與S3、本地或混合兼容的公有云,都可以提供此類兼容性。如果您不清楚的話,請詢問您的備份服務(wù)提供商,以確認(rèn)是否可以充分利用已有的基礎(chǔ)設(shè)施,將代碼數(shù)據(jù)、連同自己的存儲空間,一并備份到不同的目的地處。
2.需無限保留的數(shù)據(jù)
保留期限也是我們在制定備份過程中,需要重點(diǎn)考慮的方面。對于一些非常重要的GitLab數(shù)據(jù),您可以將其保留期限設(shè)置為5年、10年、甚至是無限期保留。如果您的代碼中包含了個人隱私數(shù)據(jù),那么其保存期限就需要滿足本地的法律、法規(guī)、以及共同責(zé)任的要求。
3.對勒索軟件的防護(hù)
備份GitLab數(shù)據(jù)可謂是抵御勒索軟件攻擊的最后一道防線。因此,如果您的GitLab備份方案是針對防范勒索軟件的話,它會在備份的過程中,對GitLab數(shù)據(jù)執(zhí)行壓縮和加密,進(jìn)而保證數(shù)據(jù)在其存儲狀態(tài)是不可執(zhí)行的。據(jù)此,即使您的備份數(shù)據(jù)被某些勒索軟件所截獲,也不會被輕易執(zhí)行或無限量地傳播。此外,在最壞的情況下,就算某些勒索軟件可以加密、修改或刪除已截獲到的數(shù)據(jù),您手頭仍有一個備份,可方便您根據(jù)確切的時間點(diǎn),恢復(fù)所需的GitLab副本,進(jìn)而保證您的團(tuán)隊將在毫無拖延地情況下,繼續(xù)開展項目。
4.給審計與合規(guī)提供監(jiān)測報告
常言道:擁有信息的人正統(tǒng)治著世界。及時掌握任何有關(guān)GitLab備份本身、備份失敗、以及備份狀態(tài)的信息,可以協(xié)助DevOps團(tuán)隊厘清他們所碰到的問題,并能夠?qū)浞輸?shù)據(jù)的可用性進(jìn)行實時把控。軟件項目團(tuán)隊往往需要通過Slack通知、數(shù)據(jù)驅(qū)動的儀表板、電子郵件通知、以及高級審計日志,來跟蹤備份系統(tǒng)的每一項執(zhí)行操作。此類信息不但能夠讓您的團(tuán)隊受益,而且可以為審計和安全認(rèn)證等方面,提供詳細(xì)的備份完成情況的報告。
三、恢復(fù)過程應(yīng)包含哪些?
根據(jù)備份策略,對GitLab執(zhí)行有效的備份,只是整個災(zāi)備計劃的一部分。我們還需要規(guī)劃好能夠盡快恢復(fù)GitLab備份數(shù)據(jù)的策略。也就是說,災(zāi)難恢復(fù)計劃應(yīng)確保您的業(yè)務(wù)在服務(wù)中斷/宕機(jī)、(非)故意的人為錯誤、以及因勒索軟件攻擊而造成數(shù)據(jù)丟失等可能的情況下,仍能保持業(yè)務(wù)的連續(xù)性。
下面是我們在制定恢復(fù)策略時,需要仔細(xì)考慮的方面:
- 需要還原的數(shù)據(jù)所處時間點(diǎn);
- 存儲庫和選定元數(shù)據(jù)的恢復(fù)程度與數(shù)據(jù)量;
- 用于從存儲庫備份數(shù)據(jù)進(jìn)行恢復(fù)的GitLab帳戶;
- 是否以交叉恢復(fù)的方式,從GitLab恢復(fù)到另一個Git托管平臺(如:GitHub或Bitbucket),這在工具之間進(jìn)行遷移時,非常實用;
- 恢復(fù)到本地設(shè)備的可能性。
在實踐中,如果您可以將備份和恢復(fù)兩項操作歸并到一個應(yīng)用之中的話,則可以大幅節(jié)省團(tuán)隊的時間。
有了恢復(fù)策略,我們在討論面對GitLab、基礎(chǔ)設(shè)施、以及備份方案出現(xiàn)故障等場景時,咱們的團(tuán)隊能夠如何準(zhǔn)備:
1.GitLab出現(xiàn)中斷
雖然GitLab是一個可靠的托管服務(wù)提供平臺,但是發(fā)生中斷的可能性還是存在的。對此,您既可以將GitLab實例以.git文件的方式,恢復(fù)到自己的計算機(jī)上;也可以基于交叉恢復(fù)的方式,直接將GitLab的副本,恢復(fù)到另一個Git托管平臺。
2.您的基礎(chǔ)架構(gòu)出現(xiàn)中斷
基于前文提到的3-2-1備份規(guī)則,哪怕您的基礎(chǔ)架構(gòu)出現(xiàn)中斷,您總會在2處目的地?fù)碛兄?個備份副本,而且其中1個處于離線狀態(tài)。因此,您可以從任何一個時間點(diǎn)獲得備份副本,并輕松地恢復(fù)GitLab存儲庫及其元數(shù)據(jù)。
3.備份方案本身出現(xiàn)故障
在決定使用第三方的備份方案之前,您有必要確認(rèn)其已為潛在的中斷做好了準(zhǔn)備,并且可以在真正發(fā)生時,為您提供適當(dāng)、可靠的數(shù)據(jù)恢復(fù)支持。例如:如果它們能夠與您共享在本地應(yīng)用中安裝的權(quán)限,那么一旦其SaaS環(huán)境出現(xiàn)故障,您便可以輕松地從本地應(yīng)用中,直接訪問到自己的數(shù)據(jù)。
四、小結(jié)
綜上所述,為了應(yīng)對GitLab可能出現(xiàn)的中斷,您既可以自行管理備份過程,也可以編寫專門的GitLab備份腳本并制作快照的命令,還可以選擇第三方備份軟件的自動備份服務(wù)。同時,您需要實現(xiàn)設(shè)定好在災(zāi)難發(fā)生時,執(zhí)行哪些恢復(fù)流程,讓整個GitLab環(huán)境盡快可供訪問,以確保團(tuán)隊工作的連續(xù)性。
原文鏈接:https://dzone.com/articles/devops-security-which-gitlab-backup-best-practices
譯者介紹
陳峻 (Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項目實施經(jīng)驗,善于對內(nèi)外部資源與風(fēng)險實施管控,專注傳播網(wǎng)絡(luò)與信息安全知識與經(jīng)驗。