自動補救未加密的 Amazon RDS 資料庫執行個體和叢集 - AWS Prescriptive Guidance

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

自動補救未加密的 Amazon RDS 資料庫執行個體和叢集

由阿傑拉瓦特 (AWS) 和喬許喜悅 (AWS) 創建

Enlironment:PoC 或試驗

技能:安全、身份、合規;資料庫

AWS 服務:AWS Config;AWS KMS;AWS Identity and Access Management;AWS Systems Manager;Amazon RDS

Summary

此模式說明如何使用 AWS Config、AWS Systems Manager Runbook 和 AWS Key Management Service (AWS) 金鑰,自動補救 Amazon Web Services (AWS) 上未加密的 Amazon 關聯式資料庫服務 (Amazon RDS) 資料庫執行個體和叢集。

加密的 RDS 資料庫執行個體可以保護您的資料免於發生未經授權的基礎儲存取,為資料提供另一層保護。您可以使用 Amazon RDS 加密提高部署於 AWS 雲端中應用程式的資料保護,以及滿足靜態加密的合規要求。您可以在建立 RDS 資料庫執行個體時,但不能在建立 RDS 資料庫執行個體之後為其啟用加密。但是,您可以建立資料庫執行個體的快照,然後建立該快照的加密副本,以將加密的 RDS 資料庫執行個體加密。接著,您可以從加密快照中還原資料庫執行個體,以取得原始資料庫執行個體的加密副本。

此模式使用 AWS Config 規則來評估 RDS 資料庫執行個體和叢集。它可以使用 AWS Systems Manager Runbook 來套用補救,該 Runbook 定義要對不合規的 Amazon RDS 資源執行的動作,以及用於加密資料庫快照的 AWS KMS 金鑰。然後它會強制執行服務控制原則 (SCP),以防止在未加密的情況下建立新的資料庫執行個體和叢集。

此模式的代碼在GitHub

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • 檔案來自GitHub 原始程式碼儲存庫下載至電腦的病毒碼

  • 未加密的 RDS 資料庫執行個體或叢集

  • 用於加密 RDS 資料庫執行個體和叢集的現有 AWS KMS 金鑰

  • 存取更新 KMS 金鑰資源原則

  • AWS 帳戶中已啟用 AWS Config (請參閱AWS Config 入門在 AWS 文檔中)

限制

  • 您只能在建立 RDS 資料庫執行個體時,而不能在建立 RDS 資料庫執行個體之後為其啟用加密。

  • 未加密資料庫執行個體不可以有加密僅供讀取複本,加密資料庫執行個體也不可以有未加密僅供讀取複本。

  • 您無法將未加密的備份或快照還原至已加密的資料庫執行個體。

  • 大多數資料庫執行個體類別可以使用 Amazon RDS 加密。如需例外清單,請參閱加密 Amazon RDS 資源在 Amazon RDS 文件中。

  • 若要將加密快照從某個 AWS 區域複製到另一個區域,您必須指定目標 AWS 區域的 KMS 金鑰。這是因為 KMS 金鑰是專屬於建立它們的 AWS 區域。

  • 在整個複製過程中來源快照仍會保持加密狀態。Amazon RDS 會在複製過程中使用信封加密來保護資料。如需詳細資訊,請參閱「」信封加密在 AWS KMS 文件中。

  • 您無法解密加密的資料庫執行個體。但是,您可以從加密資料庫執行個體匯出資料,然後將資料匯入未加密的資料庫執行個體。

  • 只有當您確定不再需要使用 KMS 金鑰時,才應刪除 KMS 金鑰。如果您不確定,請考慮停用 KMS 金鑰而不是刪除。如果您稍後需要再次使用已停用的 KMS 金鑰,您可以重新啟用它,但您無法復原已刪除的 KMS 金鑰。 

  • 如果您不選擇保留自動備份,系統會刪除與資料庫執行個體位於相同 AWS 區域中的自動備份。刪除資料庫執行個體後,便無法復原自動備份內容。

  • 您的自動備份保留期間長短已於您刪除資料庫執行個體時設定。無論您是否選擇建立最終資料庫快照,都會依照此一設定保留期間。

  • 如果啟用自動補救,此解決方案會加密所有具有相同 KMS 金鑰的資料庫。

Architecture

下圖說明 AWS CloudFormation 格式實作的架構。請注意,您也可以使用 AWS Cloud Development Kit (AWS CDK) 來實作此模式。

Tools

