使用 S3 版本控制、S3 物件鎖定和 S3 複寫,保護 Amazon S3 上的資料免遭意外刪除或應用程式錯誤

教學

概觀

Amazon S3 是一種物件儲存服務,具有領先業界的可擴展性、資料可用性、安全性、效能和 99.999999999% (11 個 9) 的資料耐久性。但是,儲存的耐久性再高也無法防範可能導致應用程式損毀或資料遭到意外刪除的人為錯誤或軟體錯誤。隨著勒索軟體事件的增加,各種規模的客戶都在評估是否有其他保護選項可以防止其在 Amazon S3 中的重要資料遭到惡意竄改。

如同任何資料之處理,最好的做法是備份並採取保護措施以防止惡意或意外刪除。這份 Amazon S3 入門指南會向您展示如何遵循 Amazon S3 版本控制的最佳實務,以便您可以保留、擷取和還原儲存在 Amazon S3 儲存貯體中的每個物件的每個版本。然後,您可以在 S3 版本控制之上新增 Amazon S3 物件鎖定,以在固定時間內或無限期地防止資料遭到刪除或覆寫。若要在其他 AWS 區域另外建立資料複本以實現多區域保護,Amazon S3 複寫可與 S3 版本控制和 S3 物件鎖定搭配運作,以便自動地跨 AWS 區域和不同的 AWS 帳戶複製物件。最後,您可以使用 Amazon S3 Storage Lens 將目前資料保護等級的可見性,以及這些功能的使用情況整合到單一儀表板中。

您會完成的目標

  • 建立 Amazon S3 儲存貯體
  • 啟用 S3 版本控制以防止物件遭到覆寫
  • 設定 S3 物件鎖定以防止物件遭到意外刪除
  • 使用 S3 Storage Lens 檢閱 S3 儲存貯體的資料保護狀態

先決條件

您需要一個 AWS 帳戶才能完成本教學。存取此支援頁面,了解有關如何建立和啟用新 AWS 帳戶的詳細資訊

注意:由於我們要示範 S3 物件鎖定,因此在此實驗室中建立的資料要 1 天後才能刪除。

 AWS 經驗

初階

 完成時間

30 分鐘

 完成成本 (使用免費指標)

低於 1 美元 (Amazon S3 定價頁面)

 要求

AWS 帳戶

 使用的服務

 上次更新日期

2022 年 10 月 3 日

實作

步驟 1:建立 Amazon S3 儲存貯體

1.1 – 登入 Amazon S3 主控台

  • 如果您尚未建立 AWS 帳戶,請先建立一個 AWS 帳戶
  • 使用您的帳戶資訊登入 AWS 管理主控台
  • 在 AWS Console 服務搜尋列中,輸入 S3。 在服務搜尋結果區段下,選取 S3

按一下整個教學中的螢幕擷取畫面均可放大影像。

1.2 – 建立 S3 儲存貯體

  • 在左側的導覽窗格中,選擇 Buckets (儲存貯體),然後在 Buckets (儲存貯體) 區段中選擇 Create bucket (建立儲存貯體)。

1.3

  • 為您的儲存貯體輸入一個描述性名稱。儲存貯體名稱在所有 AWS 帳戶中具有全域唯一性。如果您在選取名稱時遇到錯誤,請嘗試使用其他組合。然後,選取您想在其中建立儲存貯體的 AWS Region (AWS 區域)。

1.4

  • 接下來,在 Object Ownership (物件擁有權) 區段中,保留 ACLs disabled (停用 ACL) 的預設設定。除非是需要個別控制每個物件存取權的特殊情況,否則建議您停用 ACL (存取控制清單)。透過 Object Ownership (物件擁有權),您可以停用 ACL 並依賴原則來控制存取權。如需詳細資訊,請瀏覽 Amazon S3 使用者指南

 1.5

  • Block Public Access settings for this bucket (此儲存貯體的 Block Public Access (封鎖公開存取) 設定) 區段中,預設的封鎖公開存取設定適合此工作負載,因此請保留預設設定。

