Backup
如何防止管理員同時刪除伺服器及其云備份?
我有一些(虛擬)伺服器。他們使用應用程序密鑰在 Backblaze B2 上備份自己。
我想僱一個人來幫助我管理這些伺服器。
當該人獲得對伺服器的 root 訪問權限(我想要)時,他還可以訪問 B2 應用程序密鑰。這意味著他可以刪除伺服器和備份。
我可以使用什麼程序/設置來防範這種極端情況?我確實有離線備份,但這些是每月一次,而 B2 備份是每天一次。
這是如何做到的:
- 在 Backblaze B2 上,創建一個不能刪除文件的應用程序密鑰:
b2 create-key --bucket MyBucket MyKeyName listBuckets,listFiles,readFiles,writeFiles
- 設置備份,以便它使用該密鑰並且不嘗試刪除舊的備份文件。例如,在 中
duplicity
,不要使用remove-older-than
、remove-all-but-n-full
或remove-all-inc-of-but-n-full
; 在duply
,不要使用purge
或purgeIncr
。- 要刪除舊備份,請在儲存桶上設置自定義生命週期設置;例如,設置以開頭的行
duplicity-full
360天后隱藏,再360天后刪除;duplicity-inc
對於以和開頭的文件,依此類推duplicity-new
。更新:
B2 實際上並沒有提供任何“刪除文件”的功能。每次您替換同一個文件時,它都會保留其歷史記錄,因此一個文件可以有“版本”——最新的版本通常就是您需要的版本。B2 提供的是“隱藏”文件的功能。當您隱藏一個文件時,您實際上是在文件的歷史記錄中記錄該文件被“刪除”,您可以添加一個新的文件版本,即隱藏或刪除的文件。
除此之外,B2 還提供實際刪除文件版本的功能。沒有 deleteFiles 權限的使用者實際上有隱藏文件的權限,但沒有刪除文件版本的權限。
在我看來,duplicity 的
remove-...
功能應該通過隱藏文件來實現。(然後由儲存桶的配置在一段時間後實際刪除這些隱藏文件版本。)但是 duplicity 的 B2 的後端不這樣做;它的作用是實際刪除文件版本。
在某些環境中,您只需將工作分成兩個團隊 - 一個團隊執行/保護伺服器,另一個執行/保護備份。
另一部分更重要的是,imo 更重要的是:如果備份是可寫的,尤其是來自正在備份的系統,那麼它就不是一個好的備份。
許多工具(如 borg)中的系統性問題。最好(在雲世界中)將備份推送到 AWS Glacier,同時將它們儲存到 S3 中,角色只能創建它們。有刪除的時間表,沒有人需要能夠“快速”做到這一點。
另外,不要忘記有關於這些東西的書籍。