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