Amazon Redshift 資料庫加密 - Amazon Redshift

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

Amazon Redshift 資料庫加密

在 Amazon Redshift 中,您可以為您的叢集啟用資料庫加密,以協助保護靜態資料。啟用叢集的加密時,叢集和其快照的資料區塊和系統中繼資料會加密。

您可以在啟動叢集時啟用加密,也可以修改未加密的叢集以使用 AWS Key Management Service (AWS KMS) 加密。若要這麼做,您可以使用 AWS受管金鑰或客戶受管金鑰。當您修改叢集以啟用 AWS KMS 加密時,Amazon Redshift 會自動將資料遷移至新的加密叢集。從加密叢集建立的快照也會加密。您也可以修改叢集和變更 Encrypt database (加密資料庫) 選項,將加密的叢集遷移到未加密的叢集。如需詳細資訊,請參閱變更叢集加密

雖然 Amazon Redshift 中的加密是選擇性設定,我們仍建議您為包含敏感資料的叢集啟用加密。此外,根據控管您的資料的指導方針或規範,可能會要求您使用加密。例如,支付卡產業資料安全標準 (PCI )DSS、沙賓法案 (SOX)、健康保險可攜性和責任法案 (HIPAA) 和其他此類法規提供處理特定類型資料的準則。

Amazon Redshift 使用加密金鑰的階層來加密資料庫。您可以使用 AWS Key Management Service (AWS KMS) 或硬體安全模組 (HSM) 來管理此階層中的頂層加密金鑰。Amazon Redshift 用於加密的程序會因您管理金鑰的方式而有所不同。Amazon Redshift 會自動與 整合 AWS KMS ,但不會與 整合HSM。使用 時HSM,您必須使用用戶端和伺服器憑證來設定 Amazon Redshift 與 之間的信任連線HSM。

可提升效能與可用性的加密程序改善

使用RA3節點加密

RA3 節點加密程序的更新讓體驗變得更好。加密程序進行期間,讀取和寫入查詢在執行時的效能比較不會因加密而受到影響了。此外,加密完成的速度也快了許多。已更新的程序步驟包括還原操作,以及將叢集中繼資料遷移至目標叢集的操作。改善的體驗適用於加密類型 AWS KMS,例如 。當您擁有 PB 規模的資料磁碟區時,操作已從幾週減少為幾天。

在加密叢集之前,如果您打算繼續執行資料庫工作負載,則可以透過新增具有彈性調整大小功能的節點來改善效能並加快程序的進行速度。加密進行期間中,您無法使用彈性調整大小功能,因此請在加密之前執行此操作。請注意,新增節點一般會導致成本上升。

使用其他節點類型進行加密

當您加密具有DC2節點的叢集時,就無法執行寫入查詢,例如使用RA3節點。您只能執行讀取查詢。

節點加密的使用備註 RA3

下列洞察和資源可協助您為加密做好準備並監控加密程序。

  • 在啟動加密後執行查詢 — 啟動加密後,可在大約 15 分鐘內執行讀取和寫入操作。整個加密程序所需的完成時間取決於叢集上的資料量和工作負載層級。

  • 加密需要多久時間? — 加密資料所需的時間取決於幾個因素:這些因素包括執行的工作負載數量、使用的運算資源、節點數目及節點類型。建議您一開始先在測試環境中執行加密。根據經驗,如果您要處理數 PB 的資料磁碟區,則可能需要 1 至 3 天才能完成加密。

  • 如何知道加密已完成? – 啟用加密後,完成第一個快照會確認加密已完成。

  • 復原加密 — 如果您需要復原加密操作,最好的方法是從在啟動加密前所製作的最新備份進行還原。您必須重新套用在上次備份後所做過的任何新更新 (更新/刪除/插入)。

  • 執行資料表還原 — 請注意,您無法將資料表從未加密的叢集還原至已加密的叢集。

  • 加密單一節點叢集 — 加密單一節點叢集有效能限制。其所需時間比加密多節點叢集還要久。

  • 在加密後建立備份 — 當您加密叢集中的資料時,要等到整個叢集完成加密後,才會建立備份。此操作所需的時間會有所不同。視叢集大小而定,備份所需的時間從幾小時到幾天不等。加密完成後,會延遲一段時間才能建立備份。

    請注意,由於 backup-and-restore操作在加密程序期間發生,因此BACKUP NO使用 建立的任何資料表或具體化檢視都不會保留。如需詳細資訊,請參閱 CREATETABLECREATE MATERIALIZED VIEW

