启用 Apache Spark 加密
您可以在 Athena 上启用 Apache Spark 加密。这样做可以加密 Spark 节点之间的传输中数据,还可以加密 Spark 本地存储的静态数据。为了增强这些数据的安全性,Athena 使用以下加密配置:
spark.io.encryption.keySizeBits="256"
spark.io.encryption.keygen.algorithm="HmacSHA384" 要启用 Spark 加密,可使用 Athena 控制台、Amazon CLI 或 Athena API。
新建启用了 Spark 加密的笔记本
从 https://console.aws.amazon.com/athena/
打开 Athena 控制台。 -
如果控制台导航窗格不可见,请选择左侧的扩展菜单。
-
请执行以下操作之一:
-
在 Notebook explorer(笔记本资源管理器)中,选择 Create notebook(创建笔记本)。
-
在 Notebook editor(笔记本编辑器)中,选择 Create notebook(创建笔记本),或选择加号图标(+)添加笔记本。
-
-
在笔记本名称中,输入笔记本的名称。
-
展开 Spark 属性选项。
-
选择打开 Spark 加密。
-
选择创建。
您创建的笔记本会话已加密。像往常一样使用新笔记本。当您稍后启动使用笔记本的新会话时,也会对新会话进行加密。
您还可以使用 Athena 控制台为现有笔记本启用 Spark 加密。
为现有笔记本启用加密
-
为先前创建的笔记本打开一个新会话。
-
在笔记本编辑器中,从右上角的 Session(会话)菜单中选择 Edit session(编辑会话)。
-
在编辑会话详细信息对话框中,展开 Spark 属性。
-
选择打开 Spark 加密。
-
选择保存。
控制台将启动启用了加密的新会话。您稍后为此笔记本创建的会话也将启用加密。
可在启动会话时使用 Amazon CLI 通过指定相应的 Spark 属性启用加密。
使用 Amazon CLI 启用 Spark 加密
-
使用如下所示的命令创建指定 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 ) -
在 Amazon 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 使用 HmacSHA384 算法的 AES 256 位加密,对 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 加密。在工作组配置的 EngineConfiguration 的 Classifications 元素中指定相同的加密属性,如下例所示。您稍后在此工作组中启动的会话将继承加密配置。
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 版本会话,请使用带有 EngineConfiguration Classifications 参数的 StartSession 操作(而非 SparkProperties)来指定加密属性。分类名称必须是 spark-defaults。