Backup

如何防止管理員同時刪除伺服器及其云備份?

  • June 4, 2020

我有一些(虛擬)伺服器。他們使用應用程序密鑰在 Backblaze B2 上備份自己。

我想僱一個人來幫助我管理這些伺服器。

當該人獲得對伺服器的 root 訪問權限(我想要)時,他還可以訪問 B2 應用程序密鑰。這意味著他可以刪除伺服器備份。

我可以使用什麼程序/設置來防範這種極端情況?我確實有離線備份,但這些是每月一次,而 B2 備份是每天一次。

這是如何做到的:

  1. 在 Backblaze B2 上,創建一個不能刪除文件的應用程序密鑰:
b2 create-key --bucket MyBucket MyKeyName listBuckets,listFiles,readFiles,writeFiles
  1. 設置備份,以便它使用該密鑰並且不嘗試刪除舊的備份文件。例如,在 中duplicity,不要使用remove-older-thanremove-all-but-n-fullremove-all-inc-of-but-n-full; 在duply,不要使用purgepurgeIncr
  2. 要刪除舊備份,請在儲存桶上設置自定義生命週期設置;例如,設置以開頭的行duplicity-full360天后隱藏,再360天后刪除;duplicity-inc對於以和開頭的文件,依此類推duplicity-new

更新:

B2 實際上並沒有提供任何“刪除文件”的功能。每次您替換同一個文件時,它都會保留其歷史記錄,因此一個文件可以有“版本”——最新的版本通常就是您需要的版本。B2 提供的是“隱藏”文件的功能。當您隱藏一個文件時,您實際上是在文件的歷史記錄中記錄該文件被“刪除”,您可以添加一個新的文件版本,即隱藏或刪除的文件。

除此之外,B2 還提供實際刪除文件版本的功能。沒有 deleteFiles 權限的使用者實際上有隱藏文件的權限,但沒有刪除文件版本的權限。

在我看來,duplicity 的remove-...功能應該通過隱藏文件來實現。(然後由儲存桶的配置在一段時間後實際刪除這些隱藏文件版本。)但是 duplicity 的 B2 的後端不這樣做;它的作用是實際刪除文件版本。

在某些環境中,您只需將工作分成兩個團隊 - 一個團隊執行/保護伺服器,另一個執行/保護備份。

另一部分更重要的是,imo 更重要的是:如果備份是可寫的,尤其是來自正在備份的系統,那麼它就不是一個好的備份。

許多工具(如 borg)中的系統性問題。最好(在雲世界中)將備份推送到 AWS Glacier,同時將它們儲存到 S3 中,角色只能創建它們。有刪除的時間表,沒有人需要能夠“快速”做到這一點。

另外,不要忘記有關於這些東西的書籍。

引用自:https://serverfault.com/questions/1000971