View a markdown version of this page

啟用 Apache Spark 加密 - Amazon Athena

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

啟用 Apache Spark 加密

您可以在 Athena 上啟用 Apache Spark 加密。這樣做可以加密 Spark 節點之間傳輸中的資料,也可以加密 Spark 本機儲存的靜態資料。若要增強此資料的安全性,Athena 使用下列加密組態:

spark.io.encryption.keySizeBits="256" spark.io.encryption.keygen.algorithm="HmacSHA384"

若要啟用 Spark 加密,您可以使用 Athena 主控台 AWS CLI、 或 Athena API。

若要建立已啟用 Spark 加密的新筆記本
  1. 前往 https://console.aws.amazon.com/athena/ 開啟 Athena 主控台。

  2. 如果未顯示主控台的導覽窗格,請選擇左側的展開選單。

  3. 執行以下任意一項:

    • 在 Notebook explorer (筆記本瀏覽器) 中,選擇 Create notebook (建立筆記本)。

    • 在 Notebook editor (筆記本瀏覽器) 中,選擇 Create notebook (建立筆記本),或選擇加號圖示 (+) 以新增筆記本。

  4. 在筆記本名稱中,輸入筆記本的名稱。

  5. 展開 Spark 屬性選項。

  6. 選取開啟 Spark 加密。

  7. 選擇建立。

您建立的筆記本工作階段已加密。如常使用新的筆記本。當您稍後啟動使用筆記本的新工作階段時,新的工作階段也會加密。

您也可以使用 Athena 主控台為現有筆記本啟用 Spark 加密。

若要啟用現有筆記本的加密
  1. 為先前建立的記事本開啟新的工作階段。

  2. 在筆記本編輯器中,從右上角的 Session (工作階段) 選單中,選擇 Edit session (編輯工作階段)。

  3. 在編輯工作階段詳細資訊對話方塊中,展開 Spark 屬性。

  4. 選取開啟 Spark 加密。

  5. 選擇儲存。

主控台會啟動已啟用加密的新工作階段。您為此筆記本建立的最新工作階段也會啟用加密。

您可以使用 在啟動工作階段時,透過指定適當的 Spark 屬性 AWS CLI 來啟用加密。

使用 AWS CLI 啟用 Spark 加密
  1. 使用類似下列命令來建立指定 Spark 加密屬性的引擎組態 JSON 物件。

    ENGINE_CONFIGURATION_JSON=$( cat <<EOF { "CoordinatorDpuSize": 1, "MaxConcurrentDpus": 20, "DefaultExecutorDpuSize": 1, "SparkProperties": { "spark.authenticate": "true", "spark.io.encryption.enabled": "true", "spark.network.crypto.enabled": "true" } } EOF )
  2. 在 中 AWS CLI,使用 athena start-session命令,並將您建立的 JSON 物件傳遞至--engine-configuration引數,如下列範例所示:

    aws athena start-session \ --region "region" \ --work-group "your-work-group" \ --engine-configuration "$ENGINE_CONFIGURATION_JSON"

對於 Apache Spark 3.5 版工作階段,您可以在引擎組態的 Classifications元素中指定相同的加密屬性,而不是在 SparkProperties元素中指定相同的加密屬性來啟用加密。加密行為與舊版相同:Athena 使用 AES 256 位元加密搭配HmacSHA384演算法,加密 Spark 節點與 Spark 本機存放之靜態資料之間的傳輸中資料。使用如下所示的命令,其中分類Name必須為 spark-defaults。

aws athena start-session \ --region "region" \ --work-group "your-work-group" \ --engine-configuration '{ "Classifications": [{ "Name": "spark-defaults", "Properties": { "spark.authenticate": "true", "spark.io.encryption.enabled": "true", "spark.network.crypto.enabled": "true" } }] }'

您也可以在建立工作群組時啟用 Spark 加密。在工作群組組態的 Classifications元素EngineConfiguration中指定相同的加密屬性,如下列範例所示。您稍後在此工作群組中開始的工作階段會繼承加密組態。

aws athena create-work-group \ --region "region" \ --name "your-work-group" \ --configuration '{ "EngineVersion": { "SelectedEngineVersion": "Apache Spark version 3.5" }, "ExecutionRole": "execution-role", "EngineConfiguration": { "Classifications": [{ "Name": "spark-defaults", "Properties": { "spark.authenticate": "true", "spark.io.encryption.enabled": "true", "spark.network.crypto.enabled": "true" } }] } }'

若要使用 Athena API 啟用 Spark 加密,請使用 StartSession 動作及其 EngineConfiguration SparkProperties 參數,以在 StartSession 請求中指定加密組態。

針對 Apache Spark 3.5 版工作階段,請使用 StartSession動作搭配 EngineConfiguration Classifications 參數,而非 SparkProperties來指定加密屬性。分類名稱必須為 spark-defaults。