

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

# Amazon QLDB에서의 저장 시 암호화
<a name="encryption-at-rest"></a>

**중요**  
지원 종료 공지: 기존 고객은 07/31/2025에 지원이 종료될 때까지 Amazon QLDB를 사용할 수 있습니다. 자세한 내용은 [Amazon QLDB 원장을 Amazon Aurora PostgreSQL로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)을 참조하세요.

Aazon QLDB에 저장된 모든 사용자 데이터는 저장 중 완전히 암호화됩니다. *저장 시 QLDB 암호화*는 AWS Key Management Service ()의 암호화 키를 사용하여 저장 시 모든 원장 데이터를 암호화하여 보안을 강화합니다AWS KMS. 이 기능을 사용하면 중요한 데이터 보호와 관련된 운영 부담 및 복잡성을 줄일 수 있습니다. 저장 시 암호화를 사용하면 엄격한 암호화 규정 준수 및 규제 요구 사항이 필요한, 보안에 민감한 원장 애플리케이션을 구축할 수 있습니다.

저장 시 암호화는 QLDB 원장을 보호하는 데 사용되는 암호화 키를 관리하기 AWS KMS 위해와 통합됩니다. 에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [AWS Key Management Service 개념](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)을 AWS KMS참조하세요.

QLDB에서는 각 원장 리소스에 AWS KMS key 대한 유형을 지정할 수 있습니다. 새 원장을 생성하거나 기존 원장을 업데이트할 때 다음 유형의 KMS 키 중 하나를 선택하여 원장 데이터를 보호할 수 있습니다.
+ *AWS 소유 키* - 기본 암호화 유형 키는 QLDB가 소유합니다(추가 비용 없음).
+ *고객 관리형 키* - 사용자의 AWS 계정 에 키가 저장되며 사용자가 생성, 소유, 관리하는 유형입니다. 키를 완전히 제어할 수 있습니다(AWS KMS 요금 적용).

**참고**  
Amazon QLDB는 2021년 7월 22 AWS KMS keys 일에 고객 관리형에 대한 지원을 시작했습니다. 시작 전에 생성된 원장은 AWS 소유 키 기본적으로 로 보호되지만 현재 고객 관리형 키를 사용하여 저장 시 암호화할 수 없습니다.  
QLDB 콘솔에서 원장 생성 시간을 볼 수 있습니다.

원장에 액세스하면 QLDB가 데이터를 투명하게 해독합니다. 언제든지 AWS 소유 키 와 고객 관리형 키 간에 전환할 수 있습니다. 암호화된 데이터를 사용 또는 관리하기 위해 코드나 애플리케이션을 변경할 필요가 없습니다.

새 원장을 만들 때 암호화 키를 지정하거나 AWS Management Console, QLDB API 또는 AWS Command Line Interface ()를 사용하여 기존 원장의 암호화 키를 변경할 수 있습니다AWS CLI. 자세한 내용은 [Amazon QLDB에서 고객 관리형 키 사용](encryption-at-rest.using-cust-keys.md) 단원을 참조하십시오.

