自動加密現有和新的 Amazon EBS 磁碟區 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

自動加密現有和新的 Amazon EBS 磁碟區

由托尼 DeMarco (AWS)和喬希·喬希(AWS)創建

代碼存儲庫:https://github.com/aws-samples/ aws-system-manager-automation-unencrypted-to-encrypted-resources /樹/主/EBS

環境:生產

技術:儲存與備份、安全性、身分識別、合規性、管理與治理

AWS 服務:AWS Config;Amazon EBS;AWS KMS;AWS Organizations;AWS Systems Manager

Summary

Amazon Elastic Block Store (Amazon EBS) 磁碟區的加密對於組織的資料保護策略很重要。這是建立一個結構良好的環境的重要一步。雖然沒有直接加密現有未加密的 EBS 磁碟區或快照的方法,但您可以透過建立新的磁碟區或快照來加密它們。如需詳細資訊,請參閱 Amazon EC2 文件中的加密 EBS 資源。此模式提供預防性和偵測控制,可加密新的和現有的 EBS 磁碟區。在此模式中,您可以設定帳戶設定、建立自動補救程序,以及實作存取控制。

先決條件和限制

先決條件

  • 有效的 Amazon Web Services (AWS) 帳戶

  • AWS Command Line Interface (AWS CLI) (AWS CLI),在 macOS、Linux 或視窗上安裝和設定

  • jq, 安裝和配置在 macOS, Linux, 或視窗

  • AWS Identity and Access Management (IAM) 許可的佈建為具有 AWS CloudFormation、亞馬遜彈性運算雲端 (Amazon EC2)、AWS Systems Manager、AWS Config 和 AWS Key Management Service (AWS KMS) 的讀寫存取權

  • AWS Organizations 的設定已啟用所有功能,這是服務控制政策的要求

  • 目標帳戶中已啟用 AWS Config

限制

  • 在您的目標 AWS 帳戶中,不得有名為加密磁碟區的 AWS Config 規則。此解決方案會以此名稱部署規則。具有此名稱的預先存在規則可能會導致部署失敗,並導致與多次處理相同規則相關的不必要費用。

  • 此解決方案會使用相同的 AWS KMS 金鑰加密所有 EBS 磁碟區。

  • 如果您為帳戶啟用 EBS 磁碟區加密,則此設定為區域特定。如果您為 AWS 區域啟用此功能,則無法針對該區域中的個別磁碟區或快照停用該功能。如需詳細資訊,請參閱 Amazon EC2 文件中的預設加密

  • 修復現有未加密的 EBS 磁碟區時,請確保 EC2 執行個體未使用中。此自動化功能會關閉執行個體,以便中斷未加密的磁碟區並連接加密的磁碟區。正在進行修復時會有停機時間。如果這對您的組織來說是重要的基礎結構,請確定已設置動或自動的高可用性設定,以免影響執行個體上執行的任何應用程式的可用性。建議您僅在標準維護時段期間修復重要資源。

架構

自動化流程

顯示自動化程序與服務的高階架構圖
  1. AWS Config 偵測到未加密的 EBS 磁碟區。

  2. 管理員使用 AWS Config 將修復命令傳送給 Systems Manager 員。

  3. 系 Systems Manager 自動化會擷取未加密 EBS 磁碟區的快照。

  4. 系 Systems Manager 自動化使用 AWS KMS 建立快照的加密副本。

  5. Systems Manager 自動化會執行下列作業:

    1. 停止受影響的 EC2 執行個體 (如果執行中)

    2. 將新的加密磁碟區副本附加至 EC2 執行個體

    3. 將 EC2 實例返回到其原始狀態

工具

AWS 服務

  • AWS CLI — AWS Command Line Interface (AWS CLI) (AWS CLI) 可讓您直接存取 AWS 服務的公有應用程式程式設計界面 (API)。您可以使用 AWS CLI 探索服務的功能,並開發殼層指令碼來管理資源。除了低階 API 等效命令之外,數個 AWS 服務還為 AWS CLI 提供自訂服務。自訂功能可能包括較高階的命令,可簡化具有複雜 API 的服務使用。

  • AWS CloudFormation — AWS CloudFormation 是一項可協助您建立 AWS 資源模型和設定 AWS 資源的服務。您可以建立範本來描述所需的所有 AWS 資源 (例如 Amazon EC2 執行個體),並為您 CloudFormation 佈建和設定這些資源。

  • AWS 組態 — AWS Config 提供 AWS 帳戶中 AWS 資源組態的詳細檢視。這包含資源彼此之間的關係和之前的組態方式,所以您可以看到一段時間中組態和關係的變化。

  • Amazon EC2 — Amazon Elastic Compute Cloud (Amazon EC2) 是一種網路服務,提供可調整大小的運算容量,讓您用來建立和託管軟體系統。

  • AWS KMS — AWS Key Management Service (AWS KMS) 是針對雲端擴展的加密和金鑰管理服務。其他 AWS 服務會使用 AWS KMS 金鑰和功能,您可以使用這些金鑰和功能來保護 AWS 環境中的資料。

  • AWS Organizations — AWS Organizations 是一種帳戶管理服務,可讓您將多個 AWS 帳戶合併到您建立並集中管理的組織中。

  • AWS Systems Manager Automation — Systems Manager 自動化可簡化 Amazon EC2 執行個體和其他 AWS 資源的常見維護和部署任務。