使用 加密 AWS KMS

當您選擇使用 Amazon Redshift AWS KMS 進行金鑰管理時,會有四層加密金鑰階層。這些金鑰以階層順序排列,是根金鑰、叢集加密金鑰 (CEK)、資料庫加密金鑰 (DEK) 和資料加密金鑰。

當您啟動叢集時,Amazon Redshift 會傳回 AWS KMS keys AWS 帳戶在 中建立或擁有使用許可的 清單 AWS KMS。您可以在加密階層中選取要用作根金鑰的KMS金鑰。

依預設,Amazon Redshift 會選取您的預設金鑰作為根金鑰。您的預設金鑰是 AWS受管金鑰,為 AWS 您的帳戶建立,以便在 Amazon Redshift 中使用。 AWS KMS 會在您第一次在 AWS 區域中啟動加密叢集並選擇預設金鑰時建立此金鑰。

如果您不想使用預設金鑰,則必須在 Amazon Redshift 中啟動叢集 AWS KMS 之前,在 中分別擁有 (或建立) 客戶受管KMS金鑰。客戶受管金鑰可為您提供更多彈性,包含建立、輪換、停用、定義存取控制,以及稽核用於協助保護您資料之加密金鑰的能力。如需建立KMS金鑰的詳細資訊,請參閱 AWS Key Management Service 開發人員指南 中的建立金鑰

如果您想要使用來自另一個 AWS 帳戶的 AWS KMS 金鑰,您必須具有使用金鑰的許可,並在 Amazon Redshift 中指定其 Amazon Resource Name (ARN)。如需存取 中金鑰的詳細資訊 AWS KMS,請參閱 AWS Key Management Service 開發人員指南 中的控制對金鑰的存取

選擇根金鑰後,Amazon Redshift 會請求 AWS KMS 產生資料金鑰,並使用選取的根金鑰加密。此資料金鑰會用作 Amazon Redshift CEK中的 。 會將加密的 AWS KMS 匯出CEK至 Amazon Redshift,在 Amazon Redshift 中將其儲存在與叢集不同的網路中的磁碟上,以及對KMS金鑰和 加密內容的授予CEK。只有加密的 CEK 會匯出至 Amazon Redshift;KMS金鑰會保留在 中 AWS KMS。Amazon Redshift 也會CEK透過安全通道將加密的 傳遞至叢集,並將其載入記憶體。然後,Amazon Redshift 會呼叫 AWS KMS 來解密 CEK,並將解密的 載入CEK記憶體。如需授予、加密內容和其他 AWS KMS相關概念的詳細資訊,請參閱 AWS Key Management Service 開發人員指南 中的概念

接下來,Amazon Redshift 會隨機產生金鑰,以用作 ,DEK並將其載入叢集中的記憶體。解密CEK的 用於加密 DEK,然後透過安全頻道從叢集傳遞,由 Amazon Redshift 在磁碟上與叢集分開的網路內部儲存。與 一樣CEK, 的加密和解密版本DEK都會載入叢集中的記憶體。然後,解密版本的 DEK會用來加密針對資料庫中每個資料區塊隨機產生的個別加密金鑰。

當叢集重新啟動時,Amazon Redshift 會從內部儲存的加密版本 CEK和 開始DEK,將它們重新載入記憶體,然後再次呼叫 AWS KMS 以CEK使用 KMS金鑰解密 ,以便將其載入記憶體。然後,解密的 CEK會DEK再次用來解密 ,解密的 DEK會載入記憶體,並視需要用來加密和解密資料區塊金鑰。