**참고**  
기본적으로 Amazon QLDB는 추가 비용 없이 AWS 소유 키 를 사용하여 저장 시 암호화를 자동으로 활성화합니다. 그러나 고객 관리형 키 사용에는 AWS KMS 요금이 적용됩니다. 요금에 대한 자세한 정보는 [AWS Key Management Service 요금](https://aws.amazon.com/kms/pricing)을 참조하세요.  
QLDB 저장 시 암호화는 QLDB를 사용할 수 AWS 리전 있는 모든에서 사용할 수 있습니다.

**Topics**
+ [

# 저장 데이터 암호화: Amazon QLDB 작동 방식
](encryption-at-rest.how-it-works.md)
+ [

# Amazon QLDB에서 고객 관리형 키 사용
](encryption-at-rest.using-cust-keys.md)

# 저장 데이터 암호화: Amazon QLDB 작동 방식
<a name="encryption-at-rest.how-it-works"></a>

QLDB *저장 시 암호화*는 256비트 고급 암호화 표준(AES-256)을 사용하여 데이터를 암호화합니다. 이는 기본 스토리지에 대한 무단 액세스로부터 데이터의 보안을 유지하는 데 도움을 줍니다. QLDB 원장에 저장된 모든 데이터는 기본적으로 저장 시 암호화됩니다. 서버 측 암호화는 투명하므로 애플리케이션을 변경할 필요가 없습니다.

저장 시 암호화는 QLDB 원장을 보호하는 데 사용되는 암호화 키를 관리하기 위해 AWS Key Management Service (AWS KMS)와 통합됩니다. 신규 원장을 생성하거나 기존 원장을 갱신할 때 다음 유형의 AWS KMS 키 중 하나를 선택할 수 있습니다.
+ *AWS 소유 키* - 기본 암호화 유형 키는 QLDB가 소유합니다(추가 비용 없음).
+ *고객 관리형 키* - 사용자의 AWS 계정 에 키가 저장되며 사용자가 생성, 소유, 관리하는 유형입니다. 키를 완전히 제어할 수 있습니다(AWS KMS 요금 적용).

**Topics**
+ [

## AWS 소유 키
](#encryption-at-rest.aws-owned)
+ [

## 고객 관리형 키
](#encryption-at-rest.customer-managed)
+ [

## AWS KMS에서 Amazon QLDB가 권한 부여를 사용하는 방법
](#encryption-at-rest.grants)
+ [

## AWS KMS에서 권한 부여 복원하기
](#encryption-at-rest.restoring-grants)
+ [

## 저장 시 암호화 고려 사항
](#encryption-at-rest.considerations)

## AWS 소유 키
<a name="encryption-at-rest.aws-owned"></a>

AWS 소유 키 는에 저장되지 않습니다 AWS 계정. 여러에서 사용하기 위해를 AWS 소유하고 관리하는 KMS 키 모음의 일부입니다 AWS 계정.는 AWS 소유 키 를 사용하여 데이터를 보호할 AWS 서비스 수 있습니다.

 AWS 소유 키는 생성하거나 관리할 필요가 없습니다. 그러나 사용을 보거나 추적 AWS 소유 키하거나 감사할 수 없습니다. 월별 요금이나 사용 요금이 부과되지 AWS 소유 키않으며 계정의 할당량에 AWS KMS 포함되지 않습니다.

자세한 내용은AWS Key Management Service 개발자 안내서의 [AWS 소유 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)을 참조하세요.

## 고객 관리형 키
<a name="encryption-at-rest.customer-managed"></a>

고객 관리형 키는 AWS 계정 사용자가 생성, 소유 및 관리하는의 KMS 키입니다. 이러한 KMS 키를 완전히 제어할 수 있습니다. QLDB는 대칭 암호화 KMS 키만 지원합니다.

고객 관리형 키를 사용하여 다음과 같은 기능을 얻을 수 있습니다.
+ 키 정책, IAM 정책 및 권한 부여를 사용하여 KMS 키에 대한 액세스를 제어합니다.
+ 키 활성화 및 비활성화
+ 키에 대한 암호화 자료 순환
+ 키 태그 및 별칭 생성
+ 키 삭제 예약
+ 자체 키 구성 요소 가져오기 또는 사용자가 소유하고 관리하는 사용자 지정 키 스토어 사용
+  AWS CloudTrail 및 Amazon CloudWatch Logs를 사용하여 QLDB가 사용자를 대신하여 AWS KMS 에 보내는 요청 추적

자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)를 참조하세요.

고객 관리형 키[는 각 API 호출에 대해 요금이 부과](https://aws.amazon.com/kms/pricing/)되며 할당 AWS KMS 량은 이러한 KMS 키에 적용됩니다. 자세한 내용은 [AWS KMS 리소스 또는 요청 할당량](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)을 참조하세요.

고객 관리형 키를 원장의 KMS 키로 지정하면 저널 스토리지와 인덱싱된 스토리지의 모든 원장 데이터가 동일한 고객 관리형 키로 보호됩니다.

**액세스할 수 없는 고객 관리형 키**

고객 관리형 키를 비활성화하거나, 키 삭제를 예약하거나, 키에 대한 권한 부여를 취소하면 원장 암호화 상태가 `KMS_KEY_INACCESSIBLE`이 됩니다. 이 상태에서는 원장이 손상되어 읽기 또는 쓰기 요청을 수락하지 않습니다. 액세스할 수 없는 키는 모든 사용자와 QLDB 서비스가 데이터를 암호화하거나 해독할 수 없게 하고 원장에서 읽기 및 쓰기 작업을 수행할 수 없게 합니다. QLDB는 사용자가 원장에 지속적으로 액세스하고 데이터 유실을 방지하기 위해 KMS 키에 액세스할 수 있어야 합니다.

**중요**  
손상된 원장은 키에 대한 권한 부여를 복원한 후 또는 비활성화된 키를 다시 활성화하면 자동으로 활성 상태로 돌아갑니다.  
하지만 고객 관리형 키를 삭제하면 *되돌릴 수 없습니다*. 키가 삭제된 후에는 해당 키로 보호되는 원장에 더 이상 액세스할 수 없으며 **데이터를 영구적으로 복구할 수 없게 됩니다**.

원장의 암호화 상태를 확인하려면 AWS Management Console 또는 [DescribeLedger](ledger-management.basics.md#ledger-management.basics.describe) API 작업을 사용합니다.

## AWS KMS에서 Amazon QLDB가 권한 부여를 사용하는 방법
<a name="encryption-at-rest.grants"></a>

QLDB에서 고객 관리형 키를 사용하려면 *권한 부여*가 필요합니다. 고객 관리형 키로 보호되는 원장을 생성하면 QLDB는 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 요청을에 전송하여 사용자를 대신하여 권한 부여를 생성합니다 AWS KMS. 의 권한 부여 AWS KMS 는 QLDB에 고객의 KMS 키에 대한 액세스 권한을 부여하는 데 사용됩니다 AWS 계정. 자세한 내용은 *AWS Key Management Service 개발자 가이드*에서 [권한 부여 사용](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)을 참조하세요.

QLDB는 다음 AWS KMS 작업에 대해 고객 관리형 키를 사용할 수 있는 권한이 필요합니다.
+ [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) - 지정된 대칭 암호화 KMS 키가 유효한지 확인합니다.
+ [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) - QLDB가 원장에 저장 데이터를 암호화하는 데 사용하는 고유한 대칭 데이터 키를 생성합니다.
+ [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) - 고객 관리형 키로 암호화된 데이터 키를 해독합니다.
+ [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) - 고객 관리형 키를 사용하여 일반 텍스트를 사이퍼텍스트로 암호화합니다.

언제든지 권한 부여에 대한 액세스 권한을 취소하거나 고객 관리형 키에 대한 서비스 액세스를 제거할 수 있습니다. 이렇게 하면 키에 액세스할 수 없게 되고 QLDB는 고객 관리형 키로 보호되는 원장 데이터에 액세스할 수 없게 됩니다. 이 상태에서는 원장이 손상되어 키에 대한 권한을 복원할 때까지 어떠한 읽기 또는 쓰기 요청도 수락하지 않습니다.

## AWS KMS에서 권한 부여 복원하기
<a name="encryption-at-rest.restoring-grants"></a>

고객 관리형 키에 대한 권한을 복원하고 QLDB에서 원장에 대한 액세스를 복구하려면 원장을 업데이트하고 동일한 KMS 키를 지정합니다. 지침은 [기존 원장의 AWS KMS key 업데이트](encryption-at-rest.using-cust-keys.md#encryption-at-rest.using-cust-keys.update) 섹션을 참조하세요.

## 저장 시 암호화 고려 사항
<a name="encryption-at-rest.considerations"></a>

에서 저장 시 암호화를 사용할 때 다음을 고려하세요.
+ 저장 시 서버 측 암호화는 기본적으로 모든 QLDB 원장 데이터에서 활성화되며 비활성화할 수 없습니다. 원장에서 항목의 하위 집합만 암호화할 수 없습니다.
+ 저장 시 암호화는 영구 스토리지 미디어에서 정적(저장 시) 상태인 데이터만 암호화합니다. 전송 중 데이터 또는 사용 중인 데이터에 대한 데이터 보안 문제가 있는 경우 다음과 같은 추가 조치를 취해야 합니다.
  + *전송 중 데이터*: QLDB의 모든 데이터는 전송 중에 암호화됩니다. 기본적으로 QLDB와의 통신은 Secure Sockets Layer(SSL)/전송 계층 보안(TLS) 암호화를 사용하여 네트워크 트래픽을 보호하는 HTTPS 프로토콜을 사용합니다.
  + *사용 중인 데이터*: 에 보내기 전에 클라이언트 측 암호화를 사용하여 데이터를 보호합니다.

원장에 대해 고객 관리형 키를 구현하는 방법을 알아보려면 [Amazon QLDB에서 고객 관리형 키 사용](encryption-at-rest.using-cust-keys.md) 섹션으로 이동하세요.

# Amazon QLDB에서 고객 관리형 키 사용
<a name="encryption-at-rest.using-cust-keys"></a>

 AWS Management Console, AWS Command Line Interface (AWS CLI) 또는 QLDB API를 사용하여 Amazon QLDB의 새 원장 및 기존 원장에 AWS KMS key 대해를 지정할 수 있습니다. 다음 주제에서는 QLDB에서 고객 관리형 키의 사용을 관리하고 모니터링하는 방법을 설명합니다.

**Topics**
+ [

## 사전 조건
](#encryption-at-rest.using-cust-keys.prereqs)
+ [

## 새 원장에 AWS KMS key 지정하기
](#encryption-at-rest.using-cust-keys.specify)
+ [

## 기존 원장의 AWS KMS key 업데이트
](#encryption-at-rest.using-cust-keys.update)
+ [

## AWS KMS keys모니터링
](#encryption-at-rest.using-cust-keys.monitor)

## 사전 조건
<a name="encryption-at-rest.using-cust-keys.prereqs"></a>

고객 관리형 키로 QLDB 원장을 보호하려면 먼저 AWS Key Management Service ()에서 키를 생성해야 합니다AWS KMS. 또한 QLDB가 AWS KMS key 사용자를 대신하여 권한 부여를 생성하도록 허용하는 키 정책을 지정해야 합니다.

**고객 관리형 키 생성**  
고객 관리형 키를 생성하려면 *AWS Key Management Service 개발자 안내서*의 [대칭 암호화 KMS 키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)의 단계를 따르세요. QLDB는 [비대칭 키](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)는 지원하지 않습니다.

**키 정책 설정**  
키 정책은에서 고객 관리형 키에 대한 액세스를 제어하는 기본 방법입니다 AWS KMS. 모든 고객 관리형 키에는 정확히 하나의 키 정책이 있어야 합니다. 키 정책 문서의 설명은 KMS 키를 사용하는 권한을 가진 사람이 누구고 이를 어떻게 사용할 수 있는지 결정합니다. 자세한 내용은 [에서 키 정책 사용을 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) 참조하세요.  
고객 관리형 키를 생성할 때 키 정책을 지정할 수 있습니다. 기존 고객 관리형 키의 키 정책을 변경하려면 [키 정책 변경](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html)을 참조하세요.  
QLDB가 고객 관리형 키를 사용하도록 허용하려면 키 정책에 다음 AWS KMS 작업에 대한 권한이 포함되어야 합니다.  
+ [kms:CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) - 고객 관리형 키에 [권한 부여](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)를 추가합니다. 지정된 KMS 키에 제어 액세스 권한을 부여합니다.

  지정된 고객 관리형 키로 원장을 생성하거나 업데이트하면 QLDB는 필요한 [권한 부여 작업](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)에 액세스할 수 있는 권한을 생성합니다. 권한 부여 작업에는 다음이 포함됩니다.
  + [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)
  + [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)
  + [암호화](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)
+ [kms:DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) - 고객 관리형 키에 대한 세부 정보를 반환합니다. QLDB는 이 정보를 사용하여 키를 확인합니다.
**예제 키 정책**  
다음은 QLDB에 사용할 수 있는 키 정책 예입니다. 이 정책은 계정 `111122223333`에서 QLDB를 사용할 권한이 있는 보안 주체가 리소스 `DescribeKey`에서 `CreateGrant` 및 `arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab` 작업을 호출할 수 있도록 허용합니다.  
이 정책을 사용하려면 예제의 *us-east-1*, *111122223333*, *1234abcd-12ab-34cd-56ef-1234567890ab*를 사용자 고유의 정보로 바꾸세요.  

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid" : "Allow access to principals authorized to use Amazon QLDB",
            "Effect" : "Allow",
            "Principal" : {
                "AWS" : "*"
            },
            "Action" : [
                "kms:DescribeKey",
                "kms:CreateGrant"
            ],
            "Resource" : "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "Condition" : {
                "StringEquals" : {
                    "kms:ViaService" : "qldb.us-east-1.amazonaws.com",
                    "kms:CallerAccount" : "111122223333"
                }
            }
        }
    ]
}
```

## 새 원장에 AWS KMS key 지정하기
<a name="encryption-at-rest.using-cust-keys.specify"></a>

다음 단계에 따라 QLDB 콘솔 또는 AWS CLI를 사용하여 새 원장을 생성할 때 KMS 키를 지정합니다.

ID, 별칭 또는 Amazon 리소스 이름(ARN)을 사용하여 고객 관리형 키를 지정할 수 있습니다. 자세한 설명은 *AWS Key Management Service 개발자 가이드*에서 [키 식별자(KeyId)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id)를 참조하세요.

**참고**  
교차 리전 키는 지원되지 않습니다. 지정된 KMS 키는 원장 AWS 리전 과 동일한에 있어야 합니다.

### 원장 생성 (콘솔)
<a name="encryption-at-rest.using-cust-keys.specify.con"></a>

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

1. **원장 생성**을 선택합니다.

1. **원장 생성** 페이지에서 다음을 수행합니다.
   + **원장 정보** - 현재 AWS 계정 및 리전의 모든 원장 간에 고유한 원장 **이름을** 입력합니다.
   + **권한 모드** - 원장에 할당할 권한 모드를 선택합니다.
     + **모두 허용**
     + **표준**(*권장*)
   + **저장 데이터 암호화** - 저장된 데이터 암호화에 사용할 KMS 키 유형을 선택합니다.
     + ** AWS 소유 KMS 키 사용** - AWS 사용자를 대신하여에서 소유하고 관리하는 KMS 키를 사용합니다. 이는 기본 옵션이며 추가 설정이 필요하지 않습니다.
     + **다른 AWS KMS 키 선택** - 생성, 소유 및 관리하는 계정에서 대칭 암호화 KMS 키를 사용합니다.

        AWS KMS 콘솔을 사용하여 새 키를 생성하려면 ** AWS KMS 키 생성을** 선택합니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [대칭 암호화 KMS 키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)을 참조하세요.

       기존 KMS 키를 사용하려면 드롭다운 목록에서 하나를 선택하거나 KMS 키 ARN을 지정합니다.

1. 원하는 대로 설정되었으면 **원장 생성**을 선택합니다.

   QLDB 원장 상태가 **활성** 상태가 되면 해당 원장에 액세스할 수 있습니다. 몇 분 정도 걸릴 수 있습니다.

### 원장 생성 (AWS CLI)
<a name="encryption-at-rest.using-cust-keys.specify.cli"></a>

 AWS CLI 를 사용하여 기본 AWS 소유 키 또는 고객 관리형 키를 사용하여 QLDB에서 원장을 생성합니다.

**Example - 기본 AWS 소유 키를 사용하여 원장 생성**  

```
aws qldb create-ledger --name my-example-ledger --permissions-mode STANDARD
```

**Example - 고객 관리형 키를 사용하여 원장 생성**  

```
aws qldb create-ledger \
    --name my-example-ledger \
    --permissions-mode STANDARD \
    --kms-key arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
```

## 기존 원장의 AWS KMS key 업데이트
<a name="encryption-at-rest.using-cust-keys.update"></a>

QLDB 콘솔 또는 AWS CLI 를 사용하여 언제든지 기존 원장의 KMS 키를 AWS 소유 키 또는 고객 관리형 키로 업데이트할 수도 있습니다.

**참고**  
Amazon QLDB는 2021년 7월 22 AWS KMS keys 일에 고객 관리형에 대한 지원을 시작했습니다. 시작 전에 생성된 원장은 AWS 소유 키 기본적으로 로 보호되지만 현재 고객 관리형 키를 사용하여 저장 시 암호화할 수 없습니다.  
QLDB 콘솔에서 원장 생성 시간을 볼 수 있습니다.

QLDB의 주요 변경 사항은 비동기적으로 이루어집니다. 키 변경이 처리되는 동안 성능에 영향을 주지 않고 원장에 완전히 액세스할 수 있습니다. 키를 업데이트하는 데 걸리는 시간은 원장 크기에 따라 다릅니다

ID, 별칭 또는 Amazon 리소스 이름(ARN)을 사용하여 고객 관리형 키를 지정할 수 있습니다. 자세한 설명은 *AWS Key Management Service 개발자 가이드*에서 [키 식별자(KeyId)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id)를 참조하세요.

**참고**  
교차 리전 키는 지원되지 않습니다. 지정된 KMS 키는 원장 AWS 리전 과 동일한에 있어야 합니다.

### 원장 업데이트 (콘솔)
<a name="encryption-at-rest.using-cust-keys.update.con"></a>

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

1. 탐색 창에서 **원장**을 선택합니다.

1. 원장 목록에서 갱신하려는 원장을 선택한 다음 **원장 편집**을 선택합니다.

1. **원장 편집** 페이지에서 저장 시 암호화에 사용할 KMS 키 유형을 선택합니다.
   + ** AWS 소유 KMS 키 사용** - AWS 사용자를 대신하여에서 소유하고 관리하는 KMS 키를 사용합니다. 이는 기본 옵션이며 추가 설정이 필요하지 않습니다.
   + **다른 AWS KMS 키 선택** - 생성, 소유 및 관리하는 계정에서 대칭 암호화 KMS 키를 사용합니다.

      AWS KMS 콘솔을 사용하여 새 키를 생성하려면 ** AWS KMS 키 생성을** 선택합니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [대칭 암호화 KMS 키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)을 참조하세요.

     기존 KMS 키를 사용하려면 드롭다운 목록에서 하나를 선택하거나 KMS 키 ARN을 지정합니다.

1. **변경 확인**을 선택합니다.

### 원장 업데이트 (AWS CLI)
<a name="encryption-at-rest.using-cust-keys.update.cli"></a>

 AWS CLI 를 사용하여 QLDB의 기존 원장을 기본 AWS 소유 키 또는 고객 관리형 키로 업데이트합니다.

**Example - 기본 AWS 소유 키를 사용하여 원장 업데이트**  

```
aws qldb update-ledger --name my-example-ledger --kms-key AWS_OWNED_KMS_KEY
```

**Example - 고객 관리형 키를 사용하여 원장 업데이트**  

```
aws qldb update-ledger \
    --name my-example-ledger \
    --kms-key arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
```

## AWS KMS keys모니터링
<a name="encryption-at-rest.using-cust-keys.monitor"></a>

고객 관리형 키를 사용하여 Amazon QLDB 원장을 보호하는 경우 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 또는 [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)를 사용하여 QLDB가 사용자를 대신하여에 보내는 요청을 추적할 수 AWS KMS 있습니다. 자세한 내용을 알아보려면 *AWS Key Management Service 개발자 안내서*의 [AWS KMS keys모니터링](https://docs.aws.amazon.com/kms/latest/developerguide/monitoring-overview.html)를 참조하세요.

다음 예제는 `CreateGrant`, `GenerateDataKey`, `Decrypt`, `Encrypt` 및 `DescribeKey` 작업에 대한 CloudTrail 로그 항목을 보여줍니다.

**CreateGrant**  
원장을 보호하기 위해 고객 관리형 키를 지정하면 QLDB는 사용자를 대신하여에 KMS 키에 AWS KMS 대한 액세스를 허용하는 `CreateGrant` 요청을 보냅니다. 또한 QLDB는 원장을 삭제할 때 `RetireGrant` 작업을 사용하여 부여한 권한을 제거합니다.  
QLDB가 생성하는 권한 부여는 원장마다 다릅니다. `CreateGrant` 요청에 있는 보안 주체는 테이블을 생성한 사용자입니다.  
`CreateGrant` 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 파라미터에는 테이블에 대한 CMK의 Amazon 리소스 이름(ARN), 피부여자 주체 및 삭제 보안 주체(QLDB 서비스), 권한 부여가 적용되는 작업이 포함됩니다.  

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AKIAIOSFODNN7EXAMPLE:sample-user",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/sample-user",
        "accountId": "111122223333",
        "accessKeyId": "AKIAI44QH8DHBEXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AKIAIOSFODNN7EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2021-06-04T21:37:11Z"
            }
        },
        "invokedBy": "qldb.amazonaws.com"
    },
    "eventTime": "2021-06-04T21:40:00Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "CreateGrant",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "qldb.amazonaws.com",
    "userAgent": "qldb.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "granteePrincipal": "qldb.us-west-2.amazonaws.com",
        "operations": [
            "DescribeKey",
            "GenerateDataKey",
            "Decrypt",
            "Encrypt"
        ],
        "retiringPrincipal": "qldb.us-west-2.amazonaws.com"
    },
    "responseElements": {
        "grantId": "b3c83f999187ccc0979ef2ff86a1572237b6bba309c0ebce098c34761f86038a"
    },
    "requestID": "e99188d7-3b82-424e-b63e-e086d848ed60",
    "eventID": "88dc7ba5-4952-4d36-9ca8-9ab5d9598bab",
    "readOnly": false,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "111122223333"
}
```

**GenerateDataKey**  
원장 보호를 위해 고객 관리형 키를 지정하면 QLDB는 고유한 데이터 키를 생성합니다. 원장의 고객 관리형 키를 AWS KMS 지정하는 `GenerateDataKey` 요청을에 보냅니다.  
`GenerateDataKey` 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 사용자는 QLDB 서비스 계정입니다. 파라미터에는 고객 관리형 키의 ARN, 32바이트 길이가 필요한 데이터 키 지정자, 내부 키 계층 구조 노드를 식별하는 암호화 컨텍스트가 포함됩니다.  

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "qldb.amazonaws.com"
    },
    "eventTime": "2021-06-04T21:40:01Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "qldb.amazonaws.com",
    "userAgent": "qldb.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "numberOfBytes": 32,
        "encryptionContext": {
            "key-hierarchy-node-id": "LY4HWMnkeZWKYi6MlitVJC",
            "key-hierarchy-node-version": "1"
        }
    },
    "responseElements": null,
    "requestID": "786977c9-e77c-467a-bff5-9ad5124a4462",
    "eventID": "b3f082cb-3e75-454e-bf0a-64be13075436",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "111122223333",
    "sharedEventID": "26688de5-0b1c-43d3-bc4f-a18029b08446"
}
```

**Decrypt**  
원장에 액세스하면 QLDB는 원장의 암호화된 데이터에 액세스할 수 있도록 원장에 저장된 데이터 키를 해독하는 `Decrypt` 작업을 호출합니다.  
`Decrypt` 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 사용자는 QLDB 서비스 계정입니다. 파라미터에는 고객 관리형 키의 ARN과 내부 키 계층 구조 노드를 식별하는 암호화 컨텍스트가 포함됩니다.  

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "qldb.amazonaws.com"
    },
    "eventTime": "2021-06-04T21:40:56Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "qldb.amazonaws.com",
    "userAgent": "qldb.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "encryptionContext": {
            "key-hierarchy-node-id": "LY4HWMnkeZWKYi6MlitVJC",
            "key-hierarchy-node-version": "1"
        }
    },
    "responseElements": null,
    "requestID": "28f2dd18-3cc1-4fe2-82f7-5154f4933ebf",
    "eventID": "603ad5d4-4744-4505-9c21-bd4a6cbd4b20",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "111122223333",
    "sharedEventID": "7b6ce3e3-a764-42ec-8f90-5418c97ec411"
}
```

**암호화**  
QLDB는 고객 관리형 키를 사용하여 일반 텍스트를 사이퍼텍스트로 암호화하는 `Encrypt` 작업을 호출합니다.  
`Encrypt` 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 사용자는 QLDB 서비스 계정입니다. 파라미터에는 고객 관리형 키의 ARN과 원장의 내부 고유 ID를 지정하는 암호화 컨텍스트가 포함됩니다.  

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "qldb.amazonaws.com"
    },
    "eventTime": "2021-06-04T21:40:01Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Encrypt",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "qldb.amazonaws.com",
    "userAgent": "qldb.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "encryptionContext": {
            "LedgerId": "F6qRNziJLUXA4Vy2ZUv8YY"
        },
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT"
    },
    "responseElements": null,
    "requestID": "b2daca7d-4606-4302-a2d7-5b3c8d30c64d",
    "eventID": "b8aace05-2e37-4fed-ae6f-a45a1c6098df",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "111122223333",
    "sharedEventID": "ce420ab0-288e-4b4f-aee8-541e18a28aa5"
}
```

**DescribeKey**  
QLDB는 `DescribeKey` 작업을 호출하여 지정된 KMS 키가 AWS 계정 및 리전에 있는지 확인합니다.  
`DescribeKey` 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 보안 주체는 KMS 키를 AWS 계정 지정한의 사용자입니다. 파라미터는 고객 관리형 키의 ARN을 포함합니다.  

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AKIAIOSFODNN7EXAMPLE:sample-user",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/sample-user",
        "accountId": "111122223333",
        "accessKeyId": "AKIAI44QH8DHBEXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AKIAIOSFODNN7EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2021-06-04T21:37:11Z"
            }
        },
        "invokedBy": "qldb.amazonaws.com"
    },
    "eventTime": "2021-06-04T21:40:00Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "DescribeKey",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "qldb.amazonaws.com",
    "userAgent": "qldb.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    },
    "responseElements": null,
    "requestID": "a30586af-c783-4d25-8fda-33152c816c36",
    "eventID": "7a9caf07-2b27-44ab-afe4-b259533ebb88",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "111122223333"
}
```