使用者上傳文件的備份策略
注意:備份儲存在 Amazon S3 上的數據與此類似,但相當陳舊,並且不涉及常見做法。
我們的服務涉及每個使用者上傳幾個文件。有數十萬使用者將不斷增加。
我們使用 AWS 作為我們的基礎設施,目前所有文件都直接上傳並儲存在 S3 中。頂級文件夾大約 75 GB 並且還在增長。
很長一段時間以來,我們都有一個腳本通過 S3 API 將每個文件複製到另一個文件夾中來進行夜間備份。過去幾個月,儲存成本變得巨大,因此我們轉而僅儲存每兩週一次的備份。
保留備份的原因是業務依賴於使用者上傳的數據。想想 Dropbox、Flickr 或 Giphy。
我們不擔心 S3 失去數據,而是由於人為錯誤,無論我們採取多少預防措施,這種情況更有可能發生。在這種情況下,我們應該能夠將數據恢復到某個時間點。
但是,S3 備份策略似乎值得懷疑,因為備份似乎沒有正確進行。有時備份的大小似乎非常低,這意味著 S3 複製操作不起作用 - 即使使用 S3 Web 控制台複製粘貼包含大量文件的文件夾也無法正常工作並在部分完成後掛起,讓我們更加懷疑 S3 上的大型複制操作。
我們知道 S3 對象版本控制,但它似乎不是用於減輕人為錯誤(如刪除儲存桶)影響的備份解決方案的正確解決方案。
依賴使用者上傳文件的企業對文件採取什麼備份策略?
典型的策略包括:
- 啟用儲存桶版本控制,以及
- 啟用 MFA 刪除。
啟用儲存桶版本控制將在覆蓋和刪除的情況下保留文件版本。如果發生這種情況,您可以恢復文件的先前版本。
啟用 MFA-delete 需要有人在每次想要刪除文件時使用 MFA 密鑰。在這種情況下,意外刪除非常困難。
只要儲存桶包含數據,就無法刪除儲存桶。因此,為了刪除儲存桶,需要先刪除所有文件。
您可以通過將儲存桶策略添加到您的儲存桶來阻止該
s3:DeleteObject
命令來變得更強大。通過這樣做,在儲存桶級別禁止刪除對象;沒有人能夠刪除對象,即使他們擁有權限和 MFA 設備。您可以做的另一件事是將文件複製到另一個儲存桶中。使用生命週期規則,您的對象可以每天自動複製到另一個區域的另一個儲存桶中。
TL;DR、儲存桶版本控制和 MFA 刪除通常足以防止意外數據失去。只有惡意使用者才能真正破壞數據。但是您也可以使用儲存桶策略來更多地保護您的儲存桶。