如需建立使用 AWS KMS 金鑰加密的 Amazon Redshift 叢集的詳細資訊,請參閱 建立叢集

將 AWS KMS加密的快照複製到另一個 AWS 區域

AWS KMS 金鑰是區域特有的 AWS 。如果您啟用將 Amazon Redshift 快照複製到另一個 AWS 區域,且來源叢集及其快照使用來自 的根金鑰加密 AWS KMS,則需要設定授予 Amazon Redshift 在目的地 AWS 區域中使用根金鑰。此授予可讓 Amazon Redshift 加密目的地 AWS 區域中的快照。如需跨區域快照複製的相關資訊,請參閱將快照複製到另一個快照 AWS 區域

注意

如果您啟用從加密叢集複製快照並 AWS KMS 用於根金鑰,則無法重新命名叢集,因為叢集名稱是加密內容的一部分。如果您必須重新命名叢集,您可以停用來源 AWS 區域中快照的複製、重新命名叢集,然後再次設定和啟用快照的複製。

為複製快照設定授予的程序如下所示。

  1. 在目的地 AWS 區域中,執行下列動作來建立快照複本授予:

    • 如果您還沒有要使用的 AWS KMS 金鑰,請建立一個金鑰。如需建立 AWS KMS 金鑰的詳細資訊,請參閱 AWS Key Management Service 開發人員指南 中的建立金鑰

    • 指定快照複製授予的名稱。此名稱在 AWS 帳戶的該 AWS 區域中必須是唯一的。

    • 指定您要為其建立授予的 AWS KMS 金鑰 ID。如果您不指定金鑰 ID,該授予即會套用至您的預設金鑰。

  2. 在來源 AWS 區域中,啟用快照複製,並指定您在目的地 AWS 區域中建立的快照複製授予名稱。

只有在您啟用使用 AWS CLI、Amazon Redshift 或 複製快照時API,才需要上述程序SDKs。如果是使用主控台,在啟用跨區域快照複製時,Amazon Redshift 會提供適當的工作流程來設定授予。如需使用主控台來為 AWS KMS加密叢集設定跨區域快照複製的相關資訊,請參閱設定跨區域快照副本 AWS KMS— 加密叢集

在將快照複製到目的地 AWS 區域之前,Amazon Redshift 會使用來源 AWS 區域中的根金鑰解密快照,並使用 Amazon Redshift 內部管理的隨機產生的RSA金鑰暫時重新加密快照。然後,Amazon Redshift 透過安全頻道將快照複製到目的地 AWS 區域,使用內部受管RSA金鑰解密快照,然後使用目的地 AWS 區域中的根金鑰重新加密快照。

使用硬體安全模組加密

如果您不使用 AWS KMS 進行金鑰管理,則可以使用硬體安全模組 (HSM) 搭配 Amazon Redshift 進行金鑰管理。

重要

HSM DC2和 RA3 節點類型不支援加密。

HSMs 是可直接控制金鑰產生和管理的裝置。其會透過將金鑰管理與應用程式資料庫層分開以提供更好的安全性。Amazon Redshift 支援 AWS CloudHSM Classic 進行金鑰管理。當您使用 管理加密金鑰而非 時HSM,加密程序會有所不同 AWS KMS。

重要

Amazon Redshift 僅支援 AWS CloudHSM Classic。我們不支援較新的 AWS CloudHSM 服務。

AWS CloudHSM Classic 已關閉給新客戶。如需詳細資訊,請參閱 CloudHSM Classic 定價。並非所有 AWS 區域都提供 AWS CloudHSM Classic。如需可用 AWS 區域的詳細資訊,請參閱AWS 區域表

