

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 设置 CSE-CUSTOM


要使用 CSE-CUSTOM，您必须通过实现 [Keyring](https://docs.amazonaws.cn/encryption-sdk/latest/developer-guide/choose-keyring.html) 接口来创建自定义密钥提供程序。以下是一个实现示例。

```
public class CustomKeyring implements Keyring {
  public CustomKeyring()  {
    // custom code
  }

  @Override
  public EncryptionMaterials onEncrypt(EncryptionMaterials encryptionMaterials) {
    // custom code
  }

  @Override
  public DecryptionMaterials onDecrypt(DecryptionMaterials decryptionMaterials,
      ListEncryptedDataKey list) {
    // custom code
  }
```

您可以在两个主要范围内启用客户端加密自定义密钥 (CSE-CUSTOM)：
+ 第一个范围是集群范围的配置：

  ```
  [
    {
      "Classification":"core-site",
      "Properties": {
         "fs.s3a.encryption.algorithm": "CSE-CUSTOM",
         "fs.s3a.cse.customKeyringProvider.uri":"S3 path of custom jar",
         "fs.s3a.encryption.cse.custom.keyring.class.name":"fully qualified class name"
      }
    }
  ]
  ```
+ 第二个是特定于作业或应用程序的配置。可以按如下方式为特定 Spark 应用程序设置 CSE-CUSTOM：

  ```
  spark-submit --conf spark.hadoop.fs.s3a.encryption.algorithm=CSE-CUSTOM --conf spark.hadoop.fs.s3a.encryption.cse.custom.keyring.class.name=fully qualified class name
  ```
**注意**  
确保类路径中存在生成 encryption/decryption 密钥所需的自定义 jar。