

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# EMRFS 속성을 사용하여 Amazon S3 암호화 지정
<a name="emr-emrfs-encryption"></a>

**중요**  
Amazon EMR 릴리스 버전 4.8.0부터 보안 구성을 사용하여 더 쉽게 더 많은 옵션을 통해 암호화 설정을 적용할 수 있습니다. 보안 구성을 사용하는 것이 좋습니다. 자세한 내용은 [데이터 암호화 구성](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-create-security-configuration.html#emr-security-configuration-encryption)을 참조하세요. 이 섹션에 설명되어 있는 콘솔 지침은 릴리스 버전 4.8.0 이하에서 사용이 가능합니다. AWS CLI 를 사용하여 클러스터 구성과 후속 버전의 보안 구성 모두에서 Amazon S3 암호화를 구성하는 경우 보안 구성이 클러스터 구성을 재정의합니다.

클러스터를 생성할 때 콘솔을 사용하거나 AWS CLI 또는 EMR SDK를 통해 `emrfs-site` 분류 속성을 사용하여 Amazon S3의 EMRFS 데이터에 대해 서버 측 암호화(SSE) 또는 클라이언트 측 암호화(CSE)를 지정할 수 있습니다. Amazon S3 SSE 및 CSE는 상호 배타적이므로 둘 중 하나를 선택할 수 있지만 둘 다 선택할 수는 없습니다.

 AWS CLI 지침은 아래 암호화 유형에 해당하는 섹션을 참조하세요.

**를 사용하여 EMRFS 암호화 옵션을 지정하려면 AWS Management Console**

1. 새 Amazon EMR 콘솔로 이동하고 측면 탐색에서 **이전 콘솔로 전환**을 선택합니다. 이전 콘솔로 전환할 때 예상되는 사항에 대한 자세한 내용은 [이전 콘솔 사용](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in)을 참조하세요.

1. **클러스터 생성** 및 **고급 옵션으로 이동**을 선택합니다.

1. **릴리스**로 4.7.2 이전 버전을 선택합니다.

1. **Software and Steps(소프트웨어 및 단계)**에서 애플리케이션에 적절한 다른 옵션을 선택하고 **다음**을 선택합니다.

1. **하드웨어** 및 **General Cluster Settings(일반 클러스터 설정)** 창에서 애플리케이션에 적절한 설정을 선택합니다.

1. **보안** 창의 **인증 및 암호화**에서 사용하고 싶은 **S3 Encryption (with EMRFS)(S3 암호화(EMRFS 사용))** 옵션을 선택합니다.
**참고**  
Amazon EMR 릴리스 버전 4.4 이하를 사용할 때는 **KMS 키 관리를 사용한 S3 서버 측 암호화**(SSE-KMS)를 사용할 수 없습니다.
   + **AWS Key Management**를 사용하는 옵션을 선택할 경우 **AWS KMS 키 ID**를 선택합니다. 자세한 내용은 [EMRFS 암호화 AWS KMS keys 에 사용](#emr-emrfs-awskms) 단원을 참조하십시오.
   + **S3 client-side encryption with custom materials provider(사용자 지정 자료 공급자를 사용한 S3 클라이언트 측 암호화)**를 선택한 경우에는 **클래스 이름**과 **JAR location(JAR 위치)**을 입력합니다. 자세한 내용은 [Amazon S3 클라이언트 측 암호화](emr-emrfs-encryption-cse.md) 단원을 참조하십시오.

1. 애플리케이션에 적절한 다른 옵션을 선택하고 **클러스터 생성**을 선택합니다.

## EMRFS 암호화 AWS KMS keys 에 사용
<a name="emr-emrfs-awskms"></a>

 AWS KMS 암호화 키는 Amazon EMR 클러스터 인스턴스 및 EMRFS와 함께 사용되는 Amazon S3 버킷과 동일한 리전에서 생성해야 합니다. 지정하는 키가 클러스터를 구성하는 데 사용하는 계정이 아닌 다른 계정에 있는 경우 ARN을 사용하여 해당 키를 지정해야 합니다.

Amazon EC2 인스턴스 프로파일의 역할에는 사용자가 지정하는 KMS를 사용할 수 있는 권한이 있어야 합니다. Amazon EMR에 있는 인스턴스 프로파일의 기본 역할은 `EMR_EC2_DefaultRole`입니다. 인스턴스 프로파일에 다른 역할을 사용하거나 Amazon S3에 대한 EMRFS 요청에 IAM 역할을 사용하는 경우 각 역할이 키 사용자로 적절히 추가되도록 해야 합니다. 이렇게 하면 해당 역할에 KMS 키를 사용할 수 있는 권한이 부여됩니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*에서 [Using Key Policies](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-users) 및 [Amazon S3에 대한 EMRFS 요청의 IAM 역할 구성](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-emrfs-iam-roles.html)을 참조하세요.

 AWS Management Console 를 사용하여 지정된 KMS 키의 키 사용자 목록에 인스턴스 프로파일 또는 EC2 인스턴스 프로파일을 추가하거나 AWS CLI 또는 AWS SDK를 사용하여 적절한 키 정책을 연결할 수 있습니다.

Amazon EMR은 [대칭 KMS 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks)만 지원합니다. [비대칭 KMS 키](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html#asymmetric-cmks)를 사용하여 Amazon EMR 클러스터의 저장된 데이터를 암호화할 수 없습니다. KMS 키가 대칭인지 비대칭인지 확인하는 것과 관련된 도움말은 [Identifying symmetric and asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html)를 참조하세요.

아래 절차에서는 AWS Management Console을 사용하여 기본 Amazon EMR 인스턴스 프로파일(`EMR_EC2_DefaultRole`)을 *키 사용자*로 추가하는 방법을 설명합니다. 이때 KMS 키를 이미 생성했다고 가정합니다. 새 KMS 키를 생성하려면 *AWS Key Management Service 개발자 안내서*에서 [Creating Keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)를 참조하세요.

**Amazon EMR의 EC2 인스턴스 프로파일을 암호화 키 사용자 목록에 추가하는 방법**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) AWS Key Management Service (AWS KMS) 콘솔을 엽니다.

1. 를 변경하려면 페이지 오른쪽 상단의 리전 선택기를 AWS 리전사용합니다.

1. 수정할 KMS 키의 별칭을 선택합니다.

1. 키 세부 정보 페이지의 **Key Users(키 사용자)**에서 **Add(추가)**를 선택합니다.

1. **Add key users(키 사용자 추가)** 대화 상자에서 적절한 역할을 선택합니다. 기본 역할의 이름은 `EMR_EC2_DefaultRole`입니다.

1. **추가**를 선택합니다.

## Amazon S3 서버 측 암호화
<a name="emr-emrfs-encryption-sse"></a>

모든 Amazon S3 버킷에는 기본적으로 암호화가 구성되어 있으며, Amazon S3 버킷에 업로드되는 모든 새 객체는 저장 시 자동으로 암호화됩니다. Amazon S3는 데이터를 디스크에 쓸 때 객체 수준에서 데이터를 암호화하고 액세스 시 데이터를 해독합니다. SSE에 대한 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*에서 [서버 측 암호화를 사용하여 데이터 보호](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)를 참조하세요.

Amazon EMR에서 SSE를 지정할 때 다음 두 가지 키 관리 시스템 중에서 선택할 수 있습니다.
+ **SSE-S3** - Amazon S3에서 자동으로 키를 관리합니다.
+ **SSE-KMS** - AWS KMS key 를 사용하여 Amazon EMR에 적합한 정책을 설정합니다. Amazon EMR의 키 요구 사항에 대한 자세한 내용은 [암호화 AWS KMS keys 에 사용을](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-awskms-keys) 참조하세요.

고객 제공 키를 사용하는 SSE(SSE-C)는 Amazon EMR에서 사용할 수 없습니다.

**를 사용하여 SSE-S3가 활성화된 클러스터를 생성하려면 AWS CLI**
+ 다음 명령을 입력합니다.

  ```
  aws emr create-cluster --release-label emr-4.7.2 or earlier \
  --instance-count 3 --instance-type m5.xlarge --emrfs Encryption=ServerSide
  ```

`emrfs-site` 속성에서 fs.s3.enableServerSideEncryption 속성을 true로 설정하여 SSE-S3을 활성화할 수도 있습니다. 아래의 SSE-KMS 예제를 참조하여 키 ID에 대한 속성을 생략하세요.

**를 사용하여 SSE-KMS가 활성화된 클러스터를 생성하려면 AWS CLI**
**참고**  
SSE-KMS는 Amazon EMR 릴리스 버전 4.5.0 이상에서만 사용이 가능합니다.
+ 다음 AWS CLI 명령을 입력하여 SSE-KMS로 클러스터를 생성합니다. 여기서 *keyID*는 *a4567b8-9900-12ab-1234-123a45678901* AWS KMS key과 같은 입니다.

  ```
  aws emr create-cluster --release-label emr-4.7.2 or earlier --instance-count 3 \
  --instance-type m5.xlarge --use-default-roles \
  --emrfs Encryption=ServerSide,Args=[fs.s3.serverSideEncryption.kms.keyId=keyId]
  ```

  **--또는--**

  `emrfs-site` 분류를 사용하여 다음 AWS CLI 명령을 입력하고 아래 예제와 유사한 내용이 포함된 구성 JSON 파일을 제공합니다`myConfig.json`.

  ```
  aws emr create-cluster --release-label emr-4.7.2 or earlier --instance-count 3 --instance-type m5.xlarge --applications Name=Hadoop --configurations file://myConfig.json --use-default-roles
  ```

  다음은 **myConfig.json** 콘텐츠 예제입니다.

  ```
  [
    {
      "Classification":"emrfs-site",
      "Properties": {
         "fs.s3.enableServerSideEncryption": "true",
         "fs.s3.serverSideEncryption.kms.keyId":"a4567b8-9900-12ab-1234-123a45678901"
      }
    }
  ]
  ```

### SSE-S3 및 SSE-KMS의 구성 속성
<a name="emr-emrfs-encryption-site-sse-properties"></a>

`emrfs-site` 구성 분류를 사용하여 이들 속성을 구성할 수 있습니다. SSE-KMS는 Amazon EMR 릴리스 버전 4.5.0 이상에서만 사용이 가능합니다.


| 속성  | 기본값  | 설명  | 
| --- | --- | --- | 
| fs.s3.enableServerSideEncryption | false |  **true**로 설정할 경우 Amazon S3에 저장된 객체가 서버 측 암호화를 사용하여 암호화됩니다. 키를 지정하지 않으면 SSE-S3가 사용됩니다.  | 
| fs.s3.serverSideEncryption.kms.keyId | n/a |   AWS KMS 키 ID 또는 ARN을 지정합니다. 키를 지정하면 SSE-KMS가 사용됩니다.  | 

# Amazon S3 클라이언트 측 암호화
<a name="emr-emrfs-encryption-cse"></a>

Amazon S3 클라이언트 측 암호화를 사용하면 클러스터의 EMRFS 클라이언트에서 Amazon S3 암호화 및 암호 해독이 수행됩니다. 객체는 Amazon S3에 업로드되기 전에 암호화되고 다운로드된 후 암호 해독됩니다. 지정하는 공급자는 클라이언트가 사용하는 암호화 키를 제공합니다. 클라이언트는 AWS KMS 에서 제공하는 키(CSE-KMS) 또는 클라이언트 측 루트 키(CSE-C)를 제공하는 사용자 지정 Java 클래스를 사용할 수 있습니다. 암호화 세부 사항은 지정된 공급자 및 암호 해독되거나 암호화되는 객체의 메타데이터에 따라 CSE-KMS 및 CSE-C 간에 약간 다릅니다. 이러한 차이에 대한 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [클라이언트 측 암호화를 사용하여 데이터 보호](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html)를 참조하세요.

**참고**  
Amazon S3 CSE는 Amazon S3와 교환하는 EMRFS 데이터만 암호화하며, 클러스터 인스턴스 볼륨에 있는 모든 데이터를 암호화하지는 않습니다. 뿐만 아니라, Hue에서 EMRFS가 사용되지 않으므로 Hue S3 파일 검색기를 사용하여 Amazon S3에 작성된 객체는 암호화되지 않습니다.

**를 사용하여 Amazon S3에서 EMRFS 데이터에 대한 CSE-KMS를 지정하려면 AWS CLI**
+ 다음 명령을 입력하고 *MyKMSKeyID*를 사용할 KMS 키의 키 ID나 ARN으로 바꿉니다.

  ```
  aws emr create-cluster --release-label emr-4.7.2 or earlier
  --emrfs Encryption=ClientSide,ProviderType=KMS,KMSKeyId=MyKMSKeyId
  ```

## 사용자 지정 키 공급자 생성
<a name="emr-emrfs-create-cse-key"></a>

사용자 지정 키 제공업체를 생성할 때 사용하는 암호화 유형에 따라 애플리케이션은 서로 다른 EncryptionMaterialsProvider 인터페이스도 구현해야 합니다. 두 인터페이스 모두 AWS SDK for Java 버전 1.11.0 이상에서 사용할 수 있습니다.
+ Amazon S3 암호화를 구현하려면 [ com.amazonaws.services.s3.model.EncryptionMaterialsProvider 인터페이스](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/EncryptionMaterialsProvider.html)를 사용합니다.
+ 로컬 디스크 암호화를 구현하려면 [ com.amazonaws.services.elasticmapreduce.spi.security.EncryptionMaterialsProvider 인터페이스](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/elasticmapreduce/spi/security/EncryptionMaterialsProvider.html)를 사용합니다.

이 구현을 위해 암호화 구성 요소를 제공하도록 임의의 모든 전략을 사용할 수 있습니다. 예를 들어, 정적 암호화 구성 요소를 제공하거나 더 복잡한 키 관리 시스템과 통합하도록 선택할 수 있습니다.

Amazon S3 암호화를 사용하는 경우 사용자 지정 암호화 구성 요소에 대해 암호화 알고리즘 **AES/GCM/NoPadding**을 사용해야 합니다.

로컬 디스크 암호화를 사용하는 경우 사용자 지정 암호화 구성 요소에 사용할 암호화 알고리즘은 EMR 릴리스에 따라 다릅니다. Amazon EMR 7.0.0 이하의 경우 **AES/GCM/NoPadding**을 사용해야 합니다. Amazon EMR 7.1.0 이상의 경우 **AES**를 사용해야 합니다.

EncryptionMaterialsProvider 클래스는 암호화 컨텍스트별로 암호화 자료를 가져옵니다. Amazon EMR은 직접 호출자가 반환할 올바른 암호화 자료를 결정하는 데 도움이 되도록 런타임에 암호화 컨텍스트 정보를 채웁니다.

**Example 예: EMRFS에서 Amazon S3 암호화를 위해 사용자 지정 키 공급자 사용**  
Amazon EMR이 EncryptionMaterialsProvider 클래스에서 암호화 구성 요소를 가져와서 암호화를 수행할 때 EMRFS는 선택적으로 materialsDescription 인수를 객체의 Amazon S3 URI 및 클러스터의 JobFlowId라는 두 개의 필드로 채웁니다. 이러한 필드는 EncryptionMaterialsProvider 클래스에서 암호화 구성 요소를 선택적으로 반환하기 위해 사용할 수 있습니다.  
예를 들어, 공급자는 Amazon S3 URI 접두사마다 다른 키를 반환할 수 있습니다. Amazon S3 객체에 저장되는 것은 EMRFS에서 생성되어 공급자에게 전달되는 materialsDescription 값이 아니라 반환되는 암호화 구성 요소에 대한 설명입니다. Amazon S3 객체를 암호 해독하는 동안, 암호화 구성 요소 설명이 EncryptionMaterialsProvider 클래스에 전달되므로, 이 경우에도 일치하는 키를 반환하여 객체를 암호 해독할 수 있습니다.  
EncryptionMaterialsProvider 참조 구현은 아래에 제공됩니다. 또 다른 사용자 지정 공급자인 [EMRFSRSAEncryptionMaterialsProvider](https://github.com/awslabs/emr-sample-apps/tree/master/emrfs-plugins/EMRFSRSAEncryptionMaterialsProvider)는 GitHub에서 사용할 수 있습니다.  

```
import com.amazonaws.services.s3.model.EncryptionMaterials;
import com.amazonaws.services.s3.model.EncryptionMaterialsProvider;
import com.amazonaws.services.s3.model.KMSEncryptionMaterials;
import org.apache.hadoop.conf.Configurable;
import org.apache.hadoop.conf.Configuration;

import java.util.Map;

/**
 * Provides KMSEncryptionMaterials according to Configuration
 */
public class MyEncryptionMaterialsProviders implements EncryptionMaterialsProvider, Configurable{
  private Configuration conf;
  private String kmsKeyId;
  private EncryptionMaterials encryptionMaterials;

  private void init() {
    this.kmsKeyId = conf.get("my.kms.key.id");
    this.encryptionMaterials = new KMSEncryptionMaterials(kmsKeyId);
  }

  @Override
  public void setConf(Configuration conf) {
    this.conf = conf;
    init();
  }

  @Override
  public Configuration getConf() {
    return this.conf;
  }

  @Override
  public void refresh() {

  }

  @Override
  public EncryptionMaterials getEncryptionMaterials(Map<String, String> materialsDescription) {
    return this.encryptionMaterials;
  }

  @Override
  public EncryptionMaterials getEncryptionMaterials() {
    return this.encryptionMaterials;
  }
}
```

## 를 사용하여 사용자 지정 재료 공급자 지정 AWS CLI
<a name="emr-emrfs-encryption-cse-custom-cli"></a>

 AWS CLI를 사용하려면 `Encryption`, `ProviderType`, `CustomProviderClass` 및`CustomProviderLocation` 인수를 `emrfs` 옵션으로 전달합니다.

```
aws emr create-cluster --instance-type m5.xlarge --release-label emr-4.7.2 or earlier --emrfs Encryption=ClientSide,ProviderType=Custom,CustomProviderLocation=s3://amzn-s3-demo-bucket/myfolder/provider.jar,CustomProviderClass=classname
```

`Encryption`을 `ClientSide`로 설정하면 클라이언트 측 암호화가 활성화됩니다. `CustomProviderClass`는 `EncryptionMaterialsProvider`객체의 이름이고 `CustomProviderLocation`은 Amazon EMR이 `CustomProviderClass`를 클러스터의 각 노드로 복사하여 클래스 경로에 저장하는 로컬 또는 Amazon S3 위치입니다.

## SDK를 사용하여 사용자 지정 자격 공급자 지정
<a name="emr-emrfs-encryption-cse-custom-sdk"></a>

SDK를 사용하려면 먼저 `fs.s3.cse.encryptionMaterialsProvider.uri` 속성을 설정하여 Amazon S3에 저장하는 사용자 지정 `EncryptionMaterialsProvider` 클래스를 클러스터의 각 노드로 다운로드합니다. 그런 다음 사용자 지정 공급자의 올바른 위치 및 CSE 활성화와 함께 `emrfs-site.xml` 파일에서 이 동작을 구성합니다.

예를 들어 RunJobFlowRequest를 AWS SDK for Java 사용하는에서 코드는 다음과 같을 수 있습니다.

```
<snip>
		Map<String,String> emrfsProperties = new HashMap<String,String>();
	    	emrfsProperties.put("fs.s3.cse.encryptionMaterialsProvider.uri","s3://amzn-s3-demo-bucket/MyCustomEncryptionMaterialsProvider.jar");
	    	emrfsProperties.put("fs.s3.cse.enabled","true");
	    	emrfsProperties.put("fs.s3.consistent","true");
		    emrfsProperties.put("fs.s3.cse.encryptionMaterialsProvider","full.class.name.of.EncryptionMaterialsProvider");

		Configuration myEmrfsConfig = new Configuration()
	    	.withClassification("emrfs-site")
	    	.withProperties(emrfsProperties);

		RunJobFlowRequest request = new RunJobFlowRequest()
			.withName("Custom EncryptionMaterialsProvider")
			.withReleaseLabel("emr-7.12.0")
			.withApplications(myApp)
			.withConfigurations(myEmrfsConfig)
			.withServiceRole("EMR_DefaultRole_V2")
			.withJobFlowRole("EMR_EC2_DefaultRole")
			.withLogUri("s3://myLogUri/")
			.withInstances(new JobFlowInstancesConfig()
				.withEc2KeyName("myEc2Key")
				.withInstanceCount(2)
				.withKeepJobFlowAliveWhenNoSteps(true)
				.withMasterInstanceType("m5.xlarge")
				.withSlaveInstanceType("m5.xlarge")
			);						
					
		RunJobFlowResult result = emr.runJobFlow(request);
</snip>
```

## 사용자 지정 EncryptionMaterialsProvider(인수 포함)
<a name="emr-emrfs-encryption-custommaterials"></a>

공급자에게 직접 인수를 전달해야 할 수 있습니다. 이를 위해 사용자 지정 인수를 속성으로 정의한 상태에서 `emrfs-site` 구성 분류를 사용할 수 있습니다. 구성의 예제는 아래와 같습니다(파일 `myConfig.json`로 저장).

```
[
    {
      "Classification": "emrfs-site",
      "Properties": {
        "myProvider.arg1":"value1",
	    "myProvider.arg2":"value2"
      }
    }
 ]
```

의 `create-cluster` 명령을 사용하여 옵션을 사용하여 아래와 같이 파일을 `--configurations` 지정할 AWS CLI수 있습니다.

```
aws emr create-cluster --release-label emr-7.12.0 --instance-type m5.xlarge --instance-count 2 --configurations file://myConfig.json --emrfs Encryption=ClientSide,CustomProviderLocation=s3://amzn-s3-demo-bucket/myfolder/myprovider.jar,CustomProviderClass=classname
```

## EMRFS S3EC V2 지원 구성
<a name="emr-emrfs-encryption-cse-s3v2"></a>

S3 Java SDK 릴리스(1.11.837 이상)에서 다양한 보안 개선 사항과 함께 암호화 클라이언트 버전 2(S3EC V2)를 지원합니다. 자세한 내용은 S3 블로그 게시물 [Updates to the Amazon S3 encryption client](https://aws.amazon.com/blogs/developer/updates-to-the-amazon-s3-encryption-client/)를 참조하세요. 또한 AWS SDK for Java 개발자 안내서의 [Amazon S3 암호화 클라이언트 마이그레이션](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/s3-encryption-migration.html)을 참조하세요.

암호화 클라이언트 V1은 이전 버전과의 호환성을 위해 SDK에서 계속 사용할 수 있습니다. 기본적으로 EMRFS는 CSE가 활성화된 경우 S3EC V1을 사용하여 S3 객체를 암호화하고 해독합니다.

릴리스 버전이 emr-5.31.0 이전(emr-5.30.1 이하, emr-6.1.0 이하)인 EMR 클러스터에서는 S3EC V2로 암호화된 S3 객체를 EMRFS로 해독할 수 없습니다.

**Example S3EC V2를 사용하도록 EMRFS 구성**  
S3EC V2를 사용하도록 EMRFS를 구성하려면 다음 구성을 추가합니다.  

```
{
  "Classification": "emrfs-site",
  "Properties": {
    "fs.s3.cse.encryptionV2.enabled": "true"
  }
}
```

## Amazon S3 클라이언트 측 암호화에 대한 `emrfs-site.xml` 속성
<a name="emr-emrfs-cse-config"></a>


| 속성  | 기본값  | 설명  | 
| --- | --- | --- | 
| fs.s3.cse.enabled | false |  **true**로 설정할 경우 Amazon S3에 저장된 EMRFS 객체가 클라이언트 측 암호화를 사용하여 암호화됩니다.  | 
| fs.s3.cse.encryptionV2.enabled | false |  `true`로 설정할 경우 EMRFS는 S3 암호화 클라이언트 버전 2를 사용하여 S3의 객체를 암호화하고 해독합니다. Amazon EMR 버전 5.31.0 이상에서 사용할 수 있습니다.  | 
| fs.s3.cse.encryptionMaterialsProvider.uri | N/A | 사용자 지정 암호화 자료를 사용할 때 이렇게 설정합니다. EncryptionMaterialsProvider가 있는 JAR이 위치한 Amazon S3 URI. 이 URI를 제공할 경우 Amazon EMR에서 클러스터의 모든 노드에 JAR을 자동으로 다운로드합니다. | 
| fs.s3.cse.encryptionMaterialsProvider | N/A |  클라이언트 측 암호화에 사용되는 `EncryptionMaterialsProvider` 클래스 경로입니다. CSE-KMS를 사용하여 `com.amazon.ws.emr.hadoop.fs.cse.KMSEncryptionMaterialsProvider`를 지정합니다.  | 
| fs.s3.cse.materialsDescription.enabled | false |  `true`로 설정할 경우 암호화된 객체의 materialsDescription이 객체의 Amazon S3 URI와 JobFlowId로 채워집니다. 사용자 지정 암호화 자료를 사용할 때 `true`로 설정합니다.  | 
| fs.s3.cse.kms.keyId | N/A |  CSE-KMS를 사용할 때 적용됩니다. 암호화에 사용되는 KMS 키의 KeyId, ARN 또는 별칭에 대한 값.  | 
| fs.s3.cse.cryptoStorageMode | ObjectMetadata  |  Amazon S3 스토리지 모드. 기본적으로 암호화 정보의 설명은 객체 메타데이터에 저장됩니다. 지침 파일에 설명을 저장할 수도 있습니다. 유효한 값은 ObjectMetadata 및 InstructionFile입니다. 자세한 내용은 [AWS SDK for Java 및 Amazon S3를 사용한 클라이언트 측 데이터 암호화를](https://aws.amazon.com/articles/client-side-data-encryption-with-the-aws-sdk-for-java-and-amazon-s3/) 참조하세요.  | 