當您將叢集設定為使用 時HSM,Amazon Redshift 會傳送請求至 HSM,以產生和儲存要用作 的金鑰CEK。不過,與 不同 AWS KMS, HSM不會將 匯出CEK到 Amazon Redshift。相反地,Amazon Redshift 會在叢集DEK中隨機產生 ,並將其傳遞至 HSM 以供 加密CEK。會將加密的 HSM傳回DEK給 Amazon Redshift,其中會使用隨機產生的內部根金鑰進一步加密,並儲存在與叢集不同的網路中的磁碟上。Amazon Redshift 也會載入叢集DEK記憶體中的 解密版本,以便 DEK 可用來加密和解密資料區塊的個別金鑰。

如果叢集重新啟動,Amazon Redshift DEK會使用內部根金鑰解密內部儲存的雙重加密,將內部儲存的 傳回 DEK CEK加密狀態。然後CEK,加密的 DEK會傳遞至HSM要解密的 ,並傳回給 Amazon Redshift,再一次載入記憶體,以便與個別資料區塊金鑰搭配使用。

設定 Amazon Redshift 與 之間的信任連線 HSM

當您選擇使用 HSM來管理叢集金鑰時,您需要在 Amazon Redshift 和 之間設定受信任的網路連結HSM。要這麼做需要對用戶端和伺服器憑證進行組態。信任的連線用於在加密和解密操作期間,在 HSM和 Amazon Redshift 之間傳遞加密金鑰。

Amazon Redshift 會從隨機產生的私有和公有金鑰對建立公有用戶端憑證。這些憑證會經過加密並在內部儲存。您可以在 中下載並註冊公有用戶端憑證HSM,並將其指派給適用的HSM分割區。

您可以使用內部根金鑰,為 Amazon Redshift 提供 HSM IP 地址、HSM分割區名稱、HSM分割區密碼和公有HSM伺服器憑證。Amazon Redshift 會完成組態程序,並驗證是否可以連線至 HSM。如果無法,叢集會進入 INCOMPATIBLE_HSM 狀態,而且不會建立叢集。在此情況下,您必須刪除不完整的叢集並重試。

重要

當您將叢集修改為使用不同的HSM分割區時,Amazon Redshift 會驗證其是否可以連線至新的分割區,但不會驗證是否存在有效的加密金鑰。使用新的分割區之前,您必須將金鑰複寫至新的分割區。如果叢集已重新啟動,並且 Amazon Redshift 找不到有效的金鑰,重新啟動會失敗。如需詳細資訊,請參閱跨 複寫金鑰HSMs

初始組態之後,如果 Amazon Redshift 無法連線至 HSM,則會記錄事件。如需這些事件的相關資訊,請參閱 Amazon Redshift 事件通知

加密金鑰輪換

在 Amazon Redshift 中,您可以輪換加密的叢集的加密金鑰。當您啟動金鑰輪換程序時,Amazon Redshift CEK會輪換指定叢集的 ,以及叢集的任何自動或手動快照。Amazon Redshift 也會輪換指定叢集DEK的 ,但在快照存放在 Amazon Simple Storage Service (Amazon S3) 內部並使用現有 加密時,無法輪換DEK快照的 DEK。

輪換進行中時,叢集會進入 ROTATING_KEYS 狀態,直到完成為止,此時叢集會返回 AVAILABLE 狀態。Amazon Redshift 會在金鑰輪換程序期間處理解密和重新加密。

注意

您無法為沒有來源叢集的快照輪換金鑰。刪除叢集之前,請考慮其快照是否仰賴於金鑰輪換。

由於叢集金鑰輪換程序期間暫時無法使用,您應該只在您的資料需求或當您懷疑金鑰可能已遭到盜用時才輪換金鑰。做為最佳實務,您應該檢閱儲存的資料類型,並計畫輪換加密該資料之金鑰的頻率。輪換金鑰的頻率因對於資料安全性的公司政策,以及有關敏感資料和法規合規的任何產業標準而有所不同。確保您的計畫可平衡您的叢集對於可用性考量的安全性需求。

如需輪換金鑰的詳細資訊,請參閱 輪換加密金鑰