

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

# 靜態加密
<a name="encryption"></a>

您可以在 Amazon Athena 中，針對同一區域和有限數量區域的 Simple Storage Service (Amazon S3) 中的加密資料執行查詢。您也可以加密 Amazon S3 中的查詢結果和 AWS Glue Data Catalog 中的資料。

您可以加密 Athena 中的以下資產：
+ Simple Storage Service (Amazon S3) 中所有查詢的結果，Athena 會將其存放在稱為 Simple Storage Service (Amazon S3) 結果位置的位置。您可以加密存放在 Simple Storage Service (Amazon S3) 中的查詢結果，而不論 Simple Storage Service (Amazon S3) 中的基礎資料集是否加密。如需相關資訊，請參閱[加密 Amazon S3 中存放的 Athena 查詢結果](encrypting-query-results-stored-in-s3.md)。
+ Data Catalog 中的 AWS Glue 資料。如需相關資訊，請參閱[AWS Glue Data Catalog 中加密中繼資料的許可](#glue-encryption)。

**注意**  
當您使用 Athena 讀取加密資料表時，Athena 會使用為資料表資料指定的加密選項，而不是針對查詢結果的加密選項。如果針對查詢結果和資料表資料設定不同的加密方法或金鑰，則 Athena 讀取資料表資料時，不會使用用於加密或解密查詢結果的加密選項和金鑰。  
不過，如果您使用 Athena 將資料插入具有加密資料的資料表，Athena 會使用為查詢結果指定的加密組態來加密插入的資料。例如，如果您為查詢結果指定`CSE_KMS`加密，Athena 會使用您用於查詢結果加密的相同 AWS KMS 金鑰 ID，以使用 加密插入的資料表資料`CSE_KMS`。

**Topics**
+ [支援的 Amazon S3 加密選項](#encryption-options-S3-and-Athena)
+ [Amazon S3 中加密資料的許可](#permissions-for-encrypting-and-decrypting-data)
+ [AWS Glue Data Catalog 中加密中繼資料的許可](#glue-encryption)
+ [從 CSE-KMS 移轉至 SSE-KMS](migrating-csekms-ssekms.md)
+ [加密 Amazon S3 中存放的 Athena 查詢結果](encrypting-query-results-stored-in-s3.md)
+ [根據 Amazon S3 中加密的資料集建立資料表](creating-tables-based-on-encrypted-datasets-in-s3.md)

## 支援的 Amazon S3 加密選項
<a name="encryption-options-S3-and-Athena"></a>

Athena 支援下列 Simple Storage Service (Amazon S3) 中資料集和查詢結果的加密選項。


| 加密類型 | Description | 跨區域支援 | 
| --- | --- | --- | 
| [SSE-S3 (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html) | 使用 Simple Storage Service (Amazon S3) 受管金鑰的伺服器端加密 (SSE)。 | 是 | 
| [SSE-KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) (建議) | 使用 AWS Key Management Service 客戶受管金鑰的伺服器端加密 (SSE)。 | 是 | 
| [CSE-KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html#client-side-encryption-kms-managed-master-key-intro) | 使用 AWS KMS 客戶受管金鑰的用戶端加密 (CSE)。在 Athena 中，此選項要求您使用 `CREATE TABLE`陳述式搭配指定 `'has_encrypted_data'='true'`或 `'encryption_option'='CSE_KMS'` 的 `TBLPROPERTIES` 子句`'kms_key'='kms_key_arn'`。如需詳細資訊，請參閱[根據 Amazon S3 中加密的資料集建立資料表](creating-tables-based-on-encrypted-datasets-in-s3.md)。 | 否 | 

如需使用 Amazon S3 AWS KMS 加密的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[什麼是 AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 和 [Amazon Simple Storage Service (Amazon S3) 如何使用 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-s3.html) 。如需有關搭配 Athena 使用 SSE-KMS 或 CSE-KMS 的詳細資訊，請參閱 *AWS 大數據部落格*的[啟動：Amazon Athena 新增對查詢加密資料的支援](https://aws.amazon.com/blogs/aws/launch-amazon-athena-adds-support-for-querying-encrypted-data/)。

### 加密建議
<a name="encryption-recommendation"></a>

當您使用客戶受管 KMS 金鑰加密和解密資料表資料和查詢結果時，我們建議您使用 SSE-KMS 加密，而非 SSE-S3 或 CSE-KMS 加密方法。SSE-KMS 實現了控制、簡單性和效能的平衡，因此當您使用受管 KMS 金鑰進行資料加密時，建議使用此方法。

**與 SSE-S3 相比，SSE-KMS 的優勢**
+ SSE-KMS 可讓您指定和管理自己的金鑰，以便增強控制。您可以定義金鑰政策、監督金鑰生命週期，以及監控金鑰用量。

**與 CSE-KMS 相比，SSE-KMS 的優勢**
+ CSE-KMS 需要持續維護 S3 加密用戶端，而與此不同的是，SSE-KMS 不需要額外的基礎設施來加密和解密資料。
+ 由於加密演算法不斷發展演進，CSE-KMS 可能會面臨新舊 S3 加密用戶端之間的相容性問題，而 SSE-KMS 則可避免這一問題。
+ 在加密和解密程序期間，為進行金鑰擷取，SSE-KMS 對 KMS 服務發出的 API 呼叫較少，因此相較於 CSE-KMS，可提供更好的效能。

### 不支援的選項
<a name="encryption-unsupported-options"></a>

不支援下列加密選項：
+ 使用客戶提供金鑰的 SSE (SSE-C)。
+ 使用用戶端受管金鑰的用戶端加密。
+ 非對稱金鑰。

若要比較 Amazon S3 加密選項，請參閱《Amazon Simple Storage Service 使用者指南》**中的[使用加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html)。

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

 對於用戶端加密，請注意有兩種工具可用：
+ [Amazon S3 加密用戶端](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3EncryptionClient.html) – 這只會為 Amazon S3 加密資料，並由 Athena 支援。
+ [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html) – 開發套件可用於跨任何地方加密資料， AWS 但 Athena 不支援。

這些工具不相容，而且使用一個工具加密的資料無法由另一個工具解密。Athena 僅直接支援 Simple Storage Service (Amazon S3) 加密用戶端。如果您使用軟體開發套件來加密資料，您可以從 Athena 執行查詢，但資料會以加密文字傳回。

如果您想要使用 Athena 來查詢已使用 AWS Encryption 軟體開發套件加密的資料，您必須先下載並解密資料，然後使用 Simple Storage Service (Amazon S3) 加密用戶端再次加密資料。

## Amazon S3 中加密資料的許可
<a name="permissions-for-encrypting-and-decrypting-data"></a>

根據您在 Amazon S3 中使用的加密類型，您可能需要針對在 Athena 中使用的政策新增許可 (也稱為「允許」動作)：
+ **SSE-S3** – 如果您使用 SSE-S3 進行加密，Athena 使用者在他們的政策中不需要額外的許可。有適當 Simple Storage Service (Amazon S3) 位置和 Athena 動作的適當 Simple Storage Service (Amazon S3) 許可即已足夠。如需有關允許適當 Athena 和 Simple Storage Service (Amazon S3) 許可的政策的詳細資訊，請參閱[AWS Amazon Athena 的 受管政策](security-iam-awsmanpol.md)和[透過 Athena 控制 Amazon S3 的存取權](s3-permissions.md)。
+ **AWS KMS** – 如果您使用 AWS KMS 進行加密，除了 Athena 和 Amazon S3 許可之外，還必須允許 Athena 使用者執行特定 AWS KMS 動作。您可以透過編輯用於在 Amazon S3 中加密資料的客戶自管金鑰的金鑰政策，來允許這些動作。若要將金鑰使用者新增至適當的 AWS KMS 金鑰政策，您可以使用位於 https：//[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) 的 AWS KMS 主控台。如需如何將使用者新增至 AWS KMS 金鑰政策的資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[允許金鑰使用者使用客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-users)。
**注意**  
進階金鑰政策管理員可以調整金鑰政策。`kms:Decrypt` 是允許 Athena 使用者使用加密的資料集的最低允許動作。若要使用加密的查詢結果，允許的最低動作為 `kms:GenerateDataKey` 和 `kms:Decrypt`。

  使用 Athena 以大量使用 加密的物件查詢 Amazon S3 中的資料集時 AWS KMS， AWS KMS 可能會調節查詢結果。當存在大量小型物件時，這種情況更有可能發生。Athena 會退回重試請求，但仍可能發生調節錯誤。如果您正在使用大量加密物件且遭遇此問題，一個方法是啟用 Simple Storage Service (Amazon S3) 儲存貯體金鑰以減少對 KMS 的呼叫次數。如需詳細資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的[使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)。另一種方式是提高您 AWS KMS的服務配額。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[配額](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html#requests-per-second)。

如需有關搭配 Athena 使用 Simple Storage Service (Amazon S3) 時許可的疑難排解資訊，請參閱[對 Athena 中的問題進行疑難排解](troubleshooting-athena.md) 主題的 [許可](troubleshooting-athena.md#troubleshooting-athena-permissions) 一節。

## AWS Glue Data Catalog 中加密中繼資料的許可
<a name="glue-encryption"></a>

如果您在 [中加密中繼資料 AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html)，則必須將 `"kms:GenerateDataKey"`、 `"kms:Decrypt"`和 `"kms:Encrypt"`動作新增至您用於存取 Athena 的政策。如需相關資訊，請參閱[在 中設定從 Athena 到加密中繼資料的存取權 AWS Glue Data Catalog](access-encrypted-data-glue-data-catalog.md)。