1.6 – 啟用版本控制

  • 接下來,在 Bucket Versioning (儲存貯體版本控制) 區段中,確實地 Enable Bucket Versioning (啟用儲存貯體版本控制)。 Amazon S3 中的版本控制功能可在同一個儲存貯體中保留某個物件的多個變體。您可以使用 S3 版本控制功能來保留、擷取和恢復儲存在儲存貯體中存放的每個物件的每個版本。透過 S3 版本控制功能,您能夠從使用者動作失誤和應用程式故障中更輕鬆地恢復。啟用儲存貯體的版本控制功能後,如果 Amazon S3 同時收到相同物件的多個寫入請求,則會將這些物件全都儲存起來。

1.7 – 啟用預設加密

  • 現在,在 Default encryption (預設加密) 區段中,啟用儲存貯體的預設加密。這些設定會套用到上傳至儲存貯體中的任何物件,在此儲存貯體中,您未在上傳過程中定義靜態加密詳細資訊。針對此工作負載,請在 Server-side encryption (伺服器端加密) 下,選取 Enable (啟用)。然後,在 Encryption key type (加密金鑰類型) 下,選取 Amazon S3-managed keys (SSE-S3) (Amazon S3 受管金鑰 (SSE-S3))。如果 SSE-S3 未能滿足您的工作負載要求,您還可以使用 AWS Key Management Service (AWS KMS)。如需有關 Amazon S3 如何使用 AWS KMS 的更多資訊,請參閱 AWS Key Management Service 開發人員指南

1.8

  • 接下來,在 Advanced settings (進階設定) 區段的 Object Lock (物件鎖定)下,選取 Enable (啟用)。
  • 您可以使用 S3 物件鎖定,透過一次寫入多次讀取 (WORM) 模式儲存物件。S3 物件鎖定可協助在固定時間內或無限期地防止刪除或覆寫物件。您可以使用 S3 物件鎖定來滿足需要 WORM 儲存的法規要求,或作為額外的保護以防止物件遭到變更和刪除。
  • 請注意,此步驟只會在儲存貯體上啟用物件鎖定。在稍後的教學中,我們會設定 Retention Mode (保留模式) 和 Retention Period (保留期間) 等特定設定。
  • 選擇 Create bucket (建立儲存貯體) 以建立 S3 儲存貯體。

步驟 2:設定 S3 版本控制

2.1 – 上傳物件

  • 在工作站上,建立包含 Version 1 文字的文字檔,並將其儲存至工作站。

2.2

  • Amazon S3 主控台搜尋您在步驟 1 中建立的儲存貯體,然後選取該儲存貯體名稱。
  • 接下來,選取物件標籤。然後在 Objects (物件) 區段中,選擇 Upload (上傳)。

2.3

  • 接下來,在 Upload (上傳) 區段中選擇 Add files (新增檔案)。導覽到本機檔案系統,找到您在上面建立的測試檔案。選取相應的檔案,然後選取 Open (開啟)。您的檔案將在 Files and folders (檔案和資料夾) 區段列出。保留其餘選項的預設設定,然後選擇 Upload (上傳) 按鈕。

2.4

  • 檔案上傳作業完成後,系統會顯示狀態訊息,指出上傳作業是否成功。下面這種情況表示檔案已成功上傳。然後選擇 Close (關閉)。
  • 您現在可以在 S3 主控台中看到該物件。

2.5

  • 在工作站上,編輯您建立的檔案。將文字變更為 Version 2,然後使用相同的檔案名稱儲存此檔案。重複步驟 2.2 到 2.4,將更新後的檔案上傳到 Amazon S3。

2.6

  • 若要查看儲存貯體中物件的版本清單,請選擇 Show versions (顯示版本) 選項。主控台會針對每個物件版本顯示唯一的版本 ID、物件版本的建立日期和時間,以及其他屬性。 

