

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

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

 AWS [共同責任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)適用於 Amazon EMR Serverless 中的資料保護。如此模型所述， 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 Serverless 加密選項來加密靜態和傳輸中的資料。
+ 如果您在 AWS 透過命令列界面或 API 存取 時需要 FIPS 140-2 驗證的密碼編譯模組，請使用 FIPS 端點。如需可用 FIPS 端點的詳細資訊，請參閱[聯邦資訊處理標準 (FIPS) 140-2](https://aws.amazon.com/compliance/fips/)。

我們強烈建議您絕對不要將敏感的識別資訊，例如客戶的帳戶號碼，放入自由格式欄位，例如**名稱**欄位。這包括當您使用 Amazon EMR Serverless 或使用主控台 AWS CLI、API 或 AWS SDKs的其他 AWS 服務時。您在 Amazon EMR Serverless 或其他 服務中輸入的任何資料都可能被選入診斷日誌中。當您提供外部伺服器的 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>

每個 EMR Serverless 應用程式都使用特定的發行版本，其中包括 EMRFS (EMR 檔案系統）。Amazon S3 加密適用於讀取和寫入至 Amazon S3 的 EMR 檔案系統 (EMRFS) 物件。當您啟用靜態加密時，您可以將 Amazon S3 伺服器端加密 (SSE) 或用戶端加密 (CSE) 指定為**預設加密模式**。或者，使用**每個儲存貯體加密覆寫為個別儲存貯體指定不同的加密**方法。無論是否啟用了 Amazon S3 加密功能，Transport Layer Security (TLS) 都會將 EMR 叢集節點和 Amazon S3 之間傳送中的 EMRFS 物件加密。如果您使用 Amazon S3 CSE 搭配客戶受管金鑰，則用於在 EMR Serverless 應用程式中執行任務的執行角色必須能夠存取金鑰。如需 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 儲存貯體都已預設設定加密，且上傳至 S3 儲存貯體的所有新物件都會在靜態時自動加密，Amazon S3 會在將資料寫入磁碟時加密物件層級的資料，並在存取資料時解密資料。如需 SSE 的詳細資訊，請參閱《Amazon Simple Storage Service 開發人員指南》中的[使用伺服器端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)。

當您在 Amazon EMR Serverless 中指定 SSE 時，您可以在兩個不同的金鑰管理系統之間進行選擇：
+ **SSE-S3** – Amazon S3 為您管理密鑰。EMR Serverless 不需要額外的設定。
+ **SSE-KMS** - 您可以使用 AWS KMS key 設定適用於 EMR Serverless 的政策。EMR Serverless 不需要額外的設定。

若要對您寫入 Amazon S3 的資料使用 AWS KMS 加密，當您使用 `StartJobRun` API 時有兩個選項。您可以為寫入 Amazon S3 的所有項目啟用加密，或為寫入特定儲存貯體的資料啟用加密。如需 `StartJobRun` API 的詳細資訊，請參閱 [EMR Serverless API 參考](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html)。

若要為您寫入 Amazon S3 的所有資料開啟 AWS KMS 加密，請在呼叫 `StartJobRun` API 時使用下列命令。

```
--conf spark.hadoop.fs.s3.enableServerSideEncryption=true 
--conf spark.hadoop.fs.s3.serverSideEncryption.kms.keyId={{<kms_id>}}
```

若要為寫入特定儲存貯體的資料開啟 AWS KMS 加密，請在呼叫 `StartJobRun` API 時使用下列命令。

```
--conf spark.hadoop.fs.s3.bucket.{{<amzn-s3-demo-bucket1>}}.enableServerSideEncryption=true
--conf spark.hadoop.fs.s3.bucket.{{<amzn-s3-demo-bucket1>}}.serverSideEncryption.kms.keyId={{<kms-id>}}
```

SSE 搭配客戶提供的金鑰 (SSE-C) 不適用於 EMR Serverless。

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

透過 Amazon S3 用戶端加密，Amazon S3 加密和解密會在每個 Amazon EMR 版本上可用的 EMRFS 用戶端中進行。物件在上傳至 Amazon S3 之前會先加密，並在下載後解密。您指定的提供者會提供用戶端使用的加密金鑰。用戶端可以使用 AWS KMS (CSE-KMS) 提供的金鑰或提供用戶端根金鑰 (CSE-C) 的自訂 Java 類別。CSE-KMS 和 CSE-C 之間的加密細節略有不同，具體取決於指定的提供者和要解密或加密之物件的中繼資料。如果您使用 Amazon S3 CSE 搭配客戶受管金鑰，則用於在 EMR Serverless 應用程式中執行任務的執行角色必須能夠存取金鑰。可能需要支付額外的 KMS 費用。如需這些差異的詳細資訊，請參閱《Amazon Simple Storage Service 開發人員指南》中的[使用用戶端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html)。

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

存放在暫時性儲存的資料會使用業界標準的 AES-256 密碼編譯演算法，以服務擁有的金鑰加密。

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

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

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

Amazon EMR Serverless 提供下列應用程式特定的加密功能：
+ Spark
  + 根據預設，Spark 驅動程式和執行器之間的通訊會經過身分驗證且為內部。驅動程式和執行器之間的 RPC 通訊已加密。
+ Hive
  +  AWS Glue 中繼存放區與 EMR Serverless 應用程式之間的通訊會透過 TLS 進行。

應該使用 Amazon S3 儲存貯體 IAM 政策上的 [ aws:SecureTransport](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Boolean) 條件，僅允許 HTTPS (TLS) 上的加密連線。