

# AWS Glue의 데이터 보호
<a name="data-protection"></a>

AWS Glue는 데이터를 보호하기 위해 설계된 여러 기능을 제공합니다.

**Topics**
+ [저장 데이터 암호화](encryption-at-rest.md)
+ [전송 중 데이터 암호화](encryption-in-transit.md)
+ [FIPS 규정 준수](fips-compliance.md)
+ [키 관리](key-management.md)
+ [기타 AWS 서비스에서 AWS Glue 종속성](dependency-on-other-services.md)
+ [개발 엔드포인트](dev-endpoints.md)

# 저장 데이터 암호화
<a name="encryption-at-rest"></a>

AWS Glue는 [Visual ETL 작업 구축](author-job-glue.md) 및 [개발 엔드포인트를 사용하여 스크립트 개발](dev-endpoint.md)에 대한 미사용 데이터 암호화를 지원합니다. [AWS Key Management Service(AWS KMS)](https://aws.amazon.com/kms/) 키를 사용하여 암호화된 미사용 데이터를 기록하도록 ETL(추출, 변환 및 로드) 작업 및 개발 엔드포인트를 구성할 수 있습니다. AWS KMS로 관리하는 키를 사용하여 [AWS Glue Data Catalog](components-overview.md#data-catalog-intro)에 저장된 메타데이터도 암호화할 수 있습니다. 또한 AWS KMS 키를 사용하여 [크롤러](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) 및 ETL 작업에서 생성된 로그와 작업 북마크를 암호화할 수 있습니다.

작업, 크롤러 및 개발 엔드포인트를 통해 Amazon Simple Storage Service(S3)와 Amazon CloudWatch Logs에 기록된 데이터 외에 AWS Glue Data Catalog의 메타데이터 객체도 암호화할 수 있습니다. AWS Glue에 작업, 크롤러 및 개발 엔드포인트를 만들 때 보안 구성을 연결하여 암호화 설정을 제공할 수 있습니다. 보안 구성에는 AWS KMS(SSE-KMS)에 저장된 고객 마스터 키(CMK)나 Amazon S3 관리형 서버 측 암호화 키(SSE-S3)가 포함됩니다. AWS Glue 콘솔에서 보안 구성을 만들 수 있습니다.

계정에서 전체 데이터 카탈로그에 대한 암호화를 설정할 수도 있습니다. 이렇게 하려면 AWS KMS에 저장된 CMK를 지정합니다.

**중요**  
AWS Glue에서는 대칭 고객 관리형 키만 지원합니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [고객 관리형 키(CMK)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)를 참조하세요.  


암호화를 설정한 상태에서 데이터 카탈로그 객체를 추가하거나, 크롤러를 실행하거나, 작업을 실행하거나, 개발 엔드포인트를 시작할 때 SSE-S3 또는 SSE-KMS 키를 사용하여 유휴 데이터를 씁니다. 그리고 신뢰할 수 있는 전송 계층 보안(TLS) 프로토콜을 통해서만 Java 데이터베이스 연결(JDBC) 데이터 스토어에 액세스하도록 AWS Glue를 구성할 수 있습니다.

AWS Glue에서 다음 위치의 암호화 설정을 제어합니다.
+ 데이터 카탈로그의 설정입니다.
+ 사용자가 생성하는 보안 구성입니다.
+ 사용자의 AWS Glue ETL(추출, 변환 및 로드) 작업에 파라미터로 전달되는 서버 측 암호화 설정(SSE-S3 또는 SSE-KMS)입니다.

암호화를 설정하는 방법에 대한 자세한 내용은 [AWS Glue에서 암호화 설정](set-up-encryption.md) 단원을 참조하십시오.

**Topics**
+ [데이터 카탈로그 암호화](encrypt-glue-data-catalog.md)
+ [연결 암호 암호화](encrypt-connection-passwords.md)
+ [AWS Glue에서 작성한 데이터 암호화](encryption-security-configuration.md)

# 데이터 카탈로그 암호화
<a name="encrypt-glue-data-catalog"></a>

AWS Glue Data Catalog 암호화는 민감한 데이터에 대한 보안을 강화합니다. AWS Glue는 AWS Key Management Service(AWS KMS)와 통합되어 데이터 카탈로그에 저장된 메타데이터를 암호화합니다. AWS Glue 콘솔 또는 AWS CLI를 사용하여 데이터 카탈로그의 리소스에 대한 암호화 설정을 활성화하거나 비활성화할 수 있습니다.

데이터 카탈로그의 암호화를 활성화하면 새로 만드는 모든 객체가 암호화됩니다. 암호화를 비활성화하면 새로 만든 객체는 암호화되지 않지만 기존의 암호화된 객체는 암호화된 상태로 유지됩니다.

AWS 관리형 암호화 키 또는 고객 관리 암호화 키를 사용하여 전체 데이터 카탈로그를 암호화할 수 있습니다. 키 유형 및 상태에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 [AWS Key Management Service 개념](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html#key-state-cmk-type)을 참조하세요.

**참고**  
암호화된 Data Catalog를 크롤러와 함께 사용하는 경우 암호화 설정을 유지해야 합니다. 크롤러가 암호화된 Data Catalog를 처리한 후 암호화 설정을 제거하면 오류가 발생합니다. 암호화 설정을 제거해야 하는 경우 기존 크롤러를 수정하는 대신 새 크롤러를 생성하세요.

## AWS 관리형 키
<a name="AWS-managed-keys"></a>

 AWS 관리형 키는 AWS KMS와 통합된 AWS 서비스가 고객의 계정에서 고객 대신 생성하고 관리하고 사용하는 KMS 키입니다. 계정에서 AWS 관리형 키를 확인하고 키 정책을 확인하며 AWS CloudTrail 로그에서의 사용을 감사할 수 있습니다. 하지만 이러한 키를 관리하거나 이들의 권한을 변경할 수는 없습니다.

저장된 암호화는 메타데이터를 암호화하는 데 사용되는 AWS Glue에 대한 AWS 관리형 키를 관리하기 위해 AWS KMS와 자동으로 통합됩니다. 메타데이터 암호화를 활성화할 때 AWS 관리형 키가 없는 경우 AWS KMS가 자동으로 새 키를 생성합니다.

자세한 내용은 [AWS 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)를 참조하세요.

## 고객 관리형 키
<a name="customer-managed-keys"></a>

고객 관리형 키는 사용자가 생성, 소유 및 관리하는 AWS 계정의 KMS 키입니다. 이러한 KMS 키를 완전히 제어할 수 있습니다. 다음을 할 수 있습니다.
+  키 정책, IAM 정책, 권한 부여 설정 및 관리 
+ 활성화 및 비활성화
+  암호화 자료 교체 
+  태그 추가 
+ 이를 참조하는 별칭 생성
+  이를 삭제하도록 예약

고객 관리형 키의 권한 관리에 대한 자세한 내용은 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)를 참조하세요.

**중요**  
AWS Glue에서는 대칭 고객 관리형 키만 지원합니다. KMS 키 목록에는 대칭 키만 표시됩니다. 그러나 **Choose a KMS key ARN(KMS 키 ARN 선택)**을 선택하면 콘솔에서 모든 키 유형에 대해 ARN을 입력할 수 있습니다. 대칭 키에 대한 ARN만 입력해야 합니다.  
대칭 고객 관리형 키를 생성하려면 AWS Key Management Service 개발자 안내서의 [대칭 고객 관리형 키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) 단계를 따르세요.

저장된 데이터 카탈로그 암호화를 활성화하면 다음 리소스 유형이 KMS 키를 사용하여 암호화됩니다.
+ 데이터베이스 수
+ 테이블
+ 파티션
+ 테이블 버전
+ 열 통계값
+ 사용자 정의 함수
+ 데이터 카탈로그 보기

## AWS Glue 암호화 컨텍스트
<a name="encryption-context"></a>

 [암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)는 데이터에 대한 추가 컨텍스트 정보를 포함하는 키-값 페어의 선택적 집합입니다. AWS KMS는 암호화 컨텍스트를 [인증된 암호화](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#define-authenticated-encryption)를 지원하기 위한 [추가 인증 데이터](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad)로 사용합니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하는 경우, AWS KMS은(는) 암호화된 데이터에 암호화 컨텍스트를 바인딩합니다. 데이터의 암호를 해독하려면 요청에 동일한 암호화 컨텍스트를 포함합니다. AWS Glue는 키가 `glue_catalog_id`이고 값이 `catalogId`인 모든 AWS KMS 암호화 연산에서 동일한 암호화 컨텍스트를 사용합니다.

```
"encryptionContext": {
    "glue_catalog_id": "111122223333"
}
```

 AWS 관리형 키 또는 대칭 고객 관리형 키를 사용하여 데이터 카탈로그를 암호화하는 경우 감사 기록 및 로그의 암호화 컨텍스트를 사용하여 키가 어떻게 사용되고 있는지 파악할 수도 있습니다. 암호화 컨텍스트는 AWS CloudTrail 또는 Amazon CloudWatch 로그에서 생성되는 로그에도 나타납니다.

## 암호화 활성화
<a name="enable-encryption"></a>

 AWS Glue 콘솔의 **데이터 카탈로그 설정**에서 또는 AWS CLI를 사용하여 AWS Glue Data Catalog 객체에 대한 암호화를 활성화할 수 있습니다.

------
#### [ Console ]

**콘솔을 사용하여 암호화 활성화**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)에서 AWS Glue 콘솔을 엽니다.

1. 탐색 창의 **데이터 카탈로그**를 선택합니다.

1. **데이터 카탈로그 설정** 페이지에서 **메타데이터 암호화** 확인란을 선택하고 AWS KMS 키를 선택합니다.

   암호화를 사용 설정할 때 고객 관리 키를 지정하지 않으면 암호화 설정에서 AWS 관리형 KMS 키를 사용합니다.

1. (선택 사항) 고객 관리형 키를 사용하여 데이터 카탈로그를 암호화하는 경우, 데이터 카탈로그는 리소스를 암호화 및 해독하기 위해 IAM 역할을 등록할 수 있는 옵션을 제공합니다. AWS Glue가 사용자를 대신하여 수행할 수 있는 IAM 역할 권한을 부여해야 합니다. 여기에는 데이터 암호화 및 암호 해독을 위한 AWS KMS 권한이 포함됩니다.

   데이터 카탈로그에서 새 리소스를 생성하면 AWS Glue가 데이터 암호화를 위해 제공된 IAM 역할을 맡습니다. 마찬가지로 소비자가 리소스에 액세스할 때 AWS Glue가 데이터 암호 해독을 위해 IAM 역할을 맡습니다. 필요한 권한이 있는 IAM 역할을 등록하면 직접 호출 주체는 더 이상 키에 액세스하고 데이터를 해독하는 데 권한이 필요하지 않습니다.
**중요**  
고객 관리형 키를 사용하여 데이터 카탈로그 리소스를 암호화하는 경우에만 KMS 작업을 IAM 역할에 위임할 수 있습니다. 현재 KMS 역할 위임 기능은 데이터 카탈로그 리소스를 암호화하는 데 AWS 관리형 키를 사용하는 것을 지원하지 않습니다.
**주의**  
IAM 역할이 KMS 작업을 위임하도록 설정하면 이전에 AWS 관리형 키를 사용하여 암호화되었던 데이터 카탈로그 리소스에 더 이상 액세스할 수 없습니다.

   1. AWS Glue가 사용자를 대신하여 데이터를 암호화하고 암호를 해독할 수 있는 IAM 역할을 활성화하려면 **KMS 작업을 IAM 역할에 위임** 옵션을 선택합니다.

   1. 다음으로 IAM 역할을 선택합니다.

      IAM 역할을 생성하려면 [AWS Glue의 IAM 역할 생성](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html)을 참조하십시오.

      AWS Glue가 데이터 카탈로그에 액세스하기 위해 가정하는 IAM 역할에는 데이터 카탈로그의 메타데이터를 암호화 및 암호 해독을 위한 권한이 있어야 합니다. IAM 역할을 생성하여 다음 인라인 정책을 연결할 수 있습니다.
      + 다음 정책을 추가하여 데이터 카탈로그의 암호화 및 암호 해독을 위한 AWS KMS 권한을 포함하세요.

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

****  

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

------
      + 다음으로 AWS Glue 서비스에 대한 역할에 다음 신뢰 정책을 추가하여 IAM 역할을 위임합니다.

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

****  

        ```
        {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
            {
              "Sid": "",
              "Effect": "Allow",
              "Principal": {
                "Service": "glue.amazonaws.com"
              },
              "Action": "sts:AssumeRole"
            }
          ]
        }
        ```

------
      + 그런 다음 IAM 역할에 `iam:PassRole` 권한을 추가합니다.

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

****  

        ```
        {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
            {
              "Effect": "Allow",
              "Action": [
                "iam:PassRole"
              ],
              "Resource": [
                "arn:aws:iam::111122223333:role/<encryption-role-name>"
              ]
            }
          ]
        }
        ```

------

   암호화를 사용 설정할 때 AWS Glue가 맡을 IAM 역할을 지정하지 않은 경우 데이터 카탈로그에 액세스하는 주체는 다음 API 작업을 수행할 수 있는 권한이 있어야 합니다.
   + `kms:Decrypt`
   + `kms:Encrypt`
   + `kms:GenerateDataKey`

------
#### [ AWS CLI ]

**SDK 또는 AWS CLI을 사용하여 암호화 활성화**
+ `PutDataCatalogEncryptionSettings` API 작업을 사용합니다. 키를 지정하지 않으면 AWS Glue는 고객 계정에 대해 AWS 관리형 암호화 키를 사용하여 데이터 카탈로그를 암호화합니다.

  ```
  aws glue put-data-catalog-encryption-settings \
    --data-catalog-encryption-settings '{
        "EncryptionAtRest": {
        "CatalogEncryptionMode": "SSE-KMS-WITH-SERVICE-ROLE",
        "SseAwsKmsKeyId": "arn:aws:kms:<region>:<account-id>:key/<key-id>",
        "CatalogEncryptionServiceRole":"arn:aws:iam::<account-id>:role/<encryption-role-name>"
      }
  
    }'
  ```

------

 암호화를 활성화하면 데이터 카탈로그 객체에서 생성하는 모든 객체가 암호화됩니다. 이 설정을 삭제하면 데이터 카탈로그에서 생성하는 객체가 더 이상 암호화되지 않습니다. 필요한 KMS 권한을 사용하여 데이터 카탈로그의 기존 암호화된 객체에 계속 액세스할 수 있습니다.


|  | 
| --- |
|   AWS KMS 키는 데이터 카탈로그에 함께 암호화된 객체의 AWS KMS 키 스토어에서 계속 사용할 수 있어야 합니다. 키를 제거하면 객체의 암호를 해독할 수 없습니다. 일부 시나리오에서는 데이터 카탈로그 메타데이터에 대한 액세스를 방지하기 위에 이것이 필요할 수 있습니다.   | 

## AWS Glue에 대한 KMS 키 모니터링
<a name="monitoring-keys"></a>

 데이터 카탈로그 리소스와 함께 KMS 키를 사용하는 경우 AWS CloudTrail 또는 Amazon CloudWatch 로그를 사용하여 AWS Glue가 AWS KMS로 보내는 요청을 추적할 수 있습니다. AWS CloudTrail은 AWS Glue가 KMS 키로 암호화된 데이터에 액세스하기 위해 직접적으로 호출하는 KMS 작업을 모니터링하고 기록합니다.

 다음 예제는 `Decrypt` 및 `GenerateDataKey` 작업에 대한 AWS CloudTrail 이벤트입니다.

------
#### [ Decrypt ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAXPHTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAXPHTESTANDEXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2024-01-10T14:33:56Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "glue.amazonaws.com"
    },
    "eventTime": "2024-01-10T15:18:11Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "eu-west-2",
    "sourceIPAddress": "glue.amazonaws.com",
    "userAgent": "glue.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "glue_catalog_id": "111122223333"
        },
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT"
    },
    "responseElements": null,
    "requestID": "43b019aa-34b8-4798-9b98-ee968b2d63df",
    "eventID": "d7614763-d3fe-4f84-a1e1-3ca4d2a5bbd5",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:<region>:111122223333:key/<key-id>"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management",
    "sessionCredentialFromConsole": "true"
}
```

------
#### [ GenerateDataKey ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAXPHTESTANDEXAMPLE:V_00_GLUE_KMS_GENERATE_DATA_KEY_111122223333",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/V_00_GLUE_KMS_GENERATE_DATA_KEY_111122223333",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAXPHTESTANDEXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "AKIAIOSFODNN7EXAMPLE",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2024-01-05T21:15:47Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "glue.amazonaws.com"
    },
    "eventTime": "2024-01-05T21:15:47Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "eu-west-2",
    "sourceIPAddress": "glue.amazonaws.com",
    "userAgent": "glue.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:eu-west-2:AKIAIOSFODNN7EXAMPLE:key/AKIAIOSFODNN7EXAMPLE",
        "encryptionContext": {
            "glue_catalog_id": "111122223333"
        },
        "keySpec": "AES_256"
    },
    "responseElements": null,
    "requestID": "64d1783a-4b62-44ba-b0ab-388b50188070",
    "eventID": "1c73689b-2ef2-443b-aed7-8c126585ca5e",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:eu-west-2:111122223333:key/AKIAIOSFODNN7EXAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

------

```
      