工具

  • AWS CloudFormation— AWS CloudFormation 可協助您自動設定您的 AWS 資源。它可讓您使用範本檔案,並將資源集合視為單一單位 (堆疊) 加以建立和刪除。

  • AWS CDK— AWS Cloud Development Kit (AWS CDK) 是一種軟體開發架構,可在程式碼中定義您的雲端基礎設施,並使用熟悉的程式設計語言進行佈建。

AWS 服務和功能

  • AWS Config— AWS Config 會追蹤 AWS 資源的組態及其與其他資源的關係。它也可以評估那些 AWS 資源的合規性。此服務使用可設定的規則,以根據所需的組態評估 AWS 資源。您可以針對常見的合規案例使用一組 AWS Config 受管規則,也可以針對自訂案例建立自己的規則。當 AWS 資源發現不合規時,您可以透過 AWS Systems Manager 執行手冊指定補救動作,並選擇性地透過 Amazon Simple Notification Service (Amazon SNS) 主題傳送警示。換句話說,您可以將補救動作與 AWS Config 規則產生關聯,並選擇自動執行這些動作以解決不合規的資源,而無需手動介入。如果資源在自動修補後仍不合規,您可以設定規則再次嘗試自動修補。

  • Amazon RDS— Amazon Relational Database Service (Amazon RDS) 可讓雲端中關聯式資料庫的設定、操作和擴展更加簡單。Amazon RDS 的基本建置區塊為資料庫執行個體,資料庫執行個體是在 AWS 雲端執行的隔離資料庫環境。Amazon RDS 提供了一個執行個體類型的選取,以適應不同的關係數據庫使用案例。執行個體類型包含各種 CPU、記憶體、儲存體和網路容量組合,可讓您靈活選擇適當的資料庫資源組合。每個執行個體類型都包含數個執行個體大小,可讓您根據目標工作負載的需求調整資料庫。

  • AWS KMS— AWS Key Management Service (AWS KMS) 是受管服務,可讓您輕鬆地建立和控制 AWS KMS 金鑰,以加密資料的 AWS KMS 金鑰。KMS 金鑰是根金鑰的邏輯表示法。KMS 金鑰包含金鑰 ID、建立日期、說明和金鑰狀態等中繼資料。

  • IAM— AWS Identity and Access Management (IAM) 可控制對 AWS 服務的存取。有了 IAM,即可集中管理使用者、安全登入資料 (例如存取金鑰),以及控制使用者和應用程式可存取哪些 AWS 資源的許可。

  • SCP— 服務控制政策 (SCP) 集中控制組織中所有帳戶可用的許可上限。SCP 可協助您確保您的帳戶符合組織的存取控制指導方針。SCP 不會影響管理帳戶中的使用者或角色。它們只會影響組織中的成員帳戶。在沒有將政策對帳戶的影響進行徹底測試之前,我們強烈建議您不要將 SCP 連接到組織的根帳戶。而是建立一個組織單位 (OU),供您以一次將一個帳戶 (或至少為少為少為少為少為少為少為少為少為少為少為少的帳戶) 移至其中,以確保您不會不慎將使用者鎖定在金鑰服務之外。

Code

這種模式的源代碼和模板可以在GitHub 儲存庫。該模式提供了兩個實現選項:您可以部署 AWS CloudFormation 範本來建立用於加密 RDS 資料庫執行個體和叢集的補救角色,或使用 AWS CDK。儲存庫為這兩個選項具有不同的資料夾。

所以此史詩部分提供部署 CloudFormation 範本的逐步說明。如果您希望使用 AWS CDK,請按照讀取 .md 檔案在 GitHub 儲存庫中。

Epics

任務描述所需技能
下載 CloudFormation 範本。

下載unencrypted-to-encrypted-rds.template.json檔案從GitHub 儲存庫

裝置工程師
創建 CloudFormation 堆棧。
  1. 登入 AWS 管理主控台,然後開啟位於 https://console.aws.amazon.com/cloudformation/ 的 CloudFormation 主控台。 

  2. 啟動unencrypted-to-encrypted-rds.template.json範本建立新堆疊。

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

裝置工程師
檢閱 CloudFormation 參數和值。
  1. 檢閱堆疊詳細資料,並根據您的環境需求更新值。

  2. 選擇建立堆疊以部署範本。

裝置工程師
檢閱資源。

堆疊建立後,其狀態會變更為建立完成。在 CloudFormation 主控台中檢閱建立的資源 (IAM 角色、AWS Systems Manager Runbook)。

