使用 EMRFS 屬性來指定 Amazon S3 加密 - Amazon EMR

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

使用 EMRFS 屬性來指定 Amazon S3 加密

重要

從 Amazon EMR 發行版本 4.8.0 開始,您可以使用安全組態設定來更輕鬆地並透過更多選項套用加密設定。我們建議您使用安全組態。如需詳細資訊,請參閱設定資料加密。本節所述的主控台說明在 4.8.0 之前的發行版本提供。如果您在叢集組態和後續版本的安全組態中使用設定 Amazon S3 加密,則安全組態會覆寫叢集組態。 AWS CLI

建立叢集時,您可以使用主控台或透過或 EMR SDK 使用emrfs-site分類屬性,為 Amazon S3 中的 EMRFS 資料指定伺服器端加密 (SSE) 或用戶端加密 (CSE)。 AWS CLI Amazon S3 SSE 和 CSE 互斥;您可以選擇其中之一,但無法同時選擇。

如需相 AWS CLI 關指示,請參閱下方適用於您加密類型的相關章節。

若要指定 EMRFS 加密選項,請使用 AWS Management Console
  1. 導覽至新的 Amazon EMR 主控台,然後從側邊導覽選取切換至舊主控台。如需有關切換至舊主控台時預期情況的詳細資訊,請參閱使用舊主控台

  2. 選擇 Create cluster (建立叢集),然後選擇 Go to advanced options (前往進階選項)

  3. 選擇 4.7.2 或之前的 Release (版本)

  4. 選擇適用於應用程式的 Software and Steps (軟體和步驟) 的其他選項,然後選擇 Next (下一步)

  5. 選擇在 Hardware (硬體)General Cluster Settings (一般叢集設定) 窗格中適用於您的應用程式的設定。

  6. Security (安全) 窗格上,在 Authentication and encryption (身分驗證和加密) 下,選取要使用的 S3 Encryption (with EMRFS) (S3 加密 (搭配 EMRFS))

    注意

    使用 KMS 金鑰管理的 S3 伺服器端加密 (SSE-KMS) 在使用 Amazon EMR 發行版本 4.4 或更早版本時無法使用。

    • 如果您選擇使用 AWS 金鑰管理的選項,請選擇 AWS KMS 金鑰 ID。如需詳細資訊,請參閱 使用 AWS KMS keys 進行 EMRFS 加密

    • 如果您選擇 S3 client-side encryption with custom materials provider (S3 用戶端加密搭配自訂資料供應商),請提供 Class name (類別名稱)JAR location (JAR 位置)。如需詳細資訊,請參閱 Amazon S3 用戶端加密

  7. 選擇適用於應用程式的其他選項,然後選擇 Create Cluster (建立叢集)

使用 AWS KMS keys 進行 EMRFS 加密

AWS KMS 加密金鑰必須建立在與 Amazon EMR 叢集執行個體相同的區域,以及與 EMRFS 搭配使用的 Amazon S3 儲存貯體所在的區域中。如果您指定的金鑰與用來設定叢集的帳戶位於不同的帳戶中,您必須使用其 ARN 指定金鑰。

Amazon EC2 執行個體設定檔的角色必須具有使用您指定的 KMS 金鑰的許可。Amazon EMR 中執行個體設定檔的預設角色為 EMR_EC2_DefaultRole。如果您對執行個體設定檔使用不同的角色,或向 Amazon S3 請求使用 EMRFS 的 IAM 角色,請確保每個角色都會視情況新增為金鑰使用者。這會授予角色使用 KMS 金鑰的許可。如需詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的使用金鑰政策設定向 Amazon S3 請求使用 EMRFS 的 IAM 角色

您可以使用 AWS Management Console 將執行個體設定檔或 EC2 執行個體設定檔新增至指定 KMS 金鑰的金鑰使用者清單,或使用 AWS CLI 或 AWS SDK 附加適當的金鑰政策。

請記住,Amazon EMR 僅支援對稱 KMS 金鑰。您無法使用非對稱 KMS 金鑰來加密 Amazon EMR 叢集中的靜態資料。如需判斷 KMS 金鑰為對稱或非對稱的說明,請參閱識別對稱和非對稱 KMS 金鑰

