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

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

我有一些(虛擬)伺服器。他們使用應用程式金鑰在 Backblaze B2 上進行自我備份。

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

當該人獲得伺服器的根存取權(我想要的)時,他還可以獲得 B2 應用程式金鑰的存取權限。這意味著他可以刪除伺服器備份。

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

答案1

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

另一部分是,在我看來,更重要的是:如果備份是可寫入的,特別是來自正在備份的系統,那麼它不是一個好的備份。

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

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

答案2

操作方法如下:

  1. 在 Backblaze B2 上,建立一個無法刪除檔案的應用程式金鑰:

    b2 create-key --bucket MyBucket MyKeyName listBuckets,listFiles,readFiles,writeFiles
    
  2. 設定備份,使其使用該金鑰並且不會嘗試刪除舊的備份檔案。例如,在 中duplicity,請勿使用remove-older-thanremove-all-but-n-fullremove-all-inc-of-but-n-full;中duply,不要使用purgepurgeIncr

  3. 若要刪除舊備份,請在儲存桶上設定自訂生命週期設定;例如,設定以 開頭的行在duplicity-full360 天後隱藏,再過 360 天後刪除;對於以duplicity-inc和開頭的文件,依此類推duplicity-new

更新:

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

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

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

答案3

在大多數公有雲上,透過 ssh 存取伺服器並不意味著您可以刪除伺服器。在伺服器上管理和在雲端帳戶中管理之間存在差異。所以,你可以將它們分開。您也可以對權限進行相當多的拆分,尤其是在 Amazon AWS 上。例如,您可以授予某人重新啟動伺服器的權限,但不能刪除它。 AWS 在虛擬機器上具有刪除保護選項。

如今,最佳實踐是使用 Chef/Puppet/Salt/Ansible 等組態管理在伺服器上進行任何更改,而不是實際登入伺服器。

此外,對於AWS,您可以根據需要隨時對伺服器進行快照,這是最有效的備份方式。

相關內容