

# 启用 Apache Spark 加密
<a name="notebooks-spark-encryption"></a>

您可以在 Athena 上启用 Apache Spark 加密。这样做可以加密 Spark 节点之间的传输中数据，还可以加密 Spark 本地存储的静态数据。为了增强这些数据的安全性，Athena 使用以下加密配置：

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

要启用 Spark 加密，可使用 Athena 控制台、AWS CLI 或 Athena API。

## 使用 Athena 控制台在全新笔记本中启用 Spark 加密
<a name="notebooks-spark-encryption-athena-console-new-notebook"></a>

**新建启用了 Spark 加密的笔记本**

1. 从 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 打开 Athena 控制台。

1. 如果控制台导航窗格不可见，请选择左侧的扩展菜单。

1. 请执行以下操作之一：
   + 在 **Notebook explorer**（笔记本资源管理器）中，选择 **Create notebook**（创建笔记本）。
   + 在 **Notebook editor**（笔记本编辑器）中，选择 **Create notebook**（创建笔记本），或选择加号图标（**\+**）添加笔记本。

1. 在**笔记本名称**中，输入笔记本的名称。

1. 展开 **Spark 属性**选项。

1. 选择**打开 Spark 加密**。

1. 选择**创建**。

您创建的笔记本会话已加密。像往常一样使用新笔记本。当您稍后启动使用笔记本的新会话时，也会对新会话进行加密。

## 使用 Athena 控制台为现有笔记本启用 Spark 加密
<a name="notebooks-spark-encryption-athena-console-existing-notebook"></a>

您还可以使用 Athena 控制台为现有笔记本启用 Spark 加密。

**为现有笔记本启用加密**

1. 为先前创建的笔记本[打开一个新会话](notebooks-spark-managing.md#opening-a-previously-created-notebook)。

1. 在笔记本编辑器中，从右上角的 **Session**（会话）菜单中选择 **Edit session**（编辑会话）。

1. 在**编辑会话详细信息**对话框中，展开 **Spark 属性**。

1. 选择**打开 Spark 加密**。

1. 选择**保存**。

控制台将启动启用了加密的新会话。您稍后为此笔记本创建的会话也将启用加密。

## 使用 AWS CLI 启用 Spark 加密
<a name="notebooks-spark-encryption-cli"></a>

可在启动会话时使用 AWS CLI 通过指定相应的 Spark 属性启用加密。

**使用 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 
   )
   ```

1. 在 AWS CLI 中，使用 `athena start-session` 命令并将您创建的 JSON 对象传递给 `--engine-configuration` 参数，如以下示例所示：

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

## 使用 Athena API 启用 Spark 加密
<a name="notebooks-spark-encryption-api"></a>

要使用 Athena API 启用 Spark 加密，使用 [StartSession](https://docs.aws.amazon.com/athena/latest/APIReference/API_StartSession.html) 操作及其 [EngineConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_EngineConfiguration.html) `SparkProperties` 参数在 `StartSession` 请求中指定加密配置。