您已啟用 S3 物件版本控制,因此該物件的所有版本會繼續保留在 Amazon S3 儲存貯體中,並可供擷取或還原。已啟用 S3 版本控制時,只有 Amazon S3 儲存貯體的擁有者才能永久刪除某個版本。對某個物件執行 DELETE 作業時,後續的簡單 (未建立版本控制) 請求便不會再擷取該物件,但該物件仍會在 S3 中留有先前版本。

啟用版本控制後,簡單的 DELETE 便無法永久刪除物件。相反地,Amazon S3 會在儲存貯體中插入刪除標記,而且該標記會成為該具有新 ID 之物件的目前版本。 

保留非近期版本的物件可能會增加儲存成本。您可以使用生命週期規則,以管理存留期和存放多個物件版本的成本。您可以設定生命週期規則,以永久移除這些舊版本,或以較低的儲存成本獲得額外的保護時段。您也可以設定生命週期規則,使其將先前的版本全部封存至較低成本的 Amazon S3 Glacier Instant RetrievalAmazon S3 Glacier Flexible Retrieval 儲存類別,然後在 100 天後刪除這些版本,這樣您便可以有 100 天的空檔來復原資料的任何變更,同時降低儲存成本。

選取頂層物件左側的核取方塊,然後選擇 Open (開啟)。此物件代表檔案的最新版本,此版本應該會顯示為 Version 2。在較舊版本的物件上重複此程序,並確認其顯示為 Version 1

2.7 – 示範刪除物件

  • 關閉 Show versions (顯示版本) 可收合版本清單。 

文字輸入欄位中輸入 delete,然後選擇 Delete objects (刪除物件) 按鈕。

  • 選擇 Close (關閉)。
  • 然後,您會在 Objects (物件) 標籤中看到該物件已遭刪除。
  • 開啟 Show versions (顯示版本)。 請注意,頂層物件現在會在 Type (類型) 欄下列為刪除標記,但該物件的兩個版本仍然可用。

2.8 – 示範還原物件

  • 若要還原物件,請選取頂層物件的核取方塊以刪除 Delete marker (刪除標記)。然後選擇 Delete (刪除)。
  • 文字輸入欄位中輸入 permanently delete,然後選擇 Delete objects (刪除物件)。
  • 選擇 Close (關閉)。
  • 將刪除標記刪除後已還原物件。
  • 選取頂層物件左側的核取方塊,然後選擇 Open (開啟)。此物件應以 Version 2 開啟。
  • 選取較舊版本的物件左側的核取方塊,然後選擇 Open (開啟)。此物件應以 Version 1 開啟。

2.9 – 永久刪除物件的特定版本

我們也可以不建立刪除標記就刪除物件的特定版本。在下一步中,我們會刪除該物件的最新版本。

  • Show versions (顯示版本) 開關開啟時,選取頂層物件左側的核取方塊,然後選擇 Delete (刪除)。
  • 文字輸入欄位中輸入 permanently delete,然後選擇 Delete objects (刪除物件)。
  • 我們現在已刪除物件的最新版本。
  • 若要確認這一點,請選取剩餘物件左側的核取方塊,然後選擇 Open (開啟)。 
  • 在進行上述選擇時,瀏覽器中隨即會開啟文字為 Version 1 的新標籤。

步驟 3:設定 S3 物件鎖定

3.1

  • 在儲存貯體層級顯示詳細功能。從儲存貯體中選擇 Properties (屬性)。

3.2

  • 向下導覽至 Object lock (物件鎖定) 區段。然後,選擇 Edit (編輯)。

3.3

  • Default rentention (預設保留) 區段中,選擇 Enable (啟用)。
  • Default rentention mode (預設保留模式) 設為 Compliance (合規)。
  • 針對 Default retention period (預設保留期),在文字輸入欄位中輸入 1,並將下拉式方塊保留為 Days (天)。然後,選擇 Save changes (儲存變更)。

