

 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/)。

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

# 將加密資料上傳到 Amazon S3
<a name="t_uploading-encrypted-data"></a>

Amazon S3 同時支援伺服器端加密和用戶端加密。此主題討論伺服器端和用戶端加密之間的差異，並說明將用戶端加密與 Amazon Redshift 搭配使用的步驟。伺服器端加密對 Amazon Redshift 來說是透明的。

## 伺服器端加密
<a name="server-side-encryption"></a>

伺服器端加密是靜態資料加密，也就是說，Amazon S3 會在上傳資料時加密您的資料，並在您存取資料時將資料解密。使用 COPY 命令載入資料表時，與從 Amazon S3 上伺服器端加密或未加密的物件載入時沒有差異。如需伺服器端加密的相關資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的[使用伺服器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)。

## 用戶端加密
<a name="client-side-encryption"></a>

在用戶端加密中，您的用戶端應用程式會管理您的資料的加密、加密金鑰和相關工具。您可以使用用戶端加密將資料上傳至 Amazon S3 儲存貯體，然後使用 COPY 命令載入資料搭配 ENCRYPTED 選項和私有加密金鑰，以提供更高的安全性。

您可以使用封套加密來加密您的資料。利用*封套加密*，您的應用程式會以獨佔方式處理所有加密。您的私有加密金鑰和未加密的資料永遠不會傳送到 AWS，因此請務必安全地管理加密金鑰。如果您遺失加密金鑰，您將無法取消加密資料，也無法從中復原加密金鑰 AWS。封套加密會結合快速對稱加密的效能，同時保有非對稱金鑰所提供金鑰管理的更高安全性。一次性使用對稱金鑰 (信封對稱金鑰) 是由您的 Amazon S3 加密用戶端產生，用來加密您的資料，然後該金鑰會由您的根金鑰加密，並隨著您的資料儲存在 Amazon S3。Amazon Redshift 在載入期間存取您的資料時，系統會使用您的實際金鑰來擷取並解密加密的對稱金鑰，然後將資料解密。

若要在 Amazon Redshift 中使用 Amazon S3 用戶端加密資料，請參閱《Amazon Simple Storage Service 使用者指南》**的[使用用戶端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html)來遵循所述步驟，並搭配您使用的其他要求：
+ **對稱加密 –** 適用於 Java 的 AWS 開發套件 `AmazonS3EncryptionClient` 類別使用上述基於對稱金鑰加密的封套加密程序。使用此類別來建立 Amazon S3 用戶端，以上傳用戶端加密的資料。
+ **256 位元 AES 根對稱金鑰 –** 根金鑰會加密信封金鑰。您可以將根金鑰傳遞至您的 `AmazonS3EncryptionClient` 類別執行個體。儲存此金鑰，因為您將需要用它將資料複製到 Amazon Redshift。
+ **用來儲存加密信封金鑰的物件中繼資料 –** 依預設，Amazon S3 會將信封金鑰儲存為 `AmazonS3EncryptionClient` 類別的物件中繼資料。儲存為物件中繼資料的加密信封金鑰會在解密程序期間使用。

**注意**  
若您在初次使用加密 API 時得到密碼套件加密錯誤訊息，您的 JDK 版本可能包含將加密及解密轉換之金鑰長度上限限制為 128 位元的 Java Cryptography Extension (JCE) 管轄權政策檔案。如需有關解決此問題的資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[使用適用於 Java 的 AWS SDK 指定用戶端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryptionUpload.html)。

如需使用 COPY 命令將用戶端加密檔案載入至您的 Amazon Redshift 資料表的詳細資訊，請參閱[從 Amazon S3 載入加密的資料檔案](c_loading-encrypted-files.md)。

## 範例：上傳用戶端加密資料
<a name="client-side-encryption-example"></a>

如需如何使用適用於 Java 的 AWS SDK 上傳用戶端加密資料的範例，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[使用用戶端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/encrypt-client-side-symmetric-master-key.html)。

第二個選項會顯示在用戶端加密期間要讓資料可以在 Amazon Redshift 中載入，您必須進行的選擇。具體來說，此範例會顯示使用物件中繼資料來儲存加密的信封金鑰和使用 256 位元 AES 根對稱金鑰。

此範例提供使用適用於 Java 的 AWS 開發套件建立 256 位元 AES 對稱根金鑰並將其儲存至 檔案的範例程式碼。然後該範例會使用可先在用戶端上先加密樣本資料的 S3 加密用戶端，將物件上傳至 Amazon S3。此範例也會下載物件，並驗證資料一致。