Amazon Redshift 自 2025 年 11 月 1 日起不再支援建立新的 Python UDF。如果您想要使用 Python UDF,請在該日期之前建立 UDF。現有 Python UDF 將繼續正常運作。如需詳細資訊,請參閱部落格文章
Amazon Redshift 資料庫加密
在 Amazon Redshift 中,您的資料庫預設為加密狀態,以保護靜態資料。資料庫加密適用於叢集及其快照。
您可以修改未加密的叢集以使用 AWS Key Management Service (AWS KMS) 加密。若要這麼做,您可以使用 AWS 擁有的金鑰或客戶自管金鑰。當您修改叢集以啟用 AWS KMS 加密時,Amazon Redshift 會自動將資料遷移到新的加密叢集。從加密叢集建立的快照也會加密。您也可以修改叢集和變更 Encrypt database (加密資料庫) 選項,將加密的叢集遷移到未加密的叢集。如需更多詳細資訊,請參閱 變更叢集加密。
雖然您仍然可以在建立叢集後,將預設加密的叢集轉換為未加密,但建議您讓包含敏感資料的叢集保持加密狀態。此外,根據控管您的資料的指導方針或規範,可能會要求您使用加密。例如,支付卡產業資料安全標準 (PCI DSS)、沙賓法案 (SOX)、健康保險流通與責任法案 (HIPAA)和其他這類法規可提供用於處理特定資料類型的指導方針。
Amazon Redshift 使用加密金鑰的階層來加密資料庫。您可以使用 AWS Key Management Service (AWS KMS) 或硬體安全模組 (HSM) 來管理此階層中最上層的加密金鑰。Amazon Redshift 用於加密的程序會因您管理金鑰的方式而有所不同。Amazon Redshift 會自動與 AWS KMS 整合,而不會與 HSM 整合。使用 HSM 時,您必須使用用戶端和伺服器憑證來設定 Amazon Redshift 與您的 HSM 之間的信任連線。
重要
當您停用客戶自管 KMS 金鑰時,Amazon Redshift 可能會失去佈建叢集或無伺服器命名空間的 KMS 金鑰存取權。在上述情況下,Amazon Redshift 會備份 Amazon Redshift 資料倉儲,並使其進入 inaccessible-kms-key 狀態,為期 14 天。如果您在該期間內還原 KMS 金鑰,Amazon Redshift 將會還原存取權,且倉儲將會正常運作。如果 14 天期間結束後 KMS 金鑰仍未還原,Amazon Redshift 將會刪除資料倉儲。倉儲處於 inaccessible-kms-key 狀態時具有下列特性:
您無法在資料倉儲上執行任何查詢。
如果資料倉儲是資料共用的生產者倉儲,則您無法從取用者倉儲對其執行資料共用查詢。
您無法建立跨區域快照副本。
如需還原已停用 KMS 金鑰的相關資訊,請參閱《AWS Key Management Service 開發人員指南》中的啟用和停用金鑰。如果倉儲的 KMS 金鑰已刪除,您可以在 inaccessible-kms-key 狀態的倉儲遭到刪除之前,使用備份建立新的資料倉儲。
可提升效能與可用性的加密程序改善
使用 RA3 節點進行加密
RA3 節點加密程序的更新讓使用體驗變得更好了。加密程序進行期間,讀取和寫入查詢在執行時的效能比較不會因加密而受到影響了。此外,加密完成的速度也快了許多。已更新的程序步驟包括還原操作,以及將叢集中繼資料遷移至目標叢集的操作。改善的體驗會套用至 AWS KMS (舉例) 等加密類型。當您擁有 PB 規模的資料磁碟區時,操作已從幾週減少為幾天。
在加密叢集之前,如果您打算繼續執行資料庫工作負載,則可以透過新增具有彈性調整大小功能的節點來改善效能並加快程序的進行速度。加密進行期間中,您無法使用彈性調整大小功能,因此請在加密之前執行此操作。請注意,新增節點一般會導致成本上升。
使用其他節點類型進行加密
如同 RA3 節點一樣,當您使用 DC2 節點來加密叢集時,您無法執行寫入查詢。您只能執行讀取查詢。
使用 RA3 節點進行加密的使用須知
下列洞察和資源可協助您為加密做好準備並監控加密程序。
-
在啟動加密後執行查詢 — 啟動加密後,可在大約 15 分鐘內執行讀取和寫入操作。整個加密程序所需的完成時間取決於叢集上的資料量和工作負載層級。
-
加密需要多久時間? — 加密資料所需的時間取決於幾個因素:這些因素包括執行的工作負載數量、使用的運算資源、節點數目及節點類型。建議您一開始先在測試環境中執行加密。根據經驗,如果您要處理數 PB 的資料磁碟區,則可能需要 1 至 3 天才能完成加密。
-
如何得知加密已完成? - 在您啟用加密後,第一個快照完成即確認加密已完成。
-
復原加密 — 如果您需要復原加密操作,最好的方法是從在啟動加密前所製作的最新備份進行還原。您必須重新套用在上次備份後所做過的任何新更新 (更新/刪除/插入)。
-
執行資料表還原 — 請注意,您無法將資料表從未加密的叢集還原至已加密的叢集。
-
加密單一節點叢集 — 加密單一節點叢集有效能限制。其所需時間比加密多節點叢集還要久。
-
在加密後建立備份 — 當您加密叢集中的資料時,要等到整個叢集完成加密後,才會建立備份。此操作所需的時間會有所不同。視叢集大小而定,備份所需的時間從幾小時到幾天不等。加密完成後,會延遲一段時間才能建立備份。
請注意,由於在加密程序進行期間會發生備份與還原操作,因此使用
BACKUP NO所建立的任何資料表或具體化視觀表不會保留下來。如需詳細資訊,請參閱 CREATE TABLE 或 CREATE MATERIALIZED VIEW。
使用 AWS KMS 進行加密
當您選擇 AWS KMS 來管理 Amazon Redshift 的金鑰時,加密金鑰分為四個階層。這些金鑰按層次順序列出為根金鑰、叢集加密金鑰 (CEK)、資料庫加密金鑰 (DEK) 和資料加密金鑰。
當您啟動叢集時,Amazon Redshift 會傳回 Amazon Redshift 或您的 AWS 帳戶已建立或有許可在 AWS KMS 中使用的 AWS KMS keys 清單。您可以選取 KMS 金鑰作為您在加密階層中的根金鑰。
根據預設,Amazon Redshift 會選取自動產生的 AWS 擁有的金鑰,作為您的 AWS 帳戶在 Amazon Redshift 中使用的根金鑰。
如果您不想要使用預設金鑰,則在 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,其中,它會與 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 KMS 加密的快照複製到另一個 AWS 區域
AWS KMS 金鑰為 AWS 區域 專用。如果您想要啟用將 Amazon Redshift 快照從某一個加密來源叢集複製到另一個 AWS 區域 的功能,但希望對目的地中的快照使用您自己的 AWS KMS 金鑰,那麼您需要設定授權,讓 Amazon Redshift 能夠在目的地 AWS 區域 中使用您帳戶中的根金鑰。此授權可讓 Amazon Redshift 在目的地 AWS 區域 中加密快照。如果您希望使用 AWS 區域 擁有的金鑰加密目的地中的快照,則不需要在目的地 AWS 區域 設定任何授權。如需跨區域快照複製的相關資訊,請參閱將快照複製到另一個 AWS 區域。
注意
如果您啟用從加密叢集複製快照,並使用 AWS KMS 做為您的根金鑰,則無法重新命名您的叢集,因為叢集名稱是加密內容的一部分。如果您必須重新命名您的叢集,您可以停用來源 AWS 區域中快照的複製,重新命名叢集,然後再次設定和啟用快照的複製。
為複製快照設定授予的程序如下所示。
-
在目的地 AWS 區域中,執行下列動作來建立快照複製授予:
-
如果還沒有可使用的 AWS KMS 金鑰,請加以建立。如需建立 AWS KMS 金鑰的相關資訊,請參閱《AWS Key Management Service 開發人員指南》中的建立金鑰。
-
指定快照複製授予的名稱。對於您的 AWS 帳戶,此名稱在該 AWS 區域中必須是唯一的。
-
指定您要為其建立授予的 AWS KMS 金鑰 ID。如果您不指定金鑰 ID,該授予即會套用至您的預設金鑰。
-
-
在來源 AWS 區域中,啟用快照的複製,並指定您在目的地 AWS 區域中建立的快照複製授予的名稱。
如果您使用 AWS CLI、Amazon Redshift API 或 SDK 啟用快照的複製,前述程序才為必要。如果是使用主控台,在啟用跨區域快照複製時,Amazon Redshift 會提供適當的工作流程來設定授予。如需使用主控台來為 AWS KMS 加密叢集設定跨區域快照複製的相關資訊,請參閱設定 AWS KMS 加密叢集的跨區域快照副本。
在將快照複製到目的地 AWS 區域之前,Amazon Redshift 會使用來源 AWS 區域中的根金鑰將快照解密,並使用 Amazon Redshift 內部管理的隨機產生 RSA 金鑰重新對其進行臨時加密。然後,Amazon Redshift 會透過安全通道將快照複製到目的地 AWS 區域、使用內部受管 RSA 金鑰將快照解密,然後使用目的地 AWS 區域中的根金鑰重新加密快照。
使用硬體安全模組進行加密
如果您不使用 AWS KMS 進行金鑰管理,您可以對 Amazon Redshift 的金鑰管理使用硬體安全模組 (HSM)。
重要
DC2 和 RA3 節點類型不支援 HSM 加密。
HSM 為可針對金鑰產生和管理提供直接控制的裝置。其會透過將金鑰管理與應用程式資料庫層分開以提供更好的安全性。Amazon Redshift 支援使用 AWS CloudHSM Classic 來管理金鑰。此加密程序與使用 HSM 而非 AWS KMS 來管理您的加密金鑰時不同。
重要
Amazon Redshift 只支援 AWS CloudHSM Classic。我們不支援較新版的 AWS CloudHSM 服務。
AWS CloudHSM Classic 已不對新客戶開放。如需詳細資訊,請參閱 CloudHSM Classic 定價
設定您的叢集使用 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 會為指定叢集以及叢集的任何自動或手動快照輪換 CEK。Amazon Redshift 也會為指定叢集輪換 DEK,但是當快照儲存在 Amazon Simple Storage Service (Amazon S3) 內並使用現有 DEK 進行加密時,則無法輪換快照的 DEK。
在輪換進行中時,叢集會處於 ROTATING_KEYS 狀態直到完成為止,完成時叢集會回到 AVAILABLE 狀態。Amazon Redshift 會在金鑰輪換程序期間處理解密和重新加密。
注意
您無法為沒有來源叢集的快照輪換金鑰。刪除叢集之前,請考慮其快照是否仰賴於金鑰輪換。
由於叢集金鑰輪換程序期間暫時無法使用,您應該只在您的資料需求或當您懷疑金鑰可能已遭到盜用時才輪換金鑰。做為最佳實務,您應該檢閱儲存的資料類型,並計畫輪換加密該資料之金鑰的頻率。輪換金鑰的頻率因對於資料安全性的公司政策,以及有關敏感資料和法規合規的任何產業標準而有所不同。確保您的計畫可平衡您的叢集對於可用性考量的安全性需求。
如需輪換金鑰的詳細資訊,請參閱 輪換加密金鑰。