我們現在已為任何上傳至儲存貯體的新物件設定預設的 Object Lock (物件鎖定) 設定。儲存貯體中的現有物件不會受這些設定影響。若要鎖定現有物件,您可以使用 S3 Batch Operations

治理模式下,除非有 s3:BypassGovernanceRetention 許可,否則無法覆寫或刪除物件版本或變更其鎖定設定。S3 主控台預設包含 x-amz-bypass-governance-retention:true 標頭。如果您嘗試刪除受治理模式保護的物件,且擁有 s3:BypassGovernanceRetention 許可,則作業會成功。因此,我們在本教學中使用合規模式。

使用合規模式鎖定物件時,任何使用者 (包括根使用者) 都無法刪除物件版本,直到保留期過期為止。此外,也無法變更其保留模式,以及無法縮短保留期。

本教學會示範即使是具有系統管理權限的使用者,也無法刪除受合規模式保護的物件。請注意,已鎖定且無法刪除的物件會繼續計費。若要將本教學的成本降至最低,請確定您已將預設保留時間設定為僅 1 天,而且只上傳小型檔案。

3.4 – 上傳新物件

  • Objects (物件) 標籤內選擇 Upload (上傳)。 

3.5

  • 然後,在 Upload (上傳) 區段的 Files and folders (檔案和資料夾) 下,選擇 Add files (新增檔案)。導覽至本機檔案系統,並選取任一要用於測試的小檔案,然後選擇 Open (開啟)。您的檔案將在 Files and folders (檔案和資料夾) 區段列出。保留其餘選項的預設設定,然後選擇 Upload (上傳)。

3.6

  • 檔案上傳作業完成後,系統會顯示狀態訊息,指出上傳作業是否成功。下面這種情況表示檔案已成功上傳。然後選擇 Close (關閉)。

3.7

  • Objects (物件) 標籤內,選擇您上傳的新測試物件。

在物件的 Properties (屬性) 標籤上,檢閱 Object management overview (物件管理概觀) 區段。請注意,我們設定的 Object Lock (物件鎖定) 預設值已套用至該物件。您也可以在上傳新物件時覆寫這些預設值,並延長 (但不能縮短) 套用至已鎖定物件的保留日期。

3.8 – 嘗試刪除物件

在本節中,我們會探討另一種不建立刪除標記就能刪除物件特定版本的方法。 

  • 選擇 Versions (版本) 標籤。  
  • 選取物件左側的核取方塊,然後選擇 Delete (刪除)。

文字輸入欄位中輸入 permanently delete,然後選擇 Delete objects (刪除物件)。

  • 您應該會收到無法刪除物件的錯誤訊息。這是在合規模式下使用物件鎖定時的預期行為。您必須等到保留期 (我們設定為 1 天) 到期,才能刪除此物件。
  • 然後,選擇 Close (關閉) 以結束此視窗。

步驟 4:探索其他 S3 資料保護功能

雖然不在本教學的範圍內,但請注意另外兩個 S3 資料保護主題:

S3 複寫支援跨 Amazon S3 儲存貯體自動、非同步複製物件。為物件複寫而設定的儲存貯體可以由相同 AWS 帳戶或不同帳戶所擁有。您可以將物件複寫到單一目的地儲存貯體或多個目的地儲存貯體。目的地儲存貯體可以位於不同的 AWS 區域,也可以位於與來源儲存貯體相同的區域內。

S3 複寫需要同時在來源和目的地儲存貯體上啟用 S3 版本控制。  

如果來源儲存貯體已啟用 S3 物件鎖定,則目的地儲存貯體也必須啟用 S3 物件鎖定。若要在已啟用物件鎖定的儲存貯體上啟用複寫,您必須先聯絡 AWS Support。Amazon S3 在複寫已套用保留資訊的物件時,會將同樣的保留控制套用至複本,並覆寫目的地儲存貯體上所設定的預設保留期。如果您未將保留控制套用至來源儲存貯體中的物件,又複寫至已設定預設保留期的目的地儲存貯體,則目的地儲存貯體的預設保留期會套用至物件複本。 

