

# AWS Glue에서 작성한 데이터 암호화
<a name="encryption-security-configuration"></a>

*보안 구성*은 AWS Glue에서 사용할 수 있는 보안 속성의 집합입니다. 보안 구성을 사용하여 미사용 데이터를 암호화할 수 있습니다. 다음 시나리오는 보안 구성을 사용할 수 있는 몇 가지 방법을 보여줍니다.
+ 암호화된 Amazon CloudWatch Logs를 기록할 AWS Glue 크롤러에 보안 구성을 연결합니다. 크롤러에 보안 구성을 첨부하는 방법에 대한 자세한 내용은 [3단계: 보안 설정 구성](define-crawler-configure-security-settings.md) 섹션을 참조하세요.
+ 암호화된 Amazon Simple Storage Service(Amazon S3) 대상과 암호화된 CloudWatch Logs를 기록할 추출, 변환 및 로드(ETL) 작업에 보안 구성을 연결합니다.
+ 암호화된 Amazon S3 데이터로 작업 북마크를 기록할 ETL 작업에 보안 구성을 연결합니다.
+ 암호화된 Amazon S3 대상을 기록할 개발 엔드포인트에 보안 구성을 연결합니다.

**중요**  
현재 보안 구성은 ETL 작업 파라미터로 전달되는 서버 측 암호화(SSE-S3)를 재정의합니다. 따라서 보안 구성과 SSE-S3 파라미터가 모두 작업과 연결된 경우 SSE-S3 파라미터는 무시됩니다.

보안 구성에 대한 자세한 내용은 [AWS Glue 콘솔에서 보안 구성 관리](console-security-configurations.md) 섹션을 참조하세요.

