

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

# 設定 CSE-CUSTOM
<a name="emr-s3a-cse-custom"></a>

若要使用 CSE-CUSTOM，您必須實作 [Keyring](https://docs.aws.amazon.com/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
  ```
**注意**  
確保類別路徑中存在產生加密/解密金鑰所需的自訂 jar。