記錄選項

Amazon S3 會與 AWS CloudTrail 服務整合,後者是可提供使用者、角色或 AWS 服務在 Amazon S3 中所做行動的記錄。CloudTrail 會擷取 Amazon S3 的一部分 API 呼叫作為事件,包括來自 Amazon S3 主控台的呼叫以及對 Amazon S3 API 的程式碼呼叫。

伺服器存取記錄會針對以儲存貯體為對象所發出的請求提供詳細記錄。伺服器存取日誌對許多應用程式都很有用。例如,存取日誌資訊可用於安全和存取稽核。其也可以幫助您了解客戶群並了解 Amazon S3 帳單。

使用 AWS Backup 跨 AWS 服務和混合工作負載來集中管理和自動化資料保護。AWS Backup 提供經濟高效、全受管、政策型服務,可進一步簡化大規模資料保護。AWS Backup 也有助您支援法規合規或資料保護商業政策。  

Amazon S3 是眾多受支援的 AWS Backup 資源之一。AWS Backup 也會利用 S3 版本控制。

步驟 5:使用 Amazon S3 Storage Lens 檢視 S3 資料保護指標

Amazon S3 Storage Lens 可讓組織全面掌握 Amazon S3 中所存放資料的資料保護狀態。S3 Storage Lens 可以輕鬆顯示已加密、已設定版本控制、已複寫和已設定物件鎖定的資料百分比。您可以針對您在多個 Amazon S3 儲存貯體、AWS 帳戶和 AWS Organizations 中的資料,於 S3 Storage Lens 中檢視此資料保護可見性,無須額外費用,且有 14 天的歷史資料保護等級可供您立即開始使用。

您可以使用 S3 Storage Lens 查看資料保護指標的摘要,這些指標會以資料總量的百分比表示。其中包括:目前的版本位元組、非目前的版本位元組、已加密的位元組、已複寫的位元組和物件鎖定位元組。

5.1

  • S3 主控台,在導覽窗格中找到 Storage Lens
  • 選擇 Dashboards (儀表板),然後選擇 default-account-dashboard

5.2

  • 選取 Data protection (資料保護) 標籤,以查看與版本控制、加密、複寫和物件鎖定相關的統計資料。

步驟 6:清除

在接下來的步驟中,您將清除在本教學中建立的資源。最佳實務是刪除不再使用的資源,以免產生意外費用。

請注意,您必須等待 1 天讓 S3 物件鎖定過期,才能嘗試進行這些步驟。

6.1 — 刪除測試物件  

  • 如果您已登出 AWS 管理主控台工作階段,請重新登入。導覽至 S3 主控台,然後選取導覽窗格中的 Buckets (儲存貯體)。首先,您需要從測試儲存貯體中刪除測試物件。選取您為本教學建立的儲存貯體左側的選項按鈕,然後選擇 Empty (清空)。
  • Empty bucket (清空儲存貯體) 頁面上,於 Permanently delete all objects (永久刪除所有物件) 確認方塊內輸入 permanently delete (永久刪除)。然後,選擇 Empty (清空) 以繼續。
  • 接下來,您將看到一條橫幅,指明刪除是否成功。選擇 Exit (結束)。

6.2 – 刪除測試儲存貯體

  • 最後,您需要刪除已建立的測試儲存貯體。回到您帳戶中的儲存貯體清單。選取您為本教學建立的儲存貯體左側的選項按鈕,然後選擇 Delete (刪除)。
  • 檢閱警告訊息。如果要繼續刪除此儲存貯體,請在文字輸入欄位確認方塊中輸入儲存貯體的名稱,然後選擇 Delete bucket (刪除儲存貯體)。

結語

恭喜您! 您已了解如何使用 S3 版本控制和 S3 物件鎖定保護 Amazon S3 中的資料,並已使用 S3 Storage Lens 檢閱這些設定。

本頁對您是否有幫助?

後續步驟

若要進一步了解 Amazon S3,請瀏覽以下資源。