**Topics**
+ [보안 구성을 사용하도록 AWS Glue 설정](#encryption-setup-Glue)
+ [VPC 작업 및 크롤러용 AWS KMS로 가는 경로 생성](#encryption-kms-vpc-endpoint)
+ [AWS Glue 콘솔에서 보안 구성 관리](console-security-configurations.md)

## 보안 구성을 사용하도록 AWS Glue 설정
<a name="encryption-setup-Glue"></a>

다음 단계에 따라 보안 구성을 사용하도록 AWS Glue 환경을 설정합니다.

1. AWS Key Management Service(AWS KMS) 키를 생성하거나 업데이트하여 CloudWatch Logs를 암호화할 AWS Glue 크롤러 및 작업에 전달되는 IAM 역할에 AWS KMS 권한을 부여합니다. 자세한 내용은 *Amazon CloudWatch Logs User Guide*의 [Encrypt Log Data in CloudWatch Logs Using AWS KMS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)를 참조하세요.

   다음 예에서 *"role1"*, *"role2"*, *"role3"*은 크롤러와 작업에 전달되는 IAM 역할입니다.

   ```
   {
          "Effect": "Allow",
          "Principal": { "Service": "logs.region.amazonaws.com",
          "AWS": [
                   "role1",
                   "role2",
                   "role3"
                ] },
                       "Action": [
                              "kms:Encrypt*",
                              "kms:Decrypt*",
                              "kms:ReEncrypt*",
                              "kms:GenerateDataKey*",
                              "kms:Describe*"
                       ],
                       "Resource": "*"
   }
   ```

   키를 사용하여 CloudWatch Logs를 암호화하는 경우 `"Service": "logs.region.amazonaws.com"`과 같이 `Service` 문이 필요합니다.

1. 사용 전에 AWS KMS 키가 `ENABLED` 상태인지 확인합니다.

**참고**  
Iceberg를 데이터 레이크 프레임워크로 사용하는 경우 Iceberg 테이블에는 서버 측 암호화를 활성화하는 자체 메커니즘이 있습니다. AWS Glue의 보안 구성과 함께 이러한 구성을 활성화해야 합니다. Iceberg 테이블에서 서버 측 암호화를 활성화하려면 [Iceberg 설명서](https://iceberg.apache.org/docs/latest/aws/#s3-server-side-encryption)의 지침을 검토하세요.

## VPC 작업 및 크롤러용 AWS KMS로 가는 경로 생성
<a name="encryption-kms-vpc-endpoint"></a>

인터넷을 통해 연결하지 않고 Virtual Private Cloud(VPC)의 프라이빗 엔드포인트를 통해 AWS KMS에 직접 연결할 수 있습니다. VPC 엔드포인트를 사용하는 경우 VPC와 AWS KMS 사이의 통신은 모두 AWS 네트워크에서 수행됩니다.

VPC 안에 AWS KMS VPC 엔드포인트를 생성할 수 있습니다. 이 단계를 거치지 않으면 작업의 `kms timeout` 또는 크롤러의 `internal service exception`에서 작업이나 크롤러가 실패할 수 있습니다. 자세한 지침은 *AWS Key Management Service Developer Guide*의 [Connecting to AWS KMS Through a VPC Endpoint](https://docs.aws.amazon.com/kms/latest/developerguide/kms-vpc-endpoint.html)를 참조하세요.

이러한 설명에 따라 [VPC 콘솔](https://console.aws.amazon.com//vpc)에서 다음을 수행해야 합니다.
+ **프라이빗 DNS 이름 활성화**를 선택합니다.
+ Java Database Connectivity(JDBC)에 액세스하는 작업 또는 크롤러에 사용할 **보안 그룹**(자체 참조 규칙 포함)을 선택합니다. AWS Glue 연결에 대한 자세한 정보는 [데이터에 연결](glue-connections.md) 섹션을 참조하세요.

JDBC 데이터 스토어에 액세스하는 크롤러 또는 작업에 보안 구성을 추가할 때 AWS Glue에 AWS KMS 엔드포인트로 가는 경로가 있어야 합니다. 네트워크 주소 변환(NAT) 게이트웨이 또는 AWS KMS VPC 엔드포인트에 경로를 제공할 수 있습니다. NAT 게이트웨이를 생성하려면 *Amazon VPC 사용 설명서*의 [NAT 게이트웨이](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)를 참조하세요.

# AWS Glue 콘솔에서 보안 구성 관리
<a name="console-security-configurations"></a>

**주의**  
AWS Glue 보안 구성은 현재 Ray 작업에서 지원되지 않습니다.

AWS Glue의 *보안 구성*에는 암호화된 데이터를 쓸 때 필요한 속성이 포함되어 있습니다. AWS Glue 콘솔에서 보안 구성을 생성하여 크롤러, 작업 및 개발 엔드포인트에서 사용되는 암호화 속성을 제공합니다.

생성한 보안 구성 목록을 모두 보려면 [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)에서 AWS Glue 콘솔을 열고 탐색 창에서 [**보안 구성(Security configurations)**]을 선택합니다.

**보안 구성** 목록은 각 구성에 대한 다음 속성을 표시합니다.

**이름**  
구성 생성 시 제공한 고유 이름입니다. 이름은 문자(A\$1Z), 숫자(0\$19), 하이픈(-) 또는 밑줄(\$1) 포함할 수 있으며 최대 255자로 지정할 수 있습니다.

**Amazon S3 암호화 활성화**  
설정된 경우 `SSE-KMS` 또는 `SSE-S3`와 같은 Amazon Simple Storage Service(S3) 암호화 모드가 데이터 카탈로그의 메타데이터 스토어에 대해 활성화합니다.

**Amazon CloudWatch Logs 암호화 활성화**  
설정된 경우 로그를 Amazon CloudWatch에 작성할 때 `SSE-KMS`와 같은 Amazon S3 암호화 모드가 활성홥니다.

**고급 설정: 작업 북마크 암호화 활성화**  
설정된 경우 작업이 북마크될 때 `CSE-KMS`와 같은 Amazon S3 암호화 모드가 활성화됩니다.

콘솔의 **보안 구성** 섹션에서 구성을 추가하거나 삭제할 수 있습니다. 목록에서 구성 이름을 선택하여 구성에 대한 더 자세한 정보를 알아봅니다. 세부 정보는 구성을 생성할 시 정의한 정보를 포함합니다.

## 보안 구성 추가
<a name="console-security-configurations-wizard"></a>

 AWS Glue 콘솔을 사용하여 보안 구성을 추가하려면 **보안 구성** 페이지에서 **Add security configuration(보안 구성 추가)**을 선택합니다.

![\[이 스크린샷은 보안 구성 추가 페이지를 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/add_security_configuration.png)


 **보안 구성 속성** 

 고유한 보안 구성 이름을 입력합니다. 이름은 문자(A\$1Z), 숫자(0\$19), 하이픈(-) 또는 밑줄(\$1) 포함할 수 있으며 최대 255자로 지정할 수 있습니다.

 **암호화 설정** 

Amazon S3의 데이터 카탈로그에 저장된 메타데이터와 Amazon CloudWatch의 로그에 저장된 메타데이터에 대해 저장 중 암호화를 활성화할 수 있습니다. AWS Glue 콘솔에서 AWS Key Management Service(AWS KMS) 키를 통해 데이터 및 메타데이터의 암호화를 설정하려면 콘솔 사용자에게 정책을 추가합니다. 다음 예와 같이 이 정책은 허용된 리소스를 Amazon S3 데이터 스토어 암호화에 사용되는 주요 Amazon 리소스 이름(ARN)으로 지정해야 합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:GenerateDataKey",
      "kms:Decrypt",
      "kms:Encrypt"
    ],
    "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id"
  }
}
```

------

**중요**  
보안 구성이 크롤러나 작업에 연결되면 전달되는 IAM 역할에 AWS KMS 권한이 있어야 합니다. 자세한 내용은 [AWS Glue에서 작성한 데이터 암호화](encryption-security-configuration.md) 섹션을 참조하세요.

구성을 정의할 때 필요한 다음 속성에 대한 값을 제공할 수 있습니다.

**S3 암호화 활성화**  
Amazon S3 데이터를 작성할 때 Amazon S3 관리형 키(SSE-S3)를 사용하는 서버 측 암호화 또는 AWS KMS 관리형 키(SSE-KMS)를 사용하는 서버 측 암호화를 사용합니다. 이 필드는 선택 사항입니다. Amazon S3 액세스를 허용하려면 AWS KMS 키를 선택하거나 [**키 ARN 입력(Enter a key ARN)**]을 선택하고 키의 ARN을 제공합니다. `arn:aws:kms:region:account-id:key/key-id` 형식에 ARN 이름을 입력합니다. 또한 `arn:aws:kms:region:account-id:alias/alias-name` 같은 키 별칭으로 ARN을 제공할 수도 있습니다.  
작업에 대해 Spark UI를 활성화하면 Amazon S3에 업로드된 Spark UI 로그 파일이 동일한 암호화로 적용됩니다.  
AWS Glue에서는 대칭 고객 마스터 키(CMK)만 지원합니다. **AWS KMS 키( key)** 목록에는 대칭 키만 표시됩니다. 그러나 **Choose a AWS KMS key ARN**(KMS 키 ARN 선택)을 선택하면 콘솔에서 모든 키 유형의 ARN을 입력할 수 있습니다. 대칭 키에 대한 ARN만 입력해야 합니다.

**CloudWatch Logs 암호화 활성화**  
서버 측(SSE-KMS) 암호화는 CloudWatch Logs 암호화에 사용됩니다. 이 필드는 선택 사항입니다. 이를 설정하려면 AWS KMS 키를 선택하거나 [**키 ARN 입력(Enter a key ARN)**]을 선택하고 키에 대한 ARN 이름을 제공합니다. `arn:aws:kms:region:account-id:key/key-id` 형식에 ARN 이름을 입력합니다. 또한 `arn:aws:kms:region:account-id:alias/alias-name` 같은 키 별칭으로 ARN을 제공할 수도 있습니다.

**고급 설정: 작업 북마크 암호화**  
클라이언트 측(CSE-KMS) 암호화는 작업 북마크를 암호화하는 데 사용됩니다. 이 필드는 선택 사항입니다. 북마크 데이터는 저장을 위해 Amazon S3에 전송되기 전에 암호화됩니다. 이를 설정하려면 AWS KMS 키를 선택하거나 [**키 ARN 입력(Enter a key ARN)**]을 선택하고 키에 대한 ARN 이름을 제공합니다. `arn:aws:kms:region:account-id:key/key-id` 형식에 ARN 이름을 입력합니다. 또한 `arn:aws:kms:region:account-id:alias/alias-name` 같은 키 별칭으로 ARN을 제공할 수도 있습니다.

자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 다음 주제를 참조하세요.
+ `SSE-S3`에 대한 자세한 내용은 [Amazon S3가 관리하는 암호화 키(SSE-S3)를 사용하는 서버 측 암호화로 데이터 보호](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)를 참조하십시오.
+ `SSE-KMS`에 대한 자세한 내용은 [AWS KMS keys를 사용하는 서버 측 암호화로 데이터 보호](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)를 참조하세요.
+ `CSE-KMS`에 대한 자세한 내용은 [AWS KMS에 저장된 KMS 키 사용](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html#client-side-encryption-kms-managed-master-key-intro)을 참조하세요.