Amazon Redshift 資料庫加密 - Amazon Redshift

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

Amazon Redshift 資料庫加密

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

您可以在啟動叢集時啟用加密,也可以修改未加密的叢集以使用 AWS Key Management Service (AWS KMS) 加密。若要這麼做,您可以使用 AWS-managed 金鑰或客戶管理的金鑰。當您修改叢集以啟用 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 會自動與 HSM 集成, AWS KMS 但不與 HSM 集成。使用 HSM 時,您必須使用用戶端和伺服器憑證來設定 Amazon Redshift 與您的 HSM 之間的信任連線。

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

使用 RA3 節點進行加密

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

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

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

使用 DC2 節點加密叢集時,您無法執行寫入查詢,就像使用 RA3 節點一樣。您只能執行讀取查詢。

使用 RA3 節點進行加密的使用須知

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

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

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

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

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

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

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

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

    請注意,由於 backup-and-restore 作業會在加密程序期間發生,所以BACKUP NO不會保留使用建立的任何表格或具體化視觀表。如需詳細資訊,請參閱 CREATE TABLECREATE MATERIALIZED VIEW

使用 AWS KMS的 Amazon Redshift 資料庫加密

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

當您啟動叢集時,Amazon Redshift 會傳回您 AWS 帳戶已建立或有權在中 AWS KMS使用的帳戶清單。 AWS KMS keys 您可以選取 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 中指定其亞馬遜資源名稱 (ARN)。如需中金鑰存取權的詳細資訊 AWS KMS,請參閱《AWS Key Management Service 開發人員指南》的「控制金鑰存取」。

選擇根金鑰後,Amazon Redshift 會請求 AWS KMS 產生資料金鑰,並使用選取的根金鑰加密該金鑰。此資料金鑰在 Amazon Redshift 中用作 CEK。 AWS KMS 會將加密的 CEK 匯出至 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 再次使用 KMS 金鑰解密 CEK,以便將其載入記憶體。然後使用解密的 CEK 來再次解密,而解密的 DEK 會載入記憶體,並視需要用來加密和解密資料區塊金鑰。

如需建立使用 AWS KMS 金鑰加密的 Amazon Redshift 叢集的相關資訊,請參閱建立叢集使用 AWS CLI 和 Amazon Redshift API 管理叢集

複製 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 區域中建立的快照副本授權的名稱。

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

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

如需針對 AWS KMS已加密叢集設定快照複製授權的詳細資訊,請參閱使用 Amazon Redshift API 和 AWS CLI 將 Amazon Redshift 設定為使用 AWS KMS 加密金鑰。

使用硬體安全模組的 Amazon Redshift 加密

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

重要

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

HSM 為可針對金鑰產生和管理提供直接控制的裝置。其會透過將金鑰管理與應用程式資料庫層分開以提供更好的安全性。Amazon Redshift 支持 AWS CloudHSM 經典的密鑰管理。此加密程序與使用 HSM 而非 AWS KMS來管理您的加密金鑰時不同。

重要

Amazon Redshift 只支持 AWS CloudHSM 經典。我們不支援較新版的 AWS CloudHSM 服務。

AWS CloudHSM 經典對新客戶不開放。如需詳細資訊,請參閱 CloudHSM 傳統定價。 AWS CloudHSM 並非所有 AWS 地區都提供經典版。如需有關可用區 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 找不到有效的金鑰,重新啟動會失敗。如需詳細資訊,請參閱跨 HSM 複寫金鑰

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

Amazon Redshift 中的加密金鑰輪換

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

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

注意

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

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

如需輪換金鑰的相關資訊,請參閱使用 Amazon Redshift 主控台輪換加密金鑰使用 Amazon Redshift API 和 AWS CLI 輪換加密金鑰