```

# 연결 암호 암호화
<a name="encrypt-connection-passwords"></a>

`GetConnection` 및 `GetConnections` API 작업을 사용하여 AWS Glue Data Catalog에서 연결 암호를 검색할 수 있습니다. 이러한 암호는 데이터 카탈로그 연결에 저장되고 AWS Glue가 Java Database Connectivity(JDBC) 데이터 스토어에 연결할 때 사용됩니다. 연결이 생성되거나 업데이트되면 데이터 카탈로그 설정의 옵션이 암호가 암호화되었는지 여부를 확인하고, 암호화된 경우 지정된 AWS Key Management Service(AWS KMS) 키를 확인합니다.

AWS Glue 콘솔의 [**데이터 카탈로그 설정(Data catalog settings)**] 페이지에서 이 옵션을 설정할 수 있습니다.

**연결 암호를 암호화하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)에서 AWS Glue 콘솔을 엽니다.

1. 탐색 창에서 **설정**을 선택합니다.

1. **데이터 카탈로그 설정** 페이지에서 **Encrypt connection passwords(연결 암호 암호화)**를 선택하고 AWS KMS 키를 선택합니다.
**중요**  
AWS Glue에서는 대칭 고객 마스터 키(CMK)만 지원합니다. **AWS KMS 키( key)** 목록에는 대칭 키만 표시됩니다. 그러나 **Choose a AWS KMS key ARN**(KMS 키 ARN 선택)을 선택하면 콘솔에서 모든 키 유형의 ARN을 입력할 수 있습니다. 대칭 키에 대한 ARN만 입력해야 합니다.

   자세한 내용은 [데이터 카탈로그 설정](console-data-catalog-settings.md) 섹션을 참조하세요.

# 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)을 참조하세요.

# 전송 중 데이터 암호화
<a name="encryption-in-transit"></a>



AWS는 이동 중인 데이터에 대해 전송 계층 보안(TLS) 암호화를 제공합니다. AWS Glue의 [보안 구성](https://docs.aws.amazon.com/glue/latest/dg/console-security-configurations.html)을 사용하여 크롤러, ETL 작업 및 개발 엔드포인트에 대한 암호화 설정을 구성할 수 있습니다. 데이터 카탈로그에 대한 설정을 통해 AWS Glue Data Catalog 암호화를 설정할 수 있습니다.

2018년 9월 4일부터 AWS Glue ETL 및 AWS Glue Data Catalog에 대한 AWS KMS(*기존 보유 키 사용* 및 *서버 측 암호화*)가 지원됩니다.

# FIPS 규정 준수
<a name="fips-compliance"></a>

명령행 인터페이스 또는 API를 통해 AWS에 액세스할 때 FIPS 140-2 검증된 암호화 모듈이 필요한 경우, FIPS 엔드포인트를 사용합니다. 사용 가능한 FIPS 엔드포인트에 대한 자세한 내용은 [Federal Information Processing Standard(FIPS) 140-2](https://aws.amazon.com/compliance/fips/)를 참조하세요.

# 키 관리
<a name="key-management"></a>

AWS Identity and Access Management(IAM)를 AWS Glue와 함께 사용하여 사용자, AWS 리소스, 그룹, 역할 및 액세스, 거부 등에 대한 세분화된 정책을 정의할 수 있습니다.

조직의 필요에 따라 리소스 기반 및 자격 증명 기반 정책을 모두 사용하여 메타데이터에 대한 액세스를 정의할 수 있습니다. 리소스 기반 정책은 교차 계정 액세스와 같은 정책을 설정할 수 있도록 리소스에 대한 액세스가 허용되거나 거부되는 원칙을 나열합니다. 자격 증명 기반 정책은 특히 IAM 내의 사용자, 그룹 및 역할에 연결됩니다.

단계별 예제는 [AWS 빅 데이터 블로그의 리소스 레벨 IAM 권한 및 리소스 기반 정책으로 AWS Glue Data Catalog에 대한 액세스 제한](https://aws.amazon.com/blogs/big-data/restrict-access-to-your-aws-glue-data-catalog-with-resource-level-iam-permissions-and-resource-based-policies/)을 참조하세요.

정책의 세분화된 액세스 부분은 `Resource` 절 내에서 정의됩니다. 이 부분은 작업을 수행할 수 있는 AWS Glue Data Catalog 객체 및 해당 작업에서 반환되는 결과 객체를 모두 정의합니다.

*개발 엔드포인트*는 AWS Glue 스크립트를 개발하고 테스트할 수 있는 환경입니다. 개발 엔드 포인트의 SSH 키를 추가하거나 삭제, 회전할 수 있습니다.

2018년 9월 4일부터 AWS KMS ETL 및 AWS Glue에 대한 AWS Glue Data Catalog(*기존 보유 키 사용* 및 *서버 측 암호화*)가 지원됩니다.

# 기타 AWS 서비스에서 AWS Glue 종속성
<a name="dependency-on-other-services"></a>

사용자가 AWS Glue 콘솔로 작업하려면 해당 사용자는 AWS 계정에 대한 AWS Glue 리소스로 작업하도록 허용하는 최소 권한 집합이 있어야 합니다. 이 AWS Glue 권한 이외에 콘솔은 다음 서비스로부터 권한을 필요로 합니다.
+ 로그를 표시할 수 있는 Amazon CloudWatch Logs 권한.
+ 역할을 나열하고 전달할 수 있는 AWS Identity and Access Management(IAM) 권한.
+ 스택으로 작업할 수 있는 CloudFormation 권한.
+ Virtual Private Cloud(VPC), 서브넷, 보안 그룹, 인스턴스 및 기타 객체를 나열할 수 있는(작업, 크롤러를 생성하고 개발 엔드포인트를 생성할 때 VPC와 같은 Amazon EC2 항목을 설정할 수 있는) Amazon Elastic Compute Cloud(Amazon EC2) 권한.
+ 버킷과 객체를 나열하고 스크립트를 검색하고 저장할 수 있는 Amazon Simple Storage Service(Amazon S3) 권한.
+ 클러스터 작업을 위한 Amazon Redshift 권한.
+ 인스턴스를 나열할 수 있는 Amazon Relational Database Service(Amazon RDS) 권한.

# 개발 엔드포인트
<a name="dev-endpoints"></a>

개발 엔드포인트는 AWS Glue 스크립트를 개발하고 테스트할 수 있는 환경입니다. AWS Glue를 사용하여 개발 엔드포인트를 생성, 편집 및 삭제할 수 있습니다. 생성된 모든 개발 엔드포인트를 나열할 수 있습니다. 개발 엔드 포인트의 SSH 키를 추가하거나 삭제, 회전할 수 있습니다. 개발 엔드포인트를 사용하는 노트북을 만들 수도 있습니다.

구성 값을 제공하여 개발 환경을 제공합니다. 이러한 값은 네트워크를 설정하는 방법을 AWS Glue에 알립니다. 따라서 안전하게 개발 엔드포인트에 액세스할 수 있으며 엔드포인트가 데이터 스토어에 액세스할 수 있습니다. 그런 다음, 개발 엔드포인트에 연결하는 노트북을 생성할 수 있습니다. 노트북을 사용하여 ETL 스크립트를 작성하고 테스트할 수 있습니다.

AWS Glue ETL 작업을 실행하는 데 사용하는 IAM 역할과 비슷한 권한을 통해 AWS Identity and Access Management(IAM) 역할을 사용합니다. Virtual Private Cloud(VPC), 서브넷 및 보안 그룹을 사용하여 데이터 리소스에 안전하게 연결할 수 있는 개발 엔드포인트를 생성합니다. SSH를 사용하여 개발 엔드포인트에 연결할 SSH 키 페어를 생성합니다.

JDBC를 사용하여 데이터 집합에 액세스하는 데 사용할 수 있는 VPC 내에서 Amazon S3 데이터에 대한 개발 엔드포인트를 생성할 수 있습니다.

로컬 시스템에 Jupyter Notebook 클라이언트를 설치하고 노트북을 사용하여 개발 엔드포인트에서 ETL 스크립트를 디버깅하고 테스트할 수 있습니다. 아니면 Sagemaker 노트북을 사용하여 AWS에 대한 JupyterLab에서 ETL 스크립트를 작성할 수 있습니다. [개발 엔드포인트와 SageMaker 노트북 함께 사용하기](https://docs.aws.amazon.com/glue/latest/dg/dev-endpoint-tutorial-sage.html)를 참조하세요.

AWS Glue는 `aws-glue-dev-endpoint`를 통해 접두사가 지정되는 이름으로 Amazon EC2 인스턴스를 태깅합니다.

개발 엔드포인트에서 노트북 서버를 설정하여 AWS Glue 확장 프로그램을 통해 PySpark를 실행할 수 있습니다.