

# DynamoDB의 암호화된 테이블 관리
<a name="encryption.tutorial"></a>

AWS Management Console 또는 AWS Command Line Interface(AWS CLI)를 사용해 새로운 테이블에 암호화 키를 지정하고 Amazon DynamoDB에 있는 기존 테이블의 암호화 키를 업데이트할 수 있습니다.

**Topics**
+ [새 테이블에 대한 암호화 키 지정](#encryption.tutorial-creating)
+ [암호화 키 업데이트](#encryption.tutorial-update)

## 새 테이블에 대한 암호화 키 지정
<a name="encryption.tutorial-creating"></a>

Amazon DynamoDB 콘솔 또는 AWS CLI를 이용해 새로운 테이블에 암호화 키를 지정하기 위해 다음 단계를 따르세요.

### 암호화된 테이블 생성(콘솔)
<a name="encryption.tutorial-console"></a>

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

1.  콘솔 왼쪽의 탐색 창에서 **테이블(Tables)**을 선택합니다.

1. **Create Table(테이블 생성)**을 선택합니다. **테이블 이름**에 **Music**을 입력합니다. 기본 키의 경우 **Artist**를, 정렬 키의 경우 **SongTitle**을 각각 문자열로 입력합니다.

1. **설정(Settings)**에서 **설정 사용자 지정(Customize settings)**이 선택되었는지 확인합니다.
**참고**  
**기본 설정 사용**을 선택한 경우 AWS 소유 키를 사용하여 무료로 테이블이 저장 중 암호화됩니다.

1. **Encryption at rest**(유휴 시 암호화)에서 암호화 유형 -AWS 소유 키, AWS 관리형 키, 또는 고객 관리 키를 선택합니다.
   +  **Owned by Amazon DynamoDB.**(Amazon DynamoDB가 소유.) AWS 소유 키로, 구체적으로는 DynamoDB가 소유하고 관리합니다. 이 키 사용에 대한 추가 요금은 부과되지 않습니다.
   + **AWS 관리형 키**. 키 별칭: `aws/dynamodb`. 이 키는 계정에 저장되고 AWS Key Management Service에서 관리합니다(AWS KMS). AWS KMS 비용이 적용됩니다.
   +  **계정에 저장되며 본인이 소유하고 관리합니다.** 고객 관리형 키. 이 키는 계정에 저장되고 AWS Key Management Service에서 관리합니다(AWS KMS). AWS KMS 비용이 적용됩니다.
**참고**  
자체 키 소유 및 관리를 선택하는 경우 KMS 키 정책이 적절하게 설정되었는지 확인합니다. 예를 포함한 자세한 내용은 [고객 관리형 키에 대한 키 정책](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)을 참조하세요.

1. **테이블 생성(Create table)**을 선택하여 암호화된 테이블을 생성합니다. 암호화 유형을 확인하려면 **개요(Overview)** 탭의 테이블 세부 정보를 클릭하고 **추가 세부 정보(Additional details)** 섹션을 검토합니다.

### 암호화된 테이블 생성(AWS CLI)
<a name="encryption.tutorial-cli"></a>

AWS CLI를 사용해 Amazon DynamoDB용 기본 AWS 소유 키, AWS 관리형 키 또는 고객 관리형 키가 있는 테이블을 생성합니다.

**기본 AWS 소유 키를 사용하여 암호화된 테이블을 생성하려면**
+ 다음과 같이 암호화된 `Music` 테이블을 생성합니다.

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5
  ```
**참고**  
이 테이블은 이제 DynamoDB 서비스 계정에서 기본 AWS 소유 키를 사용하여 암호화됩니다.

**DynamoDB용 AWS 관리형 키를 사용하여 암호화된 테이블을 생성하려면**
+ 다음과 같이 암호화된 `Music` 테이블을 생성합니다.

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --sse-specification Enabled=true,SSEType=KMS
  ```

   테이블 설명의 `SSEDescription` 상태는 `ENABLED`로 설정되고 `SSEType`은 `KMS`입니다.

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

**DynamoDB용 고객 관리형 키를 사용하여 암호화된 테이블을 생성하려면**
+ 다음과 같이 암호화된 `Music` 테이블을 생성합니다.

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --sse-specification Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
  ```
**참고**  
`KMSMasterKeyId`의 경우 키 ID, 키 ARN 또는 키 별칭을 사용할 수 있습니다. 키 별칭(예: `alias/my-key`)을 사용하는 경우 DynamoDB는 별칭을 확인하고 기본 AWS KMS 키를 테이블과 연결합니다. 테이블 설명에서 `KMSMasterKeyArn`은 항상 별칭이 아닌 확인된 키의 키 ARN을 표시합니다. 키 식별자에 대한 자세한 내용은 *AWS Key Management Service 개발자 가이드*의 [키 식별자(KeyId)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id)를 참조하세요.

   테이블 설명의 `SSEDescription` 상태는 `ENABLED`로 설정되고 `SSEType`은 `KMS`입니다.

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

## 암호화 키 업데이트
<a name="encryption.tutorial-update"></a>

또한 언제든지 DynamoDB 콘솔 또는 AWS CLI를 사용하여 AWS 소유 키, AWS 관리형 키, 고객 관리형 키 중에서 기존 테이블의 암호화 키를 업데이트할 수 있습니다.

### 암호화 키 업데이트(콘솔)
<a name="encryption.tutorial-update-console"></a>

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

1.  콘솔 왼쪽의 탐색 창에서 **테이블(Tables)**을 선택합니다.

1. 업데이트할 테이블을 선택합니다.

1. **작업(Actions)** 드롭다운을 선택한 다음에 **설정 업데이트(Update settings)** 옵션을 선택합니다.

1. **추가 설정(Additional settings)** 탭으로 이동합니다.

1. **암호화(Encryption)**에서 **암호화 관리(Manage encryption)**를 선택합니다.

1. 다음과 같이 암호화 유형을 선택합니다.
   +  **Amazon DynamoDB 소유.** AWS KMS 키는 DynamoDB에서 소유하고 관리합니다. 이 키 사용에 대한 추가 요금은 부과되지 않습니다.
   + **AWS 관리형 키** 키 별칭: `aws/dynamodb`. 이 키는 사용자의 계정에 저장되고 AWS Key Management Service에서 관리합니다(AWS KMS). AWS KMS 비용이 적용됩니다.
   +  **계정에 저장되며 본인이 소유하고 관리합니다.** 이 키는 사용자의 계정에 저장되고 AWS Key Management Service에서 관리합니다(AWS KMS). AWS KMS 비용이 적용됩니다.
**참고**  
자체 키 소유 및 관리를 선택하는 경우 KMS 키 정책이 적절하게 설정되었는지 확인합니다. 자세한 내용은 [ 고객 관리형 키에 대한 키 정책](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)을 참조하세요.

   그런 다음 **저장**을 선택하여 암호화된 테이블을 업데이트합니다. 암호화 유형을 확인하려면 **개요** 탭에서 테이블 세부 정보를 확인하세요.

### 암호화 키 업데이트(AWS CLI)
<a name="encryption.tutorial-update-cli"></a>

다음 예에서는 AWS CLI를 사용해 암호화된 테이블을 업데이트하는 방법을 보여줍니다.

**기본 AWS 소유 키를 사용하여 암호화된 테이블을 업데이트하려면**
+ 암호화된 `Music` 테이블을 다음 예와 같이 업데이트합니다.

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=false
  ```
**참고**  
이 테이블은 이제 DynamoDB 서비스 계정에서 기본 AWS 소유 키를 사용하여 암호화됩니다.

**DynamoDB용 AWS 관리형 키를 사용하여 암호화된 테이블을 업데이트하려면**
+ 암호화된 `Music` 테이블을 다음 예와 같이 업데이트합니다.

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=true
  ```

   테이블 설명의 `SSEDescription` 상태는 `ENABLED`로 설정되고 `SSEType`은 `KMS`입니다.

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

**DynamoDB용 고객 관리형 키를 사용하여 암호화된 테이블을 업데이트하려면**
+ 암호화된 `Music` 테이블을 다음 예와 같이 업데이트합니다.

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
  ```
**참고**  
`KMSMasterKeyId`의 경우 키 ID, 키 ARN 또는 키 별칭을 사용할 수 있습니다. 키 별칭(예: `alias/my-key`)을 사용하는 경우 DynamoDB는 별칭을 확인하고 기본 AWS KMS 키를 테이블과 연결합니다. 테이블 설명에서 `KMSMasterKeyArn`은 항상 별칭이 아닌 확인된 키의 키 ARN을 표시합니다.

   테이블 설명의 `SSEDescription` 상태는 `ENABLED`로 설정되고 `SSEType`은 `KMS`입니다.

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```