

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# 資料加密
<a name="security-encryption"></a>

資料保護是指保護往返 Amazon Redshift 的傳輸中資料，以及儲存在 Amazon Redshift 資料中心內磁碟的靜態資料。您可以透過 SSL 或用戶端加密來保護傳輸中的資料。在 Amazon Redshift 中保護靜態資料有下列選項。
+ **使用伺服器端加密** — 您可以請求 Amazon Redshift 來加密資料，再將它儲存至其資料中心內的磁碟，然後在您下載時解密物件。
+ **使用用戶端加密** — 您可以在用戶端加密資料，再將加密的資料上傳至 Amazon Redshift。在這種情況下，您可以管理加密程序、加密金鑰和相關工具。

# 靜態加密
<a name="security-server-side-encryption"></a>

伺服器端加密與靜態資料加密有關；亦即，Amazon Redshift 會選擇性地在將資料寫入資料中心時將其加密，以及在您存取該資料時將其解密。只要您有驗證請求並具備存取許可，存取加密資料或未加密資料的方式並無不同。

Amazon Redshift 會透過加密保護靜態資料。您可以選擇性地使用進階加密標準 AES-256 來保護儲存在叢集內磁碟上的所有資料和 Amazon S3 中的所有備份。

若要管理用於加密和解密 Amazon Redshift 資源的金鑰，您可以使用 [AWS Key Management Service(AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/).AWS KMScombines 安全、高可用性的硬體和軟體，以提供針對雲端擴展的金鑰管理系統。使用 AWS KMS，您可以建立加密金鑰並定義控制如何使用這些金鑰的政策。 AWS KMS支援AWS CloudTrail，因此您可以稽核金鑰使用情況，以確認金鑰是否適當使用。您可以搭配 Amazon Redshift 和支援的AWS 服務使用AWS KMS金鑰。如需 支援的 服務清單AWS KMS，請參閱《 *AWS Key Management Service開發人員指南*》中的[AWS服務使用方式AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services.html)。

如果您選擇使用 管理佈建叢集或無伺服器命名空間的管理員密碼AWS Secrets Manager，Amazon Redshift 也會接受使用 AWS Secrets Manager來加密憑證的額外 AWSKMS 金鑰。此額外金鑰可以是自動產生的金鑰AWS Secrets Manager，或您提供的自訂金鑰。

Amazon Redshift 查詢編輯器 v2 會安全地儲存輸入到查詢編輯器中的資訊，如下所示：
+ 用來加密查詢編輯器 v2 資料的 KMS 金鑰 Amazon Resource Name (ARN)。
+ 資料庫連線資訊。
+ 檔案和資料夾的名稱與內容。

Amazon Redshift 查詢編輯器 v2 會搭配您的 KMS 金鑰或服務帳戶 KMS 金鑰，使用區塊層級加密來加密資訊。Amazon Redshift 資料的加密會由 Amazon Redshift 叢集屬性來控制。

**Topics**
+ [Amazon Redshift 資料庫加密](working-with-db-encryption.md)

# Amazon Redshift 資料庫加密
<a name="working-with-db-encryption"></a>

在 Amazon Redshift 中，您的資料庫預設為加密狀態，以保護靜態資料。資料庫加密適用於叢集及其快照。

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

雖然您仍然可以在建立叢集後，將預設加密的叢集轉換為未加密，但建議您讓包含敏感資料的叢集保持加密狀態。此外，根據控管您的資料的指導方針或規範，可能會要求您使用加密。例如，支付卡產業資料安全標準 (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 開發人員指南》**中的[啟用和停用金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html)。如果倉儲的 KMS 金鑰已刪除，您可以在 `inaccessible-kms-key` 狀態的倉儲遭到刪除之前，使用備份建立新的資料倉儲。

## 可提升效能與可用性的加密程序改善
<a name="resize-classic-encryption"></a>

### 使用 RA3 節點進行加密
<a name="resize-classic-encryption-ra3"></a>

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

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

### 使用其他節點類型進行加密
<a name="resize-classic-encryption-ds2"></a>

如同 RA3 節點一樣，當您使用 DC2 節點來加密叢集時，您無法執行寫入查詢。您只能執行讀取查詢。

### 使用 RA3 節點進行加密的使用須知
<a name="resize-classic-encryption-usage"></a>

下列洞察和資源可協助您為加密做好準備並監控加密程序。
+ **在啟動加密後執行查詢** — 啟動加密後，可在大約 15 分鐘內執行讀取和寫入操作。整個加密程序所需的完成時間取決於叢集上的資料量和工作負載層級。
+ **加密需要多久時間？** — 加密資料所需的時間取決於幾個因素：這些因素包括執行的工作負載數量、使用的運算資源、節點數目及節點類型。建議您一開始先在測試環境中執行加密。根據經驗，如果您要處理數 PB 的資料磁碟區，則可能需要 1 至 3 天才能完成加密。
+ **如何得知加密已完成？** - 在您啟用加密後，第一個快照完成即確認加密已完成。
+ **復原加密** — 如果您需要復原加密操作，最好的方法是從在啟動加密前所製作的最新備份進行還原。您必須重新套用在上次備份後所做過的任何新更新 (更新/刪除/插入)。
+ **執行資料表還原** — 請注意，您無法將資料表從未加密的叢集還原至已加密的叢集。
+ **加密單一節點叢集** — 加密單一節點叢集有效能限制。其所需時間比加密多節點叢集還要久。
+ **在加密後建立備份** — 當您加密叢集中的資料時，要等到整個叢集完成加密後，才會建立備份。此操作所需的時間會有所不同。視叢集大小而定，備份所需的時間從幾小時到幾天不等。加密完成後，會延遲一段時間才能建立備份。

  請注意，由於在加密程序進行期間會發生備份與還原操作，因此使用 `BACKUP NO` 所建立的任何資料表或具體化視觀表不會保留下來。如需詳細資訊，請參閱 [CREATE TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html) 或 [CREATE MATERIALIZED VIEW](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-create-sql-command.html)。

**Topics**
+ [可提升效能與可用性的加密程序改善](#resize-classic-encryption)
+ [使用 加密 AWS KMS](#working-with-aws-kms)
+ [使用硬體安全模組進行加密](#working-with-HSM)
+ [加密金鑰輪換](#working-with-key-rotation)
+ [變更叢集加密](changing-cluster-encryption.md)
+ [遷移至 HSM 加密的叢集](migrating-to-an-encrypted-cluster.md)
+ [輪換加密金鑰](manage-key-rotation-console.md)

## 使用 加密 AWS KMS
<a name="working-with-aws-kms"></a>

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

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

根據預設，Amazon Redshift 會選取自動產生的 AWS擁有金鑰，做為 AWS 您的帳戶在 Amazon Redshift 中使用的根金鑰。

如果您不想使用預設金鑰，您必須在 中分別擁有 （或建立） 客戶受管 KMS 金鑰， AWS KMS 才能在 Amazon Redshift 中啟動叢集。客戶受管金鑰可為您提供更多彈性，包含建立、輪換、停用、定義存取控制，以及稽核用於協助保護您資料之加密金鑰的能力。如需建立 KMS 金鑰的相關資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。

如果您想要使用來自另一個 AWS 帳戶的 AWS KMS 金鑰，您必須擁有使用金鑰的許可，並在 Amazon Redshift 中指定其 Amazon Resource Name (ARN)。如需有關 中金鑰存取的詳細資訊 AWS KMS，請參閱《 *AWS Key Management Service 開發人員指南*》中的[控制對金鑰的存取](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html)。

選擇根金鑰後，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 開發人員指南*》中的[概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)。

接下來，Amazon Redshift 會隨機產生金鑰來用作 DEK，並在叢集中將它載入記憶體。解密的 CEK 可用來加密 DEK，然後透過安全管道從 Amazon Redshift 要在內部儲存的叢集，傳遞至與叢集不同網路中的磁碟。如同 CEK，加密和解密版本的 DEK 會在叢集中載入記憶體。接著使用 DEK 的解密版本來加密為資料庫中每個資料區塊隨機產生的個別加密金鑰。

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

如需建立使用 AWS KMS 金鑰加密的 Amazon Redshift 叢集的詳細資訊，請參閱 [建立叢集](create-cluster.md)。

### 將 AWS KMS加密的快照複製到另一個快照 AWS 區域
<a name="configure-snapshot-copy-grant"></a>

AWS KMS 金鑰專屬於 AWS 區域。如果您想要啟用將 Amazon Redshift 快照從加密來源叢集複製到另一個叢集 AWS 區域，但想要將自己的 AWS KMS 金鑰用於目的地中的快照，則需要設定授予 Amazon Redshift 在目的地的帳戶中使用根金鑰 AWS 區域。此授權可讓 Amazon Redshift 在目的地 AWS 區域中加密快照。如果您希望目的地中的快照使用 AWS 區域擁有的金鑰加密，則不需要在目的地中設定任何授予 AWS 區域。如需跨區域快照複製的相關資訊，請參閱[將快照複製到另一個 AWS 區域](cross-region-snapshot-copy.md)。

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

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

1. 在目的地 AWS 區域中，執行下列動作來建立快照複製授予：
   +  如果您還沒有要使用的 AWS KMS 金鑰，請建立一個。如需建立 AWS KMS 金鑰的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。
   + 指定快照複製授予的名稱。此名稱在 AWS 帳戶的該 AWS 區域中必須是唯一的。
   + 指定您要為其建立授予的 AWS KMS 金鑰 ID。如果您不指定金鑰 ID，該授予即會套用至您的預設金鑰。

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

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

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

## 使用硬體安全模組進行加密
<a name="working-with-HSM"></a>

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

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

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

**重要**  
Amazon Redshift 僅支援 AWS CloudHSM Classic。我們不支援較新的 AWS CloudHSM 服務。  
AWS CloudHSM Classic 已關閉給新客戶。如需詳細資訊，請參閱 [CloudHSM Classic Pricing](https://aws.amazon.com/cloudhsm/pricing-classic/)。並非所有 AWS 區域都提供 AWS CloudHSM Classic。如需可用 AWS 區域的詳細資訊，請參閱[AWS 區域表](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。

設定您的叢集使用 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 之間的信任連線
<a name="configure-trusted-connection"></a>

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

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

您可以提供 Amazon Redshift 相關的 HSM IP 地址、HSM 分割區名稱、HSM 分割區密碼和公有 HSM 伺服器憑證 (其使用內部根金鑰進行加密)。Amazon Redshift 會完成組態程序，並驗證它可連線至 HSM。如果它無法連線，則會讓叢集處於 INCOMPATIBLE\$1HSM 狀態，並且不會建立叢集。在此情況下，您必須刪除不完整的叢集並重試。

**重要**  
修改您的叢集以使用不同的 HSM 分割區時，Amazon Redshift 會驗證它可以連線至新的分割區，但無法驗證存在有效的加密金鑰。使用新的分割區之前，您必須將金鑰複寫至新的分割區。如果叢集已重新啟動，並且 Amazon Redshift 找不到有效的金鑰，重新啟動會失敗。如需詳細資訊，請參閱[跨 HSM 複寫金鑰](https://docs.aws.amazon.com/cloudhsm/latest/userguide/cli-clone-hapg.html)。

初始組態之後，如果 Amazon Redshift 無法連線至 HSM，即會記錄事件。如需這些事件的相關資訊，請參閱 [Amazon Redshift 事件通知](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-event-notifications.html)。

## 加密金鑰輪換
<a name="working-with-key-rotation"></a>

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

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

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

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

如需輪換金鑰的詳細資訊，請參閱 [輪換加密金鑰](manage-key-rotation-console.md)。

# 變更叢集加密
<a name="changing-cluster-encryption"></a>

您可以使用 AWS擁有的金鑰或客戶受管金鑰，將未加密的叢集修改為使用 AWS Key Management Service (AWS KMS) 加密。當您修改叢集以啟用 AWS KMS 加密時，Amazon Redshift 會自動將資料遷移到新的加密叢集。您也可以使用 修改叢集 AWS CLI，但不能使用 ，將加密的叢集遷移至未加密的叢集 AWS 管理主控台。

在遷移操作期間，只能以唯讀模式使用您的叢集，而且叢集的狀態會顯示為 **resizing (調整大小)**。

如果您的叢集設定為啟用跨AWS 區域快照複本，您必須在變更加密之前停用它。如需詳細資訊，請參閱[將快照複製到另一個 AWS 區域](cross-region-snapshot-copy.md)及[為 AWS KMS加密的叢集設定跨區域快照複本](xregioncopy-kms-encrypted-snapshot.md)。您無法經由修改叢集來啟用硬體安全模組 (HSM) 加密。反之，請建立新的 HSM 加密叢集，然後將您的資料遷移至新叢集。如需詳細資訊，請參閱[遷移至 HSM 加密的叢集](migrating-to-an-encrypted-cluster.md)。

------
#### [ Amazon Redshift console ]

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)：// 開啟 Amazon Redshift 主控台。

1. 在導覽功能表上，選擇**叢集**，然後選擇您要修改加密的叢集。

1. 選擇 **Properties (屬性)**。

1. 在**資料庫組態**區段中，選擇**編輯**，然後選擇**編輯加密**。

1. 選擇其中一個加密選項，然後選擇**儲存變更**。

------
#### [ AWS CLI ]

若要修改您未加密的叢集以使用 AWS KMS，請執行 `modify-cluster` CLI 命令並指定 `–-encrypted`，如下所示。在預設情況下會使用預設 KMS 金鑰。若要指定客戶受管金鑰，請包含 `--kms-key-id` 選項。

```
aws redshift modify-cluster --cluster-identifier <value> --encrypted --kms-key-id <value>
```

若要從叢集移除加密，請執行下列 CLI 命令。

```
aws redshift modify-cluster --cluster-identifier <value> --no-encrypted
```

------

# 遷移至 HSM 加密的叢集
<a name="migrating-to-an-encrypted-cluster"></a>

若要將未加密的叢集遷移至使用硬體安全模組 (HSM) 加密的叢集，請建立新的加密叢集，然後將您的資料移至新叢集。您無法經由修改叢集來遷移 HSM 加密的叢集。

若要從未加密的叢集遷移至 HSM 加密的叢集，請先從現有的來源叢集卸載您的資料。然後在新的目標叢集中，使用所選的加密設定將資料重新載入。如需啟動加密的叢集的相關資訊，請參閱[Amazon Redshift 資料庫加密](working-with-db-encryption.md)。

遷移程序期間，您的來源叢集可供唯讀查詢，直到最後一個步驟為止。最後一個步驟是重新命名目標和來源叢集，這會切換端點，使得所有流量會路由至新的目標叢集。在您重新命名後重新開機之前，目標叢集將無法使用。在資料傳送時，請暫停來源叢集上的所有資料載入和其他寫入操作。<a name="prepare-for-migration"></a>

**準備遷移**

1. 識別與 Amazon Redshift 互動的所有相依系統，例如商業智慧 (BI) 工具和擷取、轉換和載入 (ETL) 系統。

1. 識別驗證查詢以測試遷移。

   例如，您可以使用下列查詢來尋找使用者定義資料表的數目。

   ```
   select count(*)
   from pg_table_def
   where schemaname != 'pg_catalog';
   ```

   下列查詢會傳回所有使用者定義資料表的清單，和每個資料表中資料列的數目。

   ```
   select "table", tbl_rows
   from svv_table_info;
   ```

1. 選擇適合遷移的好時機。若要了解叢集使用率何時最低，請監控叢集指標，例如 CPU 使用率和資料庫連線數目。如需詳細資訊，請參閱[檢視叢集效能資料](performance-metrics-perf.md)。

1. 捨棄未使用的資料表。

   若要建立資料表的清單和查詢每個資料表的次數，請執行下列查詢。

   ```
   select database,
   schema,
   table_id,
   "table",
   round(size::float/(1024*1024)::float,2) as size,
   sortkey1,
   nvl(s.num_qs,0) num_qs
   from svv_table_info t
   left join (select tbl,
   perm_table_name,
   count(distinct query) num_qs
   from stl_scan s
   where s.userid > 1
   and   s.perm_table_name not in ('Internal worktable','S3')
   group by tbl,
   perm_table_name) s on s.tbl = t.table_id
   where t."schema" not in ('pg_internal');
   ```

1. 啟動新的加密叢集。

   對目標叢集使用與來源叢集相同的連線埠號碼。如需啟動加密的叢集的相關資訊，請參閱[Amazon Redshift 資料庫加密](working-with-db-encryption.md)。

1. 設定卸載和載入程序。

   您可以使用 [Amazon Redshift Unload/Copy Utility](https://github.com/awslabs/amazon-redshift-utils/tree/master/src/UnloadCopyUtility) 來幫助您在叢集之間遷移資料。該公用程式會從來源叢集匯出資料至 Amazon S3 上的位置。資料會使用 加密 AWS KMS。然後該公用程式會將資料自動匯入至目標。您可以在遷移完成之後，選擇性地使用該公用程式來清理 Amazon S3。

1. 執行測試以驗證您的程序並估計寫入操作必須暫停的時間長度。

   在卸載和載入操作期間，透過暫停資料載入和其他寫入操作來保有資料一致性。使用您的其中一個最大的資料表，執行卸載和載入程序來幫助您估計時間。

1. 建立資料庫物件，例如結構描述、檢視和資料表。為了協助您產生必要的資料定義語言 (DDL) 陳述式，您可以在 AWS GitHub 儲存庫的 [AdminViews](https://github.com/awslabs/amazon-redshift-utils/tree/master/src/AdminViews) 中使用指令碼。<a name="migration-your-cluster"></a>

**遷移叢集**

1. 停止來源叢集上的所有 ETL 處理。

   若要確認程序中沒有寫入操作，請使用 Amazon Redshift 管理主控台來監控寫入 IOPS。如需詳細資訊，請參閱[檢視叢集效能資料](performance-metrics-perf.md)。

1. 執行您稍早識別的驗證查詢，以在遷移之前收集未加密的來源叢集的相關資訊。

1. (選用) 建立一個工作負載管理 (WLM) 佇列以使用來源和目標叢集中最大可用的資源。例如，建立名為 `data_migrate` 的佇列，並設定具有 95% 記憶體和並行 4 的佇列。如需詳細資訊，請參閱《Amazon Redshift 資料庫開發人員指南》**中的[根據使用者群組和查詢群組將查詢路由至佇列](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-wlm-routing-queries-to-queues.html)。

1. 使用 `data_migrate` 佇列，執行 UnloadCopyUtility。

   使用 Amazon Redshift 主控台監控 UNLOAD 和 COPY 程序。

1. 再次執行驗證查詢，並驗證該結果符合來源叢集的結果。

1. 重新命名您的來源和目標叢集以交換端點。為了避免干擾，請在上班時間以外執行此操作。

1. 驗證您可以使用您的所有 SQL 用戶端 (例如 ETL 和報表工具) 連線至目標叢集。

1. 關閉未加密的來源叢集。

# 輪換加密金鑰
<a name="manage-key-rotation-console"></a>

您可以使用下列程序，藉由使用 Amazon Redshift 主控台來輪換加密金鑰。

**輪換叢集的加密金鑰**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)：// 開啟 Amazon Redshift 主控台。

1. 在導覽功能表上，選擇**叢集**，然後選擇您要更新加密金鑰的叢集。

1. 針對 **Actions (動作)**，選擇 **Rotate encryption (輪換加密)** 以顯示 **Rotate encryption keys (輪換加密金鑰)** 頁面。

1. 在 **Rotate encryption keys (輪換加密金鑰)** 頁面上，選擇 **Rotate encryption keys (輪換加密金鑰)**。

# 傳輸中加密
<a name="security-encryption-in-transit"></a>

您可以設定您的環境以保護傳輸中的資料的機密性及完整性。

以下詳細資訊適用於在 Amazon Redshift 叢集與 SQL 用戶端之間透過 JDBC/ODBC 加密傳輸中的資料：
+ 您可以從 SQL 用戶端工具透過 Java 資料庫連線 (JDBC) 和開放式資料庫連線 (ODBC) 來連線至 Amazon Redshift 叢集。
+ Amazon Redshift 支援 Secure Sockets Layer (SSL) 連線，可將資料和伺服器憑證加密，以驗證用戶端所連線的伺服器憑證。用戶端會連線到 Amazon Redshift 叢集的領導節點。如需詳細資訊，請參閱[設定連線的安全選項](connecting-ssl-support.md)。
+ 為了支援 SSL 連線，Amazon Redshift 會在每個叢集上建立並安裝 AWS Certificate Manager(ACM) 發行的憑證。如需詳細資訊，請參閱[將 SSL 連線轉換為使用 ACM 憑證](connecting-transitioning-to-acm-certs.md)。
+ 為了保護您的AWS雲端內傳輸中的資料，Amazon Redshift 使用硬體加速 SSL 與 Amazon S3 或 Amazon DynamoDB 通訊，以進行 COPY、UNLOAD、備份和還原操作。

以下詳細資訊適用於在 Amazon Redshift 叢集與 Amazon S3 或 DynamoDB 之間加密傳輸中的資料：
+ Amazon Redshift 使用硬體加速的 SSL 來與 Amazon S3 或 DynamoDB 通訊，以進行 COPY、UNLOAD、備份和還原操作。
+ Redshift Spectrum 使用由 (KMS) 管理的帳戶預設金鑰，支援 Amazon S3 伺服器端加密 AWS Key Management Service(SSE)。
+ 您可以使用 Amazon S3 和 加密 Amazon Redshift 負載AWS KMS。如需詳細資訊，請參閱[使用 Amazon S3 加密 Amazon Redshift Loads 和AWS KMS](https://aws.amazon.com/blogs/big-data/encrypt-your-amazon-redshift-loads-with-amazon-s3-and-aws-kms/) 。

下列詳細資訊適用於在 AWS CLISDK 或 API 用戶端與 Amazon Redshift 端點之間傳輸中的資料的加密和簽署：
+ Amazon Redshift 會提供 HTTPS 端點用於加密傳輸中資料。
+ 為了保護向 Amazon Redshift 發出之 API 請求的完整性，必須由發起人簽署 API 呼叫。根據 Signature 第 4 版簽署程序 (Sigv4)，呼叫由 X.509 憑證或客戶的AWS私密存取金鑰進行簽署。如需詳細資訊，請參閱 *AWS 一般參考* 中的 [Signature 第 4 版簽署程序](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。
+ 使用 AWS CLI或其中一個 AWSSDKs 向 提出請求AWS。這些工具會自動使用您設定工具時指定的存取金鑰，替您簽署請求。

以下詳細資訊適用於在 Amazon Redshift 叢集與 Amazon Redshift 查詢編輯器 v2 之間加密傳輸中的資料：
+ 資料會透過 TLS 加密的通道在查詢編輯器 v2 和 Amazon Redshift 叢集之間傳輸。

# Amazon Redshift 的 VPC 加密控制
<a name="security-vpc-encryption-controls"></a>

Amazon Redshift 支援 [ VPC 加密控制](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-encryption-controls.html)，這項安全功能可協助您針對區域內 VPCs內的所有流量，強制執行傳輸中加密。本文件說明如何搭配 Amazon Redshift 叢集和無伺服器工作群組使用 VPC 加密控制。

VPC 加密控制提供集中式控制，以監控和強制執行 VPCs內傳輸中的加密。在強制執行模式中啟用時，可確保所有網路流量都會在硬體層 （使用 AWSNitro System) 或應用程式層 （使用 TLS/SSL) 加密。

Amazon Redshift 與 VPC 加密控制整合，協助您符合醫療保健 (HIPAA)、政府 (FedRAMP) 和金融 (PCI DSS) 等產業的合規要求。

## VPC 加密控制如何與 Amazon Redshift 搭配使用
<a name="security-vpc-encryption-controls-sypnosis"></a>

VPC 加密控制以兩種模式運作：
+ 監控模式：提供流量加密狀態的可見性，並協助識別允許未加密流量的資源。
+ 強制模式：防止建立或使用允許 VPC 內未加密流量的資源。所有流量都必須在硬體層 (Nitro 型執行個體） 或應用程式層 (TLS/SSL) 加密。

## 使用 VPC 加密控制的需求
<a name="security-vpc-encryption-controls-requirements"></a>

**執行個體類型需求**

Amazon Redshift 需要 Nitro 型執行個體來支援 VPC 加密控制。所有現代 Redshift 執行個體類型都支援必要的加密功能。

**SSL/TLS 要求**

在強制執行模式下啟用 VPC 加密控制時，必須將 require\$1ssl 參數設定為 true，且無法停用。這可確保所有用戶端連線都使用加密的 TLS 連線。

## 遷移至 VPC 加密控制項
<a name="security-vpc-encryption-controls-migration"></a>

**對於現有叢集和工作群組**

您無法在包含現有 Redshift 叢集或無伺服器工作群組的 VPC 上，以強制執行模式啟用 VPC 加密控制。如果您有現有的叢集或工作群組，請參閱下列步驟以使用加密控制：

1. 建立現有叢集或命名空間的快照

1. 使用強制執行模式中啟用的 VPC 加密控制建立新的 VPC

1. 使用下列其中一個操作，從快照還原至新的 VPC：
   + 對於佈建的叢集：使用 `restore-from-cluster-snapshot`操作
   + 對於無伺服器：在您的工作群組上使用 `restore-from-snapshot`操作

**在已啟用加密控制的 VPC 中建立新的叢集或工作群組時，需將 require\$1ssl 參數設為 true。**

Amazon Redshift 需要 Nitro 型執行個體來支援 VPC 加密控制。所有現代 Redshift 執行個體類型都支援必要的加密功能。

**SSL/TLS 要求**

在強制執行模式下啟用 VPC 加密控制時，必須將 require\$1ssl 參數設定為 true，且無法停用。這可確保所有用戶端連線都使用加密的 TLS 連線。

## 考量和限制
<a name="security-vpc-encryption-controls-limitations"></a>

在 Amazon Redshift 中使用 VPC 加密控制時，請考慮下列事項：

**VPC 狀態限制**
+ 當 VPC 加密控制處於 `enforce-in-progress` 狀態時，會封鎖叢集和工作群組建立
+ 您必須等到 VPC 達到 `enforce` 模式，才能建立新的資源

**SSL 組態**
+ require\$1ssl 參數：必須一律`true`適用於在加密強制執行 VPCs 中建立的叢集和工作群組
+ 在加密強制執行的 VPC 中建立叢集或工作群組後，就`require_ssl`無法在其生命週期內停用

**區域可用性**

在下列區域中，Amazon Redshift Serverless 的強制執行模式中無法使用此功能：
+ 南美洲 (聖保羅)
+ 歐洲 (蘇黎世)

# 金鑰管理
<a name="security-key-management"></a>

您可以設定您的環境以使用金鑰保護資料：
+ Amazon Redshift 會自動與 key management.AWS KMSuses 信封加密的 AWS Key Management Service(AWS KMS) 整合。如需詳細資訊，請參閱[信封加密](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)。
+ 在 中管理加密金鑰時AWS KMS，Amazon Redshift 會使用以金鑰為基礎的四層架構進行加密。架構包含隨機產生的 AES-256 資料加密金鑰、資料庫金鑰、叢集金鑰和根金鑰。如需詳細資訊，請參閱 [Amazon Redshift 的使用方式AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-redshift.html)。
+ 您可以在 AWS KMS 中建立您自己的客戶受管金鑰。如需詳細資訊，請參閱[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。
+ 您也可以為新的 匯入自己的金鑰材料AWS KMS keys。如需詳細資訊，請參閱在 [AWS Key Management Service(AWS KMS) 中匯入金鑰材料](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html)。
+ Amazon Redshift 支援在外部硬體安全模組 (HSM) 中加密金鑰的管理。HSM 可以是內部部署，也可以是 AWS CloudHSM。使用 HSM 時，您必須使用用戶端和伺服器憑證來設定 Amazon Redshift 與您的 HSM 之間的信任連線。Amazon Redshift 僅支援 AWS CloudHSMClassic 進行金鑰管理。如需詳細資訊，請參閱[使用硬體安全模組進行加密](working-with-db-encryption.md#working-with-HSM)。如需 的資訊AWS CloudHSM，請參閱[什麼是AWS CloudHSM？](https://docs.aws.amazon.com/cloudhsm/latest/userguide/introduction.html) 
+ 您可以輪換加密的叢集的加密金鑰。如需詳細資訊，請參閱[加密金鑰輪換](working-with-db-encryption.md#working-with-key-rotation)。