其他服務

  • jq-jq 是一個輕量級和靈活的命令行 JSON 處理器。您可以使用此工具從 AWS CLI 輸出擷取關鍵資訊。

Code

史诗

任務描述所需技能

下載腳本和 CloudFormation 模板。

使用客戶 KMS 金鑰存放庫 GitHub 自動修復未加密的 EBS 磁碟區,下載殼層指令碼、JSON 檔案和 CloudFormation 範本。

AWS 管理員,一般 AWS

識別 AWS KMS 金鑰的管理員。

  1. 登入 AWS 管理主控台,然後前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

  2. 識別將成為 AWS KMS 金鑰管理員的使用者或角色。如果需要為此目的建立新使用者或角色,請立即建立它。如需詳細資訊,請參閱 IAM 文件中的 IAM 身分。此自動化操作會建立新的 AWS KMS 金鑰。

  3. 識別後,複製使用者或角色的 Amazon 資源名稱 (ARN)。如需詳細資訊,請參閱 IAM 說明文件中的 IAM ARN。您可以在下一個步驟中使用此 ARN。

AWS 管理員,一般 AWS

部署堆疊 1 CloudFormation 範本。

  1. 開啟 AWS 主 CloudFormation 控台,網址為 https://console.aws.amazon.com/cloudformation/

  2. 在中 CloudFormation,部署Stack1.yaml範本。請注意下列部署詳細資訊:

    • 給堆棧一個清晰和描述性的名稱。請記下堆疊名稱,因為您在下一個步驟中需要此值。

    • 將金鑰管理員的 ARN 貼到 Stack1 的唯一參數欄位中。此使用者或角色會成為堆疊所建立之 AWS KMS 金鑰的管理員。

如需部署 CloudFormation 範本的詳細資訊,請參閱 CloudFormation 文件中的使用 AWS CloudFormation 範本

AWS 管理員,一般 AWS

部署堆疊 2 CloudFormation 範本。

在中 CloudFormation,部署Stack2.yaml範本。請注意下列部署詳細資訊:

  • 給堆棧一個清晰和描述性的名稱。

  • 對於 Stack2 的唯一參數,請輸入您在上一個步驟中建立的堆疊名稱。這可讓 Stack2 參考上一個步驟中堆疊部署的新 AWS KMS 金鑰和角色。

AWS 管理員,一般 AWS

建立未加密的磁碟區進行測試。

使用未加密的 EBS 磁碟區建立 EC2 執行個體。如需指示,請參閱 Amazon EC2 文件中的建立 Amazon EBS 磁碟區。實例類型並不重要,並且不需要訪問實例。您可以建立 t2.micro 執行個體以保留在免費方案中,而且不需要建立 key pair。

AWS 管理員,一般 AWS

測試 AWS Config 規則。

  1. 開啟 AWS 組態主控台,網址為 https://console.aws.amazon.com/config/。在 [規則] 頁面上,選擇加密磁碟區規則。

  2. 確認新的未加密測試實例出現在不合規資源列表中。如果磁碟區沒有立即出現,請等待幾分鐘,然後重新整理結果。AWS Config 規則會在建立執行個體和磁碟區後不久偵測到資源變更。

  3. 選取資源,然後選擇 [修正]。

您可以在「Systems Manager」中檢視修復進度和狀態,如下所示:

  1. 開啟 AWS Systems Manager 主控台,網址為 https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 Automation (自動化)。

  3. 選擇「執行 ID」連結以檢視步驟和狀態。 

AWS 管理員,一般 AWS

設定其他帳戶或 AWS 區域。

根據您的使用案例需要,針對任何其他帳戶或 AWS 區域重複此史詩。

AWS 管理員,一般 AWS
任務描述所需技能

執行啟用指令碼。

  1. 在 bash shell 中,使用cd命令導航到克隆的存儲庫中。

  2. 輸入以下命令以執行 enable-ebs-encryption-for-account 指令碼。

    ./Bash/enable-ebs-encryption-for-account.sh
AWS 管理員,一般 AWS,bash

確認設定已更新。

  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在畫面右側的 [設定] 下,選擇 [資料保護與安全性]。

  3. 在 [EBS 加密] 區段下,確認已開啟 [永遠加密新 EBS 磁碟區],且 [預設加密金鑰] 設定為您先前指定的 ARN。

    注意:如果 [永遠加密新的 EBS 磁碟區] 設定為關閉,或金鑰仍設定為別名 /aws/ebs,請確認您已登入執行 shell 指令碼的相同帳戶和 AWS 區域,並檢查殼層是否有錯誤訊息。

AWS 管理員,一般 AWS

設定其他帳戶或 AWS 區域。

根據您的使用案例需要,針對任何其他帳戶或 AWS 區域重複此史詩。

AWS 管理員,一般 AWS
任務描述所需技能

建立服務控制原則。

  1. 開啟 AWS Organizations 主控台,網址為 https://console.aws.amazon.com/organizations/v2/

  2. 建立新的服務控制原則。如需詳細資訊,請參閱 AWS Organizations 文件中的建立服務控制政策

  3. 將的內容新增DenyUnencryptedEC2.json至策略並儲存。您從第一個史詩中的 GitHub 存儲庫下載了此 JSON 文件。

  4. 將此原則附加至組織根目錄或任何必要的組織單位 (OU)。如需詳細資訊,請參閱 AWS Organizations 文件中的連接和卸離服務控制政策

AWS 管理員,一般 AWS

相關資源

AWS 服務文件

其他資源