裝置工程師
任務描述所需技能
更新 KMS 金鑰政策。
  1. 確定金鑰別名alias/RDSEncryptionAtRestKMSAlias存在。 

  2. 主要政策陳述式應包含 IAM 補救角色。(請檢查您在先前的史詩版中部署的 CloudFormation 範本所建立的資源。) 

  3. 在下列重要政策中,更新粗體的部分,以符合您的帳戶和建立的 IAM 角色。

{     "Sid": "Allow access through RDS for all principals in the account that are authorized to use RDS",     "Effect": "Allow",     "Principal": {         "AWS": "arn:aws:iam:: <your-AWS-account-ID>”:role/<your-IAM-remediation-role>"     },     "Action": [         "kms:Encrypt",         "kms:Decrypt",         "kms:ReEncrypt*",         "kms:GenerateDataKey*",         "kms:CreateGrant",         "kms:ListGrants",         "kms:DescribeKey"     ],     "Resource": "*",     "Condition": {         "StringEquals": {             "kms:ViaService": "rds.us-east-1.amazonaws.com",             "kms:CallerAccount": "<your-AWS-account-ID>"         }     } }
裝置工程師
任務描述所需技能
檢視不合規的資源。
  1. 若要檢視不合規資源的清單,請開啟位於https://console.aws.amazon.com/config/。 

  2. 在導覽窗格中,選擇規則,然後選擇rds-storage-encrypted規則。

AWS Config 主控台中列出的不合規資源將是執行個體,而不是叢集。修復自動化會加密執行個體和叢集,並建立新加密的執行個體或新建立的叢集。不過,請務必不要同時修復屬於同一叢集的多個執行個體。

修復任何 RDS 資料庫執行個體或磁碟區之前,請確定 RDS 資料庫執行個體未在使用中。確認在建立快照時沒有發生寫入作業,以確保快照包含原始資料。請考慮強制執行修復期間的維護時段。

裝置工程師
修補不合規的資源。
  1. 當您準備就緒且維護時段生效時,請選擇要補救的資源,然後選擇修補動作狀態欄現在應顯示動作執行佇列

  2. 在 [Systems Manager] 中檢視修復的進度和狀態。開啟 AWS Systems Manager 主控台 (位於https://console.aws.amazon.com/systems-manager/。在導覽窗格中,選擇自動化,然後選取對應自動化的執行識別碼,以檢視進一步的詳細資料。

裝置工程師
確認 RDS 資料庫執行個體為可用。

自動化完成後,新加密的 RDS 資料庫執行個體將變成可用。加密的 RDS 資料庫執行個體將具有encrypted 後面跟著原始名稱。例如,如果未加密的 RDS 資料庫執行個體名稱是database-1,則新加密的 RDS 資料庫執行個體將是encrypted-database-1

裝置工程師
終止未加密的執行個體。

修復完成並驗證新加密的資源之後,您可以終止未加密的執行個體。在終止任何資源之前,請務必確認新加密的資源符合未加密的資源。

裝置工程師
任務描述所需技能
強制採用 SCP。

強制執行 SCP 以防止未來建立資料庫執行個體和叢集,而無需加密。使用rds_encrypted.json文件中提供的GitHub 儲存庫用於此目的,並遵循AWS 文件。 

安全工程師

相關資源

References

工具

導引線和模式

其他資訊

最佳實務

  • 啟用靜態與傳輸中的資料加密。

  • 在所有帳戶和 AWS 區域中啟用 AWS Config。

  • 記錄所有資源類型的組態變更。

  • 定期輪替您的 IAM 登入資料。

  • 運用 AWS Config 的標記,可以更輕鬆管理、搜尋和篩選資源。

常見問答集

Q.AWS Config 如何運作?

A.當您開啟 AWS Config 時,會先探索您帳戶中現有的 AWS 資源,並產生組態項目對於每個資源。AWS Config 也會在資源組態變更時產生組態項目,並維護從您啟動組態記錄器開始的資源組態項目歷史記錄。根據預設,AWS Config 會建立 AWS 區域中每個支援資源的組態項目。如果您不希望 AWS Config 建立所有支援資源的組態項目,您可以指定您希望它追蹤的資源類型。

Q.AWS Config 和 AWS Config 規則與 AWS Security Hub 有何關聯?

A.AWS Security Hub 是一種安全和合規服務,可提供安全和合規狀態即服務管理。它使用 AWS Config 和 AWS Config 規則作為評估 AWS 資源組態的主要機制。AWS Config 規則也可以用來直接評估資源組態。其他 AWS 服務也會使用 Config 規則,例如 AWS Control Tower 和 AWS Firewall Manager。