

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

# 資料保護
<a name="data-protection"></a>

 AWS [共同責任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)適用於 Amazon EMR on EKS 中的資料保護。如此模型所述， AWS 負責保護執行所有 雲端的 AWS 全球基礎設施。您必須負責維護在此基礎設施上託管之內容的控制權。此內容包括您所使用 AWS 服務的安全組態和管理任務。如需有關資料隱私權的詳細資訊，請參閱[資料隱私權常見問答集](https://aws.amazon.com/compliance/data-privacy-faq/)。如需歐洲資料保護的相關資訊，請參閱 AWS 安全部落格上的[AWS 共同責任模型和 GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 部落格文章。

基於資料保護目的，我們建議您保護 AWS 帳戶登入資料，並使用 AWS Identity and Access Management (IAM) 設定個別帳戶。如此一來，每個使用者都只會獲得授予完成其任務所必須的許可。我們也建議您採用下列方式保護資料：
+ 每個帳戶均要使用多重要素驗證 (MFA)。
+ 使用 SSL/TLS 與 AWS 資源通訊。建議使用 TLS 1.2 或更新版本。
+ 使用 設定 API 和使用者活動記錄 AWS CloudTrail。
+ 使用 AWS 加密解決方案，以及 AWS 服務中的所有預設安全控制。
+ 使用進階的受管安全服務 (例如 Amazon Macie)，協助探索和保護儲存在 Simple Storage Service (Amazon Simple Storage Service (Amazon S3)) 的個人資料。
+ 使用 Amazon EMR on EKS 加密選項來加密靜態和傳輸中的資料。
+ 如果您在 AWS 透過命令列界面或 API 存取 時需要 FIPS 140-2 驗證的密碼編譯模組，請使用 FIPS 端點。如需有關 FIPS 和 FIPS 端點的更多相關資訊，請參閱[聯邦資訊處理標準 (FIPS) 140-2 概觀](https://aws.amazon.com/compliance/fips/)。

我們強烈建議您絕對不要將客戶帳戶號碼等敏感的識別資訊，放在自由格式的欄位中，例如**名稱**欄位。這包括當您使用 Amazon EMR on EKS 或使用主控台 AWS CLI、API 或 AWS SDKs的其他 AWS 服務時。在 Amazon EMR on EKS 或其他服務中輸入的任何資料都可能被選入診斷日誌中。當您提供外部伺服器的 URL 時，請勿在驗證您對該伺服器請求的 URL 中包含憑證資訊。

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

資料加密有助於防止未經授權的使用者讀取叢集上的資料和相關的資料儲存體系統。這包括儲存到持久性媒體的資料 (稱為靜態資料)，以及透過網路傳送時可能會被攔截的資料 (稱為傳輸中資料)。

資料加密需要金鑰和憑證。您可以從多個選項中選擇，包括 管理的金鑰 AWS Key Management Service、Amazon S3 管理的金鑰，以及您提供的自訂提供者的金鑰和憑證。使用 AWS KMS 做為金鑰提供者時，會收取儲存和使用加密金鑰的費用。如需詳細資訊，請參閱[AWS KMS 定價](https://aws.amazon.com/kms/pricing/)。

在指定加密選項之前，請先決定要使用的金鑰和憑證管理系統。然後為您指定作為加密設定一部分的自訂提供者建立金鑰和憑證。

### Amazon S3 中 EMRFS 資料的靜態加密
<a name="encryption-emrfs"></a>

Amazon S3 加密適用於讀取和寫入至 Amazon S3 的 EMR 檔案系統 (EMRFS) 物件。啟用靜態加密時，會指定 Amazon S3 伺服器端加密 (SSE) 或用戶端加密 (CSE) 作為**預設加密模式**。或者，您可以使用 **Per bucket encryption overrides (每個儲存貯體加密覆寫)** 為個別儲存貯體指定不同的加密方法。無論是否啟用了 Amazon S3 加密功能，Transport Layer Security (TLS) 都會將 EMR 叢集節點和 Amazon S3 之間傳送中的 EMRFS 物件加密。如需有關 Amazon S3 加密的深入資訊，請參閱《Amazon Simple Storage Service 開發人員指南》中的[使用加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingEncryption.html)。

**注意**  
當您使用 時 AWS KMS， 會收取儲存和使用加密金鑰的費用。如需詳細資訊，請參閱[AWS KMS 定價](https://aws.amazon.com/kms/pricing/)。

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

當您設定 Amazon S3 伺服器端加密時，Amazon S3 會在將資料寫入磁碟時在物件層級加密資料，並在存取時解密資料。如需有關 SSE 的詳細資訊，請參閱《Amazon Simple Storage Service 開發人員指南》中的[使用伺服器端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)。

當您在 Amazon EMR on EKS 中指定 SSE 時，可以在兩種不同的金鑰管理系統中選擇：
+ **SSE-S3** – Amazon S3 為您管理密鑰。
+ **SSE-KMS** - 您可以使用 AWS KMS key 來設定適用於 Amazon EMR on EKS 的政策。

具有客戶提供的金鑰之 SSE (SSE-C) 不適用於 Amazon EMR on EKS。

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

使用 Amazon S3 用戶端加密，Amazon S3 加密及解密會在您 EMR 叢集上的 EMRFS 用戶端中進行。物件在上傳至 Amazon S3 之前會先加密，並在下載後解密。您指定的提供者會提供用戶端使用的加密金鑰。用戶端可以使用 AWS KMS (CSE-KMS) 提供的金鑰或提供用戶端根金鑰 (CSE-C) 的自訂 Java 類別。CSE-KMS 和 CSE-C 之間的加密細節略有不同，具體取決於指定的提供者和要解密或加密之物件的中繼資料。如需有關這些差異的詳細資訊，請參閱《Amazon Simple Storage Service 開發人員指南》中的[使用用戶端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html)。

**注意**  
Amazon S3 CSE 只能確保與 Amazon S3 交換的 EMRFS 資料經過加密；而不會加密叢集執行個體磁碟區上的所有資料。此外，由於 Hue 不使用 EMRFS，因此 Hue S3 檔案瀏覽器寫入到 Amazon S3 的物件不會被加密。

### 本機磁碟加密
<a name="local-disk-encryption"></a>

Apache Spark 支援加密寫入到本機磁碟的臨時資料。這涵蓋了隨機排序檔案、隨機排序溢出以及儲存在磁碟上用於快取和廣播變數的資料區塊。它不包括使用 API (例如 `saveAsHadoopFile` 或 `saveAsTable`) 對應用程式產生的輸出資料進行加密。它也可能不包括使用者明確建立的臨時檔案。如需詳細資訊，請參閱 Spark 文件中的[本機儲存加密](https://spark.apache.org/docs/latest/security.html#local-storage-encryption)。Spark 不支援本機磁碟上的加密資料，例如當資料不適合記憶體時，由執行程式處理程序寫入本機磁碟的中繼資料。保留在磁碟的資料限定為作業執行期，而 Spark 會在每次執行作業時動態產生用來加密資料的金鑰。一旦 Spark 作業終止，沒有其他程序可以解密資料。

對於驅動程式和執行程式 Pod，您可以加密保留在已掛載磁碟區的靜態資料。您可以搭配 AWS Kubernetes 使用三種不同的原生儲存選項：[EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)、[EFS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEFS.html) 和 [FSx for Lustre](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html)。這三種選項全部都可使用服務受管金鑰或 AWS KMS key提供靜態加密。如需詳細資訊，請參閱 [EKS 最佳實務指南](https://aws.github.io/aws-eks-best-practices/security/docs/data)。使用此方法，所有保留在已掛載磁碟區的資料都會加密。

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

可以將 KMS 設定為自動輪換 KMS 金鑰。這將每年輪換一次金鑰，同時無限期儲存舊金鑰，以便您的資料仍然可以解密。如需詳細資訊，請參閱[輪換 AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)。

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

數種加密機制在使用傳輸中加密時啟用。這些是開放原始碼功能，僅適用特定應用程式，可能會隨 Amazon EMR on EKS 版本而異。下列應用程式特定的加密功能可透過 Amazon EMR on EKS 啟用：
+ Spark
  + 會使用在 Amazon EMR 5.9.0 版本和更新版本中的 AES-256 密碼來加密 Spark 元件之間的內部 RPC 通訊 (例如區塊傳輸服務和外部混洗服務)。在較早版本中，內部 RPC 通訊使用 SASL 搭配 DIGEST-MD5 做為密碼進行加密。
  + HTTP 協定通訊具有例如 Spark 歷史記錄伺服器和已啟用 HTTPS 檔案伺服器的使用者介面，使用 Spark 的 SSL 組態進行加密。如需詳細資訊，請參閱 Spark 文件中的 [SSL 組態](https://spark.apache.org/docs/latest/security.html#ssl-configuration)。

  如需詳細資訊，請參閱 [Spark 安全設定](http://spark.apache.org/docs/latest/security.html)。
+ 應該使用 Amazon S3 儲存貯體 IAM 政策上的 [ aws:SecureTransport](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Boolean) 條件，僅允許 HTTPS (TLS) 上的加密連線。
+ 串流至 JDBC 或 ODBC 用戶端的查詢結果會使用 TLS 來加密。