下面的程序描述如何使用 AWS Management Console新增預設 Amazon EMR 執行個體設定檔 EMR_EC2_DefaultRole 作為金鑰使用者。這裡假設您已建立 KMS 金鑰。若要建立新的 KMS 金鑰,請參閱《AWS Key Management Service 開發人員指南》中的建立金鑰

將 Amazon EMR 的 EC2 執行個體設定檔新增至加密金鑰使用者的清單
  1. 登入 AWS Management Console 並開啟 AWS Key Management Service (AWS KMS) 主控台,網址為 https://console.aws.amazon.com/kms

  2. 若要變更 AWS 區域,請使用頁面右上角的「地區」選取器。

  3. 選取要修改的 KMS 金鑰別名。

  4. Key Users (金鑰使用者) 下的金鑰詳細資訊頁面上,選擇 Add (新增)

  5. Add key users (新增金鑰使用者) 對話方塊中,選取適當的角色。預設角色的名稱為 EMR_EC2_DefaultRole

  6. 選擇新增

Amazon S3 伺服器端加密

當您設定 Amazon S3 伺服器端加密時,Amazon S3 會在將資料寫入磁碟時在物件層級加密資料,並在存取時解密資料。如需有關 SSE 的詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的使用伺服器端加密保護資料

當您在 Amazon EMR 中指定 SSE 時,您可以在兩種不同的金鑰管理系統中選擇:

  • SSE-S3 – Amazon S3 為您管理密鑰。

  • SSE-KMS — 您可以使用 AWS KMS key 來設定適用於 Amazon EMR 的政策。如需 Amazon EMR 金鑰需求的詳細資訊,請參閱使 AWS KMS keys 用加密

使用客戶提供的金鑰的 SSE (SSE-C) 不適用於 Amazon EMR。

若要建立已啟用 SSE-S3 的叢集,請使用 AWS CLI
  • 鍵入以下命令:

    aws emr create-cluster --release-label emr-4.7.2 or earlier \ --instance-count 3 --instance-type m5.xlarge --emrfs Encryption=ServerSide

您也可以透過設定 fs.s3 來啟用 SSE-S3。 enableServerSide屬性中的加密emrfs-site屬性為 true。請參閱以下 SSE-KMS 的範例並省略金鑰 ID 屬性。

若要建立已啟用 SSE-KMS 的叢集,請使用 AWS CLI
注意

SSE-KMS 僅能在 Amazon EMR 發行版本 4.5.0 及更新版本中使用。

  • 輸入下列 AWS CLI 命令以建立具有 SSE KMS 的叢集,其中 keyID 是一個 AWS KMS key,例如,例如,A4567b8-9900-123a45678901:

    aws emr create-cluster --release-label emr-4.7.2 or earlier --instance-count 3 \ --instance-type m5.xlarge --use-default-roles \ --emrfs Encryption=ServerSide,Args=[fs.s3.serverSideEncryption.kms.keyId=keyId]

    --或--

    使用emrfs-site分類鍵入下列 AWS CLI 命令,並提供內容的組態 JSON 檔案,如下列範例所示:myConfig.json

    aws emr create-cluster --release-label emr-4.7.2 or earlier --instance-count 3 --instance-type m5.xlarge --applications Name=Hadoop --configurations file://myConfig.json --use-default-roles

    範例內容 myConfig.json

    [ { "Classification":"emrfs-site", "Properties": { "fs.s3.enableServerSideEncryption": "true", "fs.s3.serverSideEncryption.kms.keyId":"a4567b8-9900-12ab-1234-123a45678901" } } ]

SSE-S3 和 SSE-KMS 的組態屬性

可使用 emrfs-site 組態分類以設定這些屬性。SSE-KMS 僅能在 Amazon EMR 發行版本 4.5.0 及更新版本中使用。

屬性 預設值 描述
fs.s3.enableServerSideEncryption false

設定為 true 時,會使用伺服器端加密對儲存在 Amazon S3 中的物件加密。如果沒有指定金鑰,則會使用 SSE-S3。

fs.s3.serverSideEncryption.kms.keyId n/a

指定 AWS KMS 金鑰識別碼或 ARN。如果已指定金鑰,則會使用 SSE-KMS。