

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

# Amazon DocumentDB의 데이터 보호
<a name="security.data-protection"></a>

AWS [공동 책임 모델](https://aws.amazon.com/compliance/shared-responsibility-model/)은 Amazon DocumentDB(MongoDB 호환)의 데이터 보호에 적용됩니다. 이 모델에서 설명하는 것처럼 AWS은 모든 AWS 클라우드를 실행하는 글로벌 인프라를 보호할 책임이 있습니다. 사용자는 인프라에서 호스팅되는 콘텐츠를 관리해야 합니다. 사용하는 AWS 서비스의 보안 구성과 관리 태스크에 대한 책임도 사용자에게 있습니다. 데이터 프라이버시에 대한 자세한 내용은 [데이터 프라이버시 FAQ](https://aws.amazon.com/compliance/data-privacy-faq/)를 참조하세요. 유럽의 데이터 보호에 대한 자세한 내용은 *AWS 보안 블로그*의 [AWS 공동 책임 모델 및 GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 블로그 게시물을 참조하세요.

데이터를 보호하려면 AWS 계정 자격 증명을 보호하고 AWS IAM Identity Center 또는 AWS Identity and Access Management(IAM)를 통해 개별 사용자 계정을 설정하는 것이 좋습니다. 이렇게 하면 개별 사용자에게 자신의 직무를 충실히 이행하는 데 필요한 권한만 부여됩니다. 또한 다음과 같은 방법으로 데이터를 보호하는 것이 좋습니다.
+ 각 계정에 다중 인증(MFA)을 사용하세요.
+ SSL/TLS를 사용하여 AWS 리소스와 통신하세요. TLS 1.2는 필수이며 TLS 1.3을 권장합니다.
+ AWS CloudTrail로 API 및 사용자 활동 로깅을 설정하세요. AWS 활동 캡처에 CloudTrail 추적을 사용하는 방법에 대한 자세한 내용은 *AWS CloudTrail 사용 설명서*의 [CloudTrail 추적 작업](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)을 참조하세요.
+ AWS 암호화 솔루션을 AWS 서비스 내의 모든 기본 보안 컨트롤과 함께 사용하세요.
+ Amazon S3에 저장된 민감한 데이터를 검색하고 보호하는 데 도움이 되는 Amazon Macie와 같은 고급 관리형 보안 서비스를 사용하세요.
+ 명령줄 인터페이스 또는 API를 통해 AWS에 액세스할 때 FIPS 140-3 검증된 암호화 모듈이 필요한 경우, FIPS 엔드포인트를 사용합니다. 사용 가능한 FIPS 엔드포인트에 대한 자세한 내용은 [Federal Information Processing Standard(FIPS) 140-3](https://aws.amazon.com/compliance/fips/)을 참조하세요.

고객의 이메일 주소와 같은 기밀 정보나 중요한 정보는 태그나 **이름** 필드와 같은 자유 형식 텍스트 필드에 입력하지 않는 것이 좋습니다. 여기에는 Amazon DocumentDB 또는 기타 AWS 서비스에서 콘솔, API, AWS CLI 또는 AWS SDK를 사용하여 작업하는 경우가 포함됩니다. 이름에 사용되는 태그 또는 자유 형식 텍스트 필드에 입력하는 모든 데이터는 청구 또는 진단 로그에 사용될 수 있습니다. 외부 서버에 URL을 제공할 때 해당 서버에 대한 요청을 검증하기 위해 보안 인증 정보를 URL에 포함해서는 안 됩니다.

**Topics**
+ [클라이언트 측 필드 레벨 암호화](field-level-encryption.md)
+ [저장 데이터 암호화](encryption-at-rest.md)
+ [전송 중 데이터 암호화](security.encryption.ssl.md)
+ [키 관리](security.encryption.ssl.public-key.md)

# 클라이언트 측 필드 레벨 암호화
<a name="field-level-encryption"></a>

Amazon DocumentDB 클라이언트 측 필드 레벨 암호화(FLE)를 사용하면 Amazon DocumentDB 클러스터로 전송하기 전에 클라이언트 애플리케이션의 민감한 데이터를 암호화할 수 있습니다. 민감한 데이터는 클러스터에서 저장 및 처리될 때 암호화된 상태로 유지되며 검색 시 클라이언트 애플리케이션에서 복호화됩니다.

**Topics**
+ [시작하기](#fle-getting-started)
+ [클라이언트 측 FLE의 쿼리](#fle-querying)
+ [제한 사항](#fle-limitationa)

## 시작하기
<a name="fle-getting-started"></a>

Amazon DocumentDB에서 클라이언트측 FLE의 초기 구성은 암호화 키 생성, 애플리케이션에 역할 연결, 애플리케이션 구성, 암호화 옵션을 통한 CRUD 작업 정의 등을 포함하는 4단계 프로세스입니다.

**Topics**
+ [1단계: 암호화 키 생성하기](#fle-step-create-key)
+ [2단계: 역할을 애플리케이션에 연결하기](#fle-step-associate-role)
+ [3단계: 애플리케이션 구성](#fle-step-config-app)
+ [4단계: CRUD 작업 정의하기](#fle-step-crud-ops)
+ [예: 클라이언트 측 필드 수준 암호화 구성 파일](#fle-config-example)

### 1단계: 암호화 키 생성하기
<a name="fle-step-create-key"></a>

AWS Key Management Service을 사용하여 민감한 데이터 필드를 암호화하고 해독하는 데 사용되는 대칭 키를 생성하고 필요한 IAM 사용 권한을 제공합니다. AWS KMS는 데이터 키(DK)를 암호화하는 데 사용되는 고객 키(CK)를 저장합니다. 보안 태세를 강화하려면 고객 키를 KMS에 저장하는 것이 좋습니다. 데이터 키는 Amazon DocumentDB 컬렉션에 저장되는 보조 키로, 문서를 Amazon DocumentDB에 저장하기 전에 민감한 필드를 암호화하는 데 필요합니다. 고객 키는 데이터 키를 암호화하고, 데이터 키는 다시 데이터를 암호화하고 복호화합니다. 글로벌 클러스터를 사용하는 경우 여러 리전의 다양한 서비스 역할이 사용할 수 있는 다중 리전 키를 만들 수 있습니다.

키를 생성하는 방법을 포함하여 AWS Key Management Service에 대한 자세한 내용은 AWS[키 관리 서비스 개발자 가이드](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)를 참조하십시오.

### 2단계: 역할을 애플리케이션에 연결하기
<a name="fle-step-associate-role"></a>

적절한 AWS KMS 권한을 가진 IAM 정책을 생성합니다. 이 정책은 연결되는 IAM 자격 증명이 리소스 필드에 지정된 KMS 키를 암호화하고 해독하도록 허용합니다. 애플리케이션은 AWS KMS로 인증하기 위해 이 IAM 역할을 가정합니다.

정책은 다음과 비슷할 것입니다.

```
{ "Effect": "Allow",
"Action": ["kms:Decrypt", "kms:Encrypt"],
"Resource": "Customer Key ARN"
}
```

### 3단계: 애플리케이션 구성
<a name="fle-step-config-app"></a>

지금까지 AWS KMS에서 고객 키를 정의하고 IAM 역할을 생성하고 고객 키에 액세스할 수 있는 올바른 IAM 권한을 제공했습니다. 필수 패키지를 가져옵니다.

```
import boto3
import json
import base64
from pymongo import MongoClient
from pymongo.encryption import (Algorithm,
                                ClientEncryption)
```

```
# create a session object: 
my_session = boto3.session.Session()

# get access_key and secret_key programmatically using get_frozen_credentials() method:
 current_credentials = my_session.get_credentials().get_frozen_credentials()
```

1. KMS 공급자 유형으로 'aws'를 지정하고 이전 단계에서 검색한 계정 자격 증명을 입력합니다.

   ```
   provider = "aws"
   kms_providers = {
       provider: {
           "accessKeyId": current_credentials.access_key,
           "secretAccessKey": current_credentials.secret_key
       }
   }
   ```

1. 데이터 키를 암호화하는 데 사용되는 고객 키를 지정합니다.

   ```
   customer_key = {
   “region”: “AWS region of the customer_key”,
       “key”: “customer_key ARN”
   }
   
   key_vault_namespace = "encryption.dataKeys"
   
   key_alt_name = 'TEST_DATA_KEY'
   ```

1. MongoClient 개체를 구성합니다.

   ```
   client = MongoClient(connection_string)
   
   coll = client.test.coll
   coll.drop()
   
   client_encryption = ClientEncryption(
       kms_providers, # pass in the kms_providers variable from the previous step
       key_vault_namespace = key_vault_namespace,
       client,
       coll.codec_options
   )
   ```

1. 데이터 키를 생성합니다.

   ```
   data_key_id = client_encryption.create_data_key(provider,
       customer_key,
       key_alt_name = [key_alt_name])
   ```

1. 기존 데이터 키를 검색합니다.

   ```
   data_key = DataKey("aws",
       master_key = customer_key)
   key_id = data_key["_id"]
   data_key_id = client[key_vault_namespace].find_one({"_id": key_id})
   ```

### 4단계: CRUD 작업 정의하기
<a name="fle-step-crud-ops"></a>

암호화 옵션을 사용하여 CRUD 작업을 정의합니다.

1. 단일 문서를 작성/읽기/삭제할 컬렉션을 정의합니다.

   ```
   coll = client.gameinfo.users
   ```

1. 명시적 암호화 - 필드를 암호화하고 다음을 삽입합니다.
**참고**  
“key\$1id” 또는 “key\$1alt\$1name” 중 정확히 하나를 입력해야 합니다.

   ```
   encrypted_first_name = client_encryption.encrypt(
       "Jane",
       Algorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic,
       key_alt_name=data_key_id
   )
   encrypted_last_name = client_encryption.encrypt(
       "Doe",
       Algorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic,
       key_alt_name=data_key_id
   )
   encrypted_dob = client_encryption.encrypt(
       "1990-01-01",
       Algorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Random,
       key_alt_name=data_key_id
   )
   
   coll.insert_one(
       {"gamerTag": "jane_doe90",
       "firstName": encrypted_first_name,
       "lastName": encrypted_last_name,
       "dateOfBirth":encrypted_dob,
       "Favorite_games":["Halo","Age of Empires 2","Medal of Honor"]
   })
   ```

### 예: 클라이언트 측 필드 수준 암호화 구성 파일
<a name="fle-config-example"></a>

다음은 자신의 정보를 각각의 *사용자 입력 자리 표시자*로 변경하는 예제입니다.

```
# import python packages:
import boto3
import json
import base64
from pymongo import MongoClient
from pymongo.encryption import (Algorithm,
                                ClientEncryption)

def main():
    
    # create a session object:
    my_session = boto3.session.Session()
    
    # get aws_region from session object:
    aws_region = my_session.region_name
    
    # get access_key and secret_key programmatically using get_frozen_credentials() method:
    current_credentials = my_session.get_credentials().get_frozen_credentials()
    provider = "aws"
    
    # define the kms_providers which is later used to create the Data Key:
    kms_providers = {
        provider: {
            "accessKeyId": current_credentials.access_key,
            "secretAccessKey": current_credentials.secret_key
        }
    }
    
    # enter the kms key ARN. Replace the example ARN value.
    kms_arn = "arn:aws:kms:us-east-1:123456789:key/abcd-efgh-ijkl-mnop"
    customer_key = {
        "region": aws_region,
        "key":kms_arn
    }

    # secrets manager is used to strore and retrieve user credentials for connecting to an Amazon DocumentDB cluster. 
    # retrieve the secret using the secret name. Replace the example secret key.
    secret_name = "/dev/secretKey"
    docdb_credentials = json.loads(my_session.client(service_name = 'secretsmanager', region_name = "us-east-1").get_secret_value(SecretId = secret_name)['SecretString'])

    connection_params = '/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'
    conn_str = 'mongodb://' + docdb_credentials["username"] + ':' + docdb_credentials["password"] + '@' + docdb_credentials["host"] + ':' + str(docdb_credentials["port"]) + connection_params
    client = MongoClient(conn_str) 

    coll = client.test.coll
    coll.drop()
    
    # store the encryption data keys in a key vault collection (having naming convention as db.collection):
    key_vault_namespace = "encryption.dataKeys"
    key_vault_db_name, key_vault_coll_name = key_vault_namespace.split(".", 1)

    # set up the key vault (key_vault_namespace) for this example:
    key_vault = client[key_vault_db_name][key_vault_coll_name]
    key_vault.drop()
    key_vault.create_index("keyAltNames", unique=True)

    client_encryption = ClientEncryption(
        kms_providers,
        key_vault_namespace,
        client,
        coll.codec_options)
    
    # create a new data key for the encrypted field:
    data_key_id = client_encryption.create_data_key(provider, master_key=customer_key, key_alt_names=["some_key_alt_name"], key_material = None)
    
    # explicitly encrypt a field:
    encrypted_first_name = client_encryption.encrypt(
    "Jane",
    Algorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic,
    key_id=data_key_id
    )
    coll.insert_one(
    {"gamerTag": "jane_doe90",
    "firstName": encrypted_first_name
    })
    doc = coll.find_one()
    print('Encrypted document: %s' % (doc,))
    
    # explicitly decrypt the field:
    doc["encryptedField"] = client_encryption.decrypt(doc["encryptedField"])
    print('Decrypted document: %s' % (doc,))
    
    # cleanup resources:
    client_encryption.close()
    client.close()
    
    if __name__ == "__main__":
        main()
```

## 클라이언트 측 FLE의 쿼리
<a name="fle-querying"></a>

Amazon DocumentDB는 클라이언트 측 FLE를 통한 포인트 동등 쿼리를 지원합니다. 불평등 및 비교 쿼리는 부정확한 결과를 반환할 수 있습니다. 암호 해독된 값에 대해 동일한 작업을 실행할 때와 비교할 때 읽기 및 쓰기 작업에서 예상치 못한 동작이 발생하거나 잘못된 동작이 발생할 수 있습니다.

예를 들어 게이머스코어가 500보다 큰 문서의 필터를 쿼리하려면

```
db.users.find( {
    "gamerscore" : { $gt : 500 }
})
```

클라이언트는 명시적 암호화 방법을 사용하여 쿼리 값을 암호화합니다.

```
encrypted_gamerscore_filter = client_encryption.encrypt(
    500,
        Algorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic,
        key_alt_name=data_key_id
        )

db.users.find( {
    "gamerscore" : { $gt : encrypted_gamerscore_filter }
} )
```

찾기 작업에서 Amazon DocumentDB는 불평등보다 큰 값 검사를 사용하여 암호화된 값 500을 각 문서에 저장된 암호화된 필드 값과 비교합니다. 복호화된 데이터와 값을 사용하여 찾기 작업의 불평등 검사를 수행하면 결과가 성공적으로 생성되더라도 다른 결과가 반환될 수 있습니다.

## 제한 사항
<a name="fle-limitationa"></a>

Amazon DocumentDB 클라이언트 측 필드 레벨 암호화에 다음과 같은 제한 사항이 적용됩니다.
+ Amazon DocumentDB는 포인트 동등 쿼리만 지원합니다. 불평등 및 비교 쿼리는 부정확한 결과를 반환할 수 있습니다. 암호 해독된 값에 대해 동일한 작업을 실행할 때와 비교할 때 읽기 및 쓰기 작업에서 예상치 못한 동작이 발생하거나 잘못된 동작이 발생할 수 있습니다. 게이머스코어가 500보다 큰 문서의 필터를 쿼리하기 위함입니다.

  ```
  db.users.find( {
      "gamerscore" : { $gt : 500 }
      })
  ```

  클라이언트는 명시적 암호화 방법을 사용하여 쿼리 값을 암호화합니다.

  ```
  encrypted_gamerscore_filter = client_encryption.encrypt(
      500,
      Algorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic,
      key_alt_name=data_key_id
  )
  
  db.users.find({
      "gamerscore" : { $gt : encrypted_gamerscore_filter }
  })
  ```

  찾기 작업에서 Amazon DocumentDB는 불평등보다 큰 값 검사를 사용하여 암호화된 값 500을 각 문서에 저장된 암호화된 필드 값과 비교합니다. 복호화된 데이터와 값을 사용하여 찾기 작업의 불평등 검사를 수행하면 결과가 성공적으로 생성되더라도 다른 결과가 반환될 수 있습니다.
+ Amazon DocumentDB는 몽고 쉘의 명시적인 클라이언트 측 FLE를 지원하지 않습니다. 하지만 이 기능은 지원되는 모든 드라이버에서 사용할 수 있습니다.

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

**참고**  
AWS KMS에서는 *고객 마스터 키(CMK)*라는 용어가 *AWS KMS key*와 *KMS 키*로 바뀌었습니다. 단, 개념은 바뀌지 않았습니다. 호환성에 영향을 미치는 변경 사항이 발생하지 않도록 AWS KMS에서는 이 용어의 일부 변형된 형태를 그대로 사용합니다.

클러스터를 생성할 때 스토리지 암호화 옵션을 지정하여 Amazon DocumentDB 클러스터의 저장 데이터를 암호화합니다. 스토리지 암호화는 클러스터 전반에서 활성화되고 기본 인스턴스와 복제본을 포함한 모든 인스턴스에 적용됩니다. 또한 클러스터의 스토리지 볼륨, 데이터, 인덱스, 로그, 자동 백업 및 스냅샷에도 적용됩니다.

Amazon DocumentDB는 256비트 고급 암호화 표준(AES-256)을 사용하여 AWS Key Management Service (AWS KMS)에 저장된 암호화 키를 사용하여 데이터를 암호화합니다. 정지 상태의 암호화를 사용하도록 설정한 상태에서 Amazon DocumentDB 클러스터를 사용할 때는 응용프로그램 로직이나 클라이언트 연결을 수정할 필요가 없습니다. Amazon DocumentDB는 성능에 미치는 영향을 최소화하면서 데이터의 암호화 및 복호화를 투명하게 처리합니다.

Amazon DocumentDB는 AWS KMS과 통합되며 데이터를 보호하기 위해 봉투 암호화라고 알려진 방법을 사용합니다. Amazon DocumentDB 클러스터가AWS KMS 로 암호화되면, Amazon DocumentDB는 AWS KMS에게 KMS 키를 사용하여 [사이퍼텍스트 키를 생성](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)하여 스토리지 볼륨을 암호화하도록 요청합니다. 사이퍼텍스트 키는 사용자가 정의한 KMS 키를 사용하여 암호화되며, 암호화된 데이터 및 저장 메타데이터와 함께 저장됩니다. Amazon DocumentDB는 암호화된 데이터에 접근할 필요가 있을 때, KMS 키를 이용하여 AWS KMS에 사이퍼텍스트 키의 복호화를 요청하고, 저장 볼륨의 데이터를 효율적으로 암호화하고 복호화하기 위해 메모리 내의 평문 데이터 키를 캐시합니다.

Amazon DocumentDB의 스토리지 암호화 기능은 지원되는 모든 인스턴스 크기와 Amazon DocumentDB를 사용할 수 있는 모든 AWS 리전에서 사용할 수 있습니다.

## Amazon DocumentDB 클러스터에 대해 중지 상태의 암호화 사용
<a name="encryption-at-rest-enabling"></a>

클러스터가 AWS Management Console 또는 AWS Command Line Interface (AWS CLI)을 사용하여 프로비저닝될 때 Amazon DocumentDB 클러스터에서 암호화를 사용하거나 사용하지 않도록 설정할 수 있습니다. 콘솔을 사용하여 만든 클러스터는 기본적으로 유휴 데이터 암호화가 활성화되어 있습니다. AWS CLI를 사용하여 만든 클러스터는 기본적으로 유휴 데이터 암호화가 비활성화되어 있습니다. 따라서 `--storage-encrypted` 파라미터를 사용하여 유휴 데이터 암호화를 명시적으로 활성화해야 합니다. 두 경우 모두 클러스터를 만든 후에는 유휴 데이터 암호화 옵션을 변경할 수 없습니다.

Amazon DocumentDB는 AWS KMS 을 사용하여 암호화 키를 검색 및 관리하고, 이러한 키의 사용 방법을 제어하는 정책을 정의합니다. AWS KMS 키 식별자를 지정하지 않으면 Amazon DocumentDB는 기본 AWS 관리 서비스 KMS 키를 사용합니다. Amazon DocumentDB는 AWS 리전 AWS 계정에 있는 각 키에 대해 별도의 KMS 키를 생성합니다. 자세한 내용은 [AWS Key Management Service 개념](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)을 참조하세요.

자체 KMS 키 생성을 시작하려면 *AWS Key Management Service 개발자 안내서*의 [시작하기를](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html) 참조하세요.

**중요**  
Amazon DocumentDB는 대칭 암호화 KMS 키만 지원하므로 클러스터를 암호화하려면 대칭 암호화 KMS 키를 사용해야 합니다. 비대칭 KMS 키를 사용하여 Amazon DocumentDB 클러스터의 데이터를 암호화하지 마세요. 자세한 내용은, *AWS Key Management Service 개발자 가이드*에서 [비대칭 키AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)를 참조하세요 .

예를 들어, 키에 대한 액세스가 취소된 경우 Amazon DocumentDB가 더 이상 클러스터의 암호화 키에 액세스할 수 없는 경우 암호화된 클러스터는 터미널 상태가 됩니다. 이러한 경우에는 백업 파일에서만 클러스터를 복원할 수 있습니다. Amazon DocumentDB의 경우 항상 1일 동안 백업이 실행됩니다.

또한 암호화된 Amazon DocumentDB 클러스터에 대한 키를 비활성화하면 해당 클러스터에 대한 읽기 및 쓰기 액세스 권한이 손실됩니다. Amazon DocumentDB는 접근 권한이 없는 키로 암호화된 클러스터를 만나면 클러스터를 터미널 상태로 만듭니다. 이러한 상태에서는 클러스터를 더 이상 사용하지 못하기 때문에 데이터베이스의 현재 상태를 복구할 수 없습니다. 클러스터를 복원하려면 Amazon DocumentDB의 암호화 키에 대한 액세스를 다시 실행한 다음 백업에서 클러스터를 복원해야 합니다.

**중요**  
암호화된 클러스터의 KMS 키는 이미 만든 후에는 변경할 수 없습니다. 암호화된 클러스터를 생성하기 전에 암호화 키 요구 사항을 결정해야 합니다.

------
#### [ Using the AWS Management Console ]

클러스터를 생성할 때 유휴 데이터 암호화 옵션을 지정합니다. AWS Management Console을 사용하여 클러스터를 생성할 때 기본적으로 유휴 데이터 암호화가 활성화됩니다. 클러스터를 생성한 후에는 변경할 수 없습니다.

**클러스터를 생성할 때 유휴 데이터 암호화 옵션을 지정하려면**

1. [시작하기](https://docs.aws.amazon.com/documentdb/latest/developerguide/connect-ec2.launch-cluster.html) 섹션에 설명된 대로 Amazon DocumentDB 클러스터를 생성합니다 하지만 6단계에서 **클러스터 생성**을 선택하지 마세요.

1. **인증** 섹션 아래에서 **고급 설정 표시**를 선택합니다.

1. **유휴 상태에서 암호화** 섹션으로 아래로 스크롤합니다.

1. 유휴 상태 암호화에 사용할 옵션을 선택합니다. 어떤 옵션을 선택하든 클러스터를 생성한 후에는 변경할 수 없습니다.
   + 이 클러스터에서 저장 데이터를 암호화하려면 **암호화 활성화**를 선택합니다.
   + 이 클러스터에서 저장 데이터를 암호화하지 않으려면 **암호화 비활성화**를 선택합니다.

1. 원하는 프라이머리 키를 선택합니다. Amazon DocumentDB는 AWS Key Management Service (AWS KMS)을 사용하여 암호화 키를 검색하고 관리하며, 이러한 키의 사용 방법을 제어하는 정책을 정의합니다. AWS KMS 키 식별자를 지정하지 않으면 Amazon DocumentDB는 AWS기본 관리 서비스 KMS 키를 사용합니다. 자세한 내용은 [AWS Key Management Service 개념](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)을 참조하세요.
**참고**  
암호화된 클러스터를 생성한 후에는 해당 클러스터의 KMS를 변경할 수 없습니다. 암호화된 클러스터를 생성하기 전에 암호화 키 요구 사항을 결정해야 합니다.

1. 필요에 따라 다른 섹션을 완료하고 클러스터를 생성합니다.

------
#### [ Using the AWS CLI ]

AWS CLI를 사용하여 Amazon DocumentDB 클러스터를 암호화하려면 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/describe-db-clusters.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/describe-db-clusters.html) 명령을 실행하고 `--storage-encrypted` 옵션을 지정합니다. AWS CLI 를 사용하여 만든 Amazon DocumentDB 클러스터는 기본적으로 스토리지 암호화를 사용하지 않습니다.

다음 예제에서는 스토리지 암호화를 사용하도록 설정된 Amazon DocumentDB 클러스터를 만듭니다.

다음 예제에서는 각각의 *사용자 입력 자리 표시자*를 자신의 클러스터 정보로 바꿉니다.

**Example**  
Linux, macOS, Unix의 경우:  

```
aws docdb create-db-cluster \
  --db-cluster-identifier mydocdbcluster \
  --port 27017 \
  --engine docdb \
  --master-username SampleUser1 \
  --master-user-password primaryPassword \
  --storage-encrypted
```
Windows의 경우:  

```
aws docdb create-db-cluster ^
  --db-cluster-identifier SampleUser1 ^
  --port 27017 ^
  --engine docdb ^
  --master-username SampleUser1 ^
  --master-user-password primaryPassword ^
  --storage-encrypted
```

암호화된 Amazon DocumentDB 클러스터를 작성할 때 다음 예와 같이 AWS KMS 키 식별자를 지정할 수 있습니다.

**Example**  
Linux, macOS, Unix의 경우:  

```
aws docdb create-db-cluster \
  --db-cluster-identifier SampleUser1 \
  --port 27017 \
  --engine docdb \
  --master-username primaryUsername \
  --master-user-password yourPrimaryPassword \
  --storage-encrypted \
  --kms-key-id key-arn-or-alias
```
Windows의 경우:  

```
aws docdb create-db-cluster ^
  --db-cluster-identifier SampleUser1 ^
  --port 27017 ^
  --engine docdb ^
  --master-username SampleUser1 ^
  --master-user-password primaryPassword ^
  --storage-encrypted ^
  --kms-key-id key-arn-or-alias
```

**참고**  
암호화된 클러스터를 생성한 후에는 해당 클러스터의 KMS를 변경할 수 없습니다. 암호화된 클러스터를 생성하기 전에 암호화 키 요구 사항을 결정해야 합니다.

------

## Amazon DocumentDB 암호화된 클러스터의 제한 사항
<a name="encryption-at-rest-limits"></a>

Amazon DocumentDB 암호화된 클러스터에는 다음과 같은 제한이 있습니다.
+ Amazon DocumentDB 클러스터에 대해 중지된 암호화는 클러스터가 생성된 후가 아니라 생성된 시점에만 사용 가능 또는 불가능으로 설정할 수 있습니다. 그러나 암호화되지 않은 클러스터의 스냅샷을 생성한 다음 암호화 중지 옵션 지정을 통해 암호화되지 않은 스냅샷을 새 클러스터로 복원하여 암호화되지 않은 클러스터의 암호화된 복사본을 생성할 수 있습니다.

  자세한 정보는 다음의 주제를 참조하세요.
  + [수동 클러스터 스냅샷 생성](backup_restore-create_manual_cluster_snapshot.md)
  + [클러스터 스냅샷에서 복원](backup_restore-restore_from_snapshot.md)
  + [Amazon DocumentDB 클러스터 스냅샷 복사](backup_restore-copy_cluster_snapshot.md)
+ 스토리지 암호화를 사용하도록 설정된 Amazon DocumentDB 클러스터는 암호화를 사용하지 않도록 수정할 수 없습니다.
+ Amazon DocumentDB 클러스터의 모든 인스턴스, 자동 백업, 스냅샷 및 인덱스는 동일한 KMS로 암호화됩니다.

# 전송 중 데이터 암호화
<a name="security.encryption.ssl"></a>

전송 계층 보안(TLS)을 사용하여 애플리케이션과 Amazon DocumentDB 클러스터 간의 연결을 암호화할 수 있습니다. 기본적으로 전송 중인 암호화는 새로 생성된 Amazon DocumentDB 클러스터에 대해 활성화됩니다. 클러스터를 생성할 때 또는 나중에 선택적으로 비활성화할 수 있습니다. 전송 중 데이터 암호화가 활성화된 경우 클러스터에 연결하려면 TLS를 사용하는 보안 연결이 필요합니다. TLS를 사용하여 Amazon DocumentDB에 연결하는 방법에 대한 자세한 내용은 [Amazon DocumentDB에 프로그래밍 방식으로 연결](connect_programmatically.md)를 참조하세요.

## Amazon DocumentDB 클러스터 TLS 설정 관리
<a name="security.encryption.ssl.managing"></a>

Amazon DocumentDB 클러스터에 대한 전송 중 데이터 암호화는 [클러스터 파라미터 그룹](https://docs.aws.amazon.com/documentdb/latest/developerguide/cluster_parameter_groups.html)의 TLS 파라미터를 통해 관리됩니다. AWS Management Console 또는 AWS Command Line Interface (AWS CLI)를 사용하여 Amazon DocumentDB 클러스터 TLS 설정을 관리할 수 있습니다. 현재 TLS 설정을 확인하고 수정하는 방법은 다음 섹션을 참조하세요.

------
#### [ Using the AWS Management Console ]

다음 단계에 따라 매개 변수 그룹 식별, TLS 값 확인, 필요한 수정 등 콘솔을 사용하여 TLS 암호화에 대한 관리 작업을 수행합니다.

**참고**  
클러스터를 생성할 때 다르게 지정하지 않으면 클러스터는 기본 클러스터 파라미터 그룹을 이용해 생성됩니다. `default` 클러스터 파라미터 그룹의 파라미터는 수정할 수 없습니다(예: `tls` 활성화/비활성화). 클러스터가 `default` 클러스터 파라미터 그룹을 사용하는 경우 해당 클러스터를 수정하여 기본이 아닌 클러스터 파라미터 그룹을 사용해야 합니다. 먼저 사용자 지정 클러스터 파라미터 그룹을 생성해야 할 수도 있습니다. 자세한 내용은 [Amazon DocumentDB 클러스터 파라미터 그룹 생성](cluster_parameter_groups-create.md) 섹션을 참조하세요.

1. **클러스터에서 사용 중인 클러스터 매개 변수 그룹을 확인합니다.**

   1. [https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb)에서 Amazon DocumentDB 콘솔을 엽니다.

   1. 탐색 창에서 **클러스터**를 선택합니다.
**작은 정보**  
화면 왼쪽에 탐색 창이 표시되지 않으면 페이지 왼쪽 상단 모서리에서 메뉴 아이콘(![\[Hamburger menu icon with three horizontal lines.\]](http://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/images/docdb-menu-icon.png))을 선택합니다.

   1. 참고로 **클러스터** 탐색 상자의 **클러스터 식별자** 열에는 클러스터와 인스턴스가 모두 표시됩니다. 인스턴스는 클러스터 아래에 나열됩니다. 참조는 아래 스크린샷을 참조하세요.  
![\[기존 클러스터 링크 및 해당 인스턴스 링크의 목록을 보여주는 클러스터 탐색 상자의 이미지입니다.\]](http://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/images/clusters.png)

   1. 통합할 클러스터를 선택합니다.

   1. **설정** 탭을 선택하여 **클러스터 디테일** 아래를 스크롤 다운하여 **클러스터 파라미터 그룹**을 위치시키세요. 클러스터 파라미터 그룹의 이름을 적어 둡니다.

      클러스터의 파라미터 그룹 이름이 `default`(예: `default.docdb3.6`)인 경우 사용자 지정 클러스터 파라미터 그룹을 생성해야 하며 계속하기 전에 이를 클러스터의 파라미터 그룹으로 지정해야 합니다. 자세한 내용은 다음을 참조하세요:

      1. [Amazon DocumentDB 클러스터 파라미터 그룹 생성](cluster_parameter_groups-create.md) — 사용할 수 있는 사용자 지정 클러스터 매개 변수 그룹이 없는 경우 생성합니다.

      1. [Amazon DocumentDB 클러스터 수정](db-cluster-modify.md) — 사용자 지정 클러스터 매개 변수 그룹을 사용하도록 클러스터를 수정합니다.

1. ** `tls` 클러스터 파라미터**의 현재 값을 확인합니다.

   1. [https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb)에서 Amazon DocumentDB 콘솔로 이동합니다.

   1. 탐색 창에서 **파라미터 그룹**을 선택합니다.

   1. 클러스터 파라미터 그룹 목록에서 원하는 클러스터 파라미터 그룹의 이름을 선택합니다.

   1. **클러스터 파라미터** 섹션을 찾습니다. 클러스터 파라미터 목록에서 `tls` 클러스터 파라미터 행을 찾습니다. 이때 다음 네 개의 열이 중요합니다:
      + **클러스터 파라미터 이름** — 클러스터 매개 변수의 이름입니다. TLS를 관리하는 경우 `tls` 클러스터 파라미터를 살펴보게 됩니다.
      + **값** — 각 클러스터 매개 변수의 현재 값입니다.
      + **허용된 값** — 클러스터 매개 변수에 적용할 수 있는 값 목록입니다.
      + **응용 유형** — **정적** 또는 **동적** 타입. 정적 클러스터 파라미터에 대한 변경 사항은 인스턴스를 재부팅할 때에만 적용할 수 있습니다. 동적 클러스터 파라미터에 대한 변경 사항은 즉시 또는 인스턴스를 재부팅할 때 적용할 수 있습니다.

1. **`tls` 클러스터 파라미터의 값을 수정합니다.**

   `tls`의 값이 잘못된 경우 이 클러스터 파라미터 그룹에 대한 값을 수정합니다. `tls` 클러스터 파라미터의 값을 변경하려면, 다음 단계에 따라 이전 섹션으로부터 계속합니다.

   1. 클러스터 파라미터 이름의 왼쪽에 있는 버튼(`tls`)을 선택합니다.

   1. **편집**을 선택합니다.

   1. `tls`의 값을 변경하려면 **`tls` 수정** 대화 상자의 드롭다운 목록에서 클러스터 파라미터로 사용할 값을 선택합니다.

      유효한 값은 다음과 같습니다:
      + **비활성화** — TLS 비활성화
      + **활성화** - TLS 버전 1.0\$11.3을 활성화합니다.
      + **fips-140-3** — FIPS를 사용하여 TLS를 활성화합니다. 클러스터는 연방 정보 처리 표준(FIPS) 간행물 140-3의 요구 사항에 따라 보안 연결만 허용합니다. 이는 다음 지역의 Amazon DocumentDB 5.0(엔진 버전 3.0.3727) 클러스터에서만 지원됩니다: ca-central-1, us-west-2, us-east-1, us-east-2, us-gov-east-1, us-gov-west-1.
      + **tls1.2\$1** - TLS 버전 1.2 이상을 활성화합니다. Amazon DocumentDB 4.0(엔진 버전 2.0.10980) 및 Amazon DocumentDB(엔진 버전 3.0.11051)부터만 지원됩니다.
      + **tls1.3\$1** - TLS 버전 1.3 이상을 활성화합니다. Amazon DocumentDB 4.0(엔진 버전 2.0.10980) 및 Amazon DocumentDB(엔진 버전 3.0.11051)부터만 지원됩니다.  
![\[클러스터별 TLS 수정 대화 상자의 이미지입니다.\]](http://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/images/modify-tls.png)

   1. **클러스터 파라미터 수정**을 선택합니다. 재부팅할 때 변경 사항이 각 클러스터 인스턴스에 적용됩니다.

1. **Amazon DocumentDB 인스턴스를 재부팅합니다.**

   클러스터의 각 인스턴스를 재부팅하여 변경 사항이 클러스터의 모든 인스턴스에 적용되도록 합니다.

   1. [https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb)에서 Amazon DocumentDB 콘솔로 이동합니다.

   1. 탐색 창에서 **인스턴스**를 선택합니다.

   1. 재부팅할 인스턴스를 지정하려면 인스턴스 목록에서 인스턴스를 찾은 다음 이름 왼쪽에 있는 버튼을 선택합니다.

   1. **작업**을 선택한 후 **재부팅**을 선택합니다. **재부팅**을 선택하여 재부팅할지를 확인합니다.

------
#### [ Using the AWS CLI ]

파라미터 그룹 식별, TLS 값 확인, 필요한 수정 등 AWS CLI을 사용하여 TLS 암호화에 대한 관리 작업을 수행하려면 다음 단계를 수행합니다.

**참고**  
클러스터를 생성할 때 다르게 지정하지 않으면 클러스터는 기본 클러스터 파라미터 그룹을 이용해 생성됩니다. `default` 클러스터 파라미터 그룹의 파라미터는 수정할 수 없습니다(예: `tls` 활성화/비활성화). 클러스터가 `default` 클러스터 파라미터 그룹을 사용하는 경우 해당 클러스터를 수정하여 기본이 아닌 클러스터 파라미터 그룹을 사용해야 합니다. 먼저 사용자 지정 클러스터 파라미터 그룹을 생성해야 할 수도 있습니다. 자세한 내용은 [Amazon DocumentDB 클러스터 파라미터 그룹 생성](cluster_parameter_groups-create.md) 섹션을 참조하세요.

1. **클러스터에서 사용 중인 클러스터 파라미터 그룹 확인.**

   다음 옵션으로 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/describe-db-clusters.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/describe-db-clusters.html) 명령을 실행합니다.
   + `--db-cluster-identifier`
   + `--query`

   다음 예제에서는 각각의 *사용자 입력 자리 표시자*를 자신의 클러스터 정보로 바꿉니다.

   ```
   aws docdb describe-db-clusters \
     --db-cluster-identifier mydocdbcluster \
     --query 'DBClusters[*].[DBClusterIdentifier,DBClusterParameterGroup]'
   ```

   이 작업의 출력은 다음과 같습니다(JSON 형식).

   ```
   [
       [
           "mydocdbcluster",
           "myparametergroup"
       ]
   ]
   ```

   클러스터의 파라미터 그룹 이름이 `default`(예: `default.docdb3.6`)인 경우 사용자 지정 클러스터 파라미터 그룹이 있어야 하며 계속하기 전에 이를 클러스터의 파라미터 그룹으로 지정해야 합니다. 자세한 정보는 다음 주제를 참조하세요:

   1. [Amazon DocumentDB 클러스터 파라미터 그룹 생성](cluster_parameter_groups-create.md) — 사용할 수 있는 사용자 지정 클러스터 파라미터 그룹이 없다면 만들어야 합니다.

   1. [Amazon DocumentDB 클러스터 수정](db-cluster-modify.md) — 사용자 지정 클러스터 매개 변수 그룹을 사용하도록 클러스터를 수정합니다.

1. ** `tls` 클러스터 파라미터**의 현재 값을 확인합니다.

   이 클러스터 파라미터 그룹에 대한 자세한 내용은 다음 옵션과 함께 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/describe-db-cluster-parameters.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/describe-db-cluster-parameters.html) 명령을 사용합니다:
   + `--db-cluster-parameter-group-name`
   + `--query`

     출력을 `ParameterName`, `ParameterValue`, `AllowedValues` 및 `ApplyType` 관심 필드로만 제한합니다.

   다음 예제에서는 각각의 *사용자 입력 자리 표시자*를 자신의 클러스터 정보로 바꿉니다.

   ```
   aws docdb describe-db-cluster-parameters \
     --db-cluster-parameter-group-name myparametergroup \
     --query 'Parameters[*].[ParameterName,ParameterValue,AllowedValues,ApplyType]'
   ```

   이 작업의 출력은 다음과 같습니다(JSON 형식).

   ```
   [
       [
           "audit_logs",
           "disabled",
           "enabled,disabled",
           "dynamic"
       ],
       [
           "tls",
           "disabled",
           "disabled,enabled,fips-140-3,tls1.2+,tls1.3+",
           "static"
       ],
       [
           "ttl_monitor",
           "enabled",
           "disabled,enabled",
           "dynamic"
       ]
   ]
   ```

1. **`tls` 클러스터 파라미터의 값을 수정합니다.**

   `tls`의 값이 잘못된 경우 이 클러스터 파라미터 그룹에 대한 값을 수정합니다. `tls` 클러스터 파라미터의 값을 변경하려면 다음 옵션과 함께 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/modify-db-cluster-parameter-group.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/modify-db-cluster-parameter-group.html) 명령을 사용합니다.
   + `--db-cluster-parameter-group-name` — 선택 사항. 수정할 클러스터 파라미터 그룹의 이름입니다. `default.*` 클러스터 파라미터 그룹은 지정할 수 없습니다.
   + `--parameters` - 필수입니다. 클러스터 파라미터 그룹에서 수정할 파라미터의 목록입니다.
     + `ParameterName` - 필수입니다. 수정할 클러스터 파라미터의 이름입니다.
     + `ParameterValue` - 필수입니다. 이 클러스터 파라미터의 새 값입니다. 클러스터 파라미터의 `AllowedValues` 중 하나이어야 합니다.
       + `enabled` - 클러스터는 TLS 버전 1.0\$11.3을 사용한 보안 연결을 허용합니다.
       + `disabled` — 클러스터는 TLS를 사용한 보안 연결을 허용하지 않습니다.
       + `fips-140-3` — 클러스터는 연방 정보 처리 표준(FIPS) 간행물 140-3의 요구 사항에 따라 보안 연결만 허용합니다. 이는 다음 지역의 Amazon DocumentDB 5.0(엔진 버전 3.0.3727) 클러스터(ca-central-1, us-west-2, us-east-1, us-east-2, us-gov-east-1, us-gov-west-1)에서만 지원됩니다.
       + `tls1.2+` - 클러스터는 TLS 버전 1.2 이상을 사용한 보안 연결을 허용합니다. Amazon DocumentDB 4.0(엔진 버전 2.0.10980) 및 Amazon DocumentDB 5.0(엔진 버전 3.0.11051)부터만 지원됩니다.
       + `tls1.3+` - 클러스터는 TLS 버전 1.3 이상을 사용한 보안 연결을 허용합니다. Amazon DocumentDB 4.0(엔진 버전 2.0.10980) 및 Amazon DocumentDB 5.0(엔진 버전 3.0.11051)부터만 지원됩니다.
     + `ApplyMethod` — 이 수정이 적용되지 않는 경우. `tle` 같은 정적 클러스터 파라미터의 경우 이 값이 `pending-reboot`이어야 합니다.
       + `pending-reboot` — 인스턴스가 재부팅된 후에만 변경 사항이 인스턴스에 적용됩니다. 이 변경 사항이 클러스터의 모든 인스턴스에 적용되려면 각 클러스터 인스턴스를 개별적으로 재부팅해야 합니다.

   다음 예제에서는 각각의 *사용자 입력 자리 표시자*를 자신의 클러스터 정보로 바꿉니다.

   다음 코드는 ** `tls`를 비활성화하고, DB 인스턴스가 재부팅될 때 각 인스턴스에 변경사항을 적용합니다.

   ```
   aws docdb modify-db-cluster-parameter-group \
     --db-cluster-parameter-group-name myparametergroup \
     --parameters "ParameterName=tls,ParameterValue=disabled,ApplyMethod=pending-reboot"
   ```

   다음 코드는 `tls`(버전 1.0\$11.3)를 *활성화*하여, 각 인스턴스가 재부팅될 때 변경사항을 적용합니다.

   ```
   aws docdb modify-db-cluster-parameter-group \
     --db-cluster-parameter-group-name myparametergroup \
     --parameters "ParameterName=tls,ParameterValue=enabled,ApplyMethod=pending-reboot"
   ```

   다음 코드는 `fips-140-3`이 있는 TLS를 *활성화*하여, 각 인스턴스가 재부팅될 때 변경 사항을 적용합니다.

   ```
   aws docdb modify-db-cluster-parameter-group \
     ‐‐db-cluster-parameter-group-name myparametergroup2 \
     ‐‐parameters "ParameterName=tls,ParameterValue=fips-140-3,ApplyMethod=pending-reboot"
   ```

   이 작업의 출력은 다음과 같습니다(JSON 형식).

   ```
   {
       "DBClusterParameterGroupName": "myparametergroup"
   }
   ```

1. **Amazon DocumentDB 인스턴스를 재부팅합니다.**

   클러스터의 각 인스턴스를 재부팅하여 변경 사항이 클러스터의 모든 인스턴스에 적용되도록 합니다. Amazon DocumentDB 인스턴스를 재부팅하려면 다음 옵션을 실행하여 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/reboot-db-instance.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/reboot-db-instance.html) 명령을 수행합니다:
   + `--db-instance-identifier`

   다음 코드는 `mydocdbinstance` 인스턴스를 재부팅합니다.

   다음 예제에서는 각각의 *사용자 입력 자리 표시자*를 자신의 클러스터 정보로 바꿉니다.  
**Example**  

   Linux, macOS, Unix의 경우:

   ```
   aws docdb reboot-db-instance \
     --db-instance-identifier mydocdbinstance
   ```

   Windows의 경우:

   ```
   aws docdb reboot-db-instance ^
     --db-instance-identifier mydocdbinstance
   ```

   이 작업의 출력은 다음과 같습니다(JSON 형식).

   ```
   {
       "DBInstance": {
           "AutoMinorVersionUpgrade": true,
           "PubliclyAccessible": false,
           "PreferredMaintenanceWindow": "fri:09:32-fri:10:02",
           "PendingModifiedValues": {},
           "DBInstanceStatus": "rebooting",
           "DBSubnetGroup": {
               "Subnets": [
                   {
                       "SubnetStatus": "Active",
                       "SubnetAvailabilityZone": {
                           "Name": "us-east-1a"
                       },
                       "SubnetIdentifier": "subnet-4e26d263"
                   },
                   {
                       "SubnetStatus": "Active",
                       "SubnetAvailabilityZone": {
                           "Name": "us-east-1c"
                       },
                       "SubnetIdentifier": "subnet-afc329f4"
                   },
                   {
                       "SubnetStatus": "Active",
                       "SubnetAvailabilityZone": {
                           "Name": "us-east-1e"
                       },
                       "SubnetIdentifier": "subnet-b3806e8f"
                   },
                   {
                       "SubnetStatus": "Active",
                       "SubnetAvailabilityZone": {
                           "Name": "us-east-1d"
                       },
                       "SubnetIdentifier": "subnet-53ab3636"
                   },
                   {
                       "SubnetStatus": "Active",
                       "SubnetAvailabilityZone": {
                           "Name": "us-east-1b"
                       },
                       "SubnetIdentifier": "subnet-991cb8d0"
                   },
                   {
                       "SubnetStatus": "Active",
                       "SubnetAvailabilityZone": {
                           "Name": "us-east-1f"
                       },
                       "SubnetIdentifier": "subnet-29ab1025"
                   }
               ],
               "SubnetGroupStatus": "Complete",
               "DBSubnetGroupDescription": "default",
               "VpcId": "vpc-91280df6",
               "DBSubnetGroupName": "default"
           },
           "PromotionTier": 2,
           "DBInstanceClass": "db.r5.4xlarge",
           "InstanceCreateTime": "2018-11-05T23:10:49.905Z",
           "PreferredBackupWindow": "00:00-00:30",
           "KmsKeyId": "arn:aws:kms:us-east-1:012345678901:key/0961325d-a50b-44d4-b6a0-a177d5ff730b",
           "StorageEncrypted": true,
           "VpcSecurityGroups": [
               {
                   "Status": "active",
                   "VpcSecurityGroupId": "sg-77186e0d"
               }
           ],
           "EngineVersion": "3.6.0",
           "DbiResourceId": "db-SAMPLERESOURCEID",
           "DBInstanceIdentifier": "mydocdbinstance",
           "Engine": "docdb",
           "AvailabilityZone": "us-east-1a",
           "DBInstanceArn": "arn:aws:rds:us-east-1:012345678901:db:sample-cluster-instance-00",
           "BackupRetentionPeriod": 1,
           "Endpoint": {
               "Address": "mydocdbinstance.corcjozrlsfc.us-east-1.docdb.amazonaws.com",
               "Port": 27017,
               "HostedZoneId": "Z2R2ITUGPM61AM"
           },
           "DBClusterIdentifier": "mydocdbcluster"
       }
   }
   ```

   인스턴스가 재부팅되는 데 몇 분 정도 걸릴 수 있습니다. *사용 가능* 상태인 경우에만 인스턴스를 사용할 수 있습니다. 콘솔 또는 AWS CLI를 사용하여 인스턴스의 상태를 모니터링할 수 있습니다. 자세한 내용은 [Amazon DocumentDB 인스턴스 상태 모니터링](monitoring_docdb-instance_status.md) 섹션을 참조하세요.

------

# 키 관리
<a name="security.encryption.ssl.public-key"></a>

Amazon DocumentDB는 AWS Key Management Service (AWS KMS)를 사용하여 암호화 키를 검색하고 관리합니다. AWS KMS 안전하고 가용성이 높은 하드웨어와 소프트웨어를 결합하여 규모를 조정하고 클라우드에 맞게 확장된 키 관리 시스템을 제공합니다. AWS KMS를 사용하면 암호화 키를 생성하고 이 키를 사용할 수 있는 방법을 제어하는 정책을 정의할 수 있습니다. AWS KMS는 AWS CloudTrail를 지원하므로 키가 적절하게 사용되고 있는지 확인하기 위해 키 사용을 감사할 수 있습니다.

Amazon DocumentDB 및 Amazon Simple Storage Service(S3), Amazon Relational Database Service(RDS), Amazon Elastic Block Store(Amazon EBS) 및 Amazon Redshift와 같은 AWS 지원 서비스와 함께 AWS KMS 키를 사용할 수 있습니다. AWS KMS를 지원하는 서비스 목록은 *AWS Key Management Service개발자 가이드*의 [AWS 서비스에서 AWS KMS를 사용하는 방법](https://docs.aws.amazon.com/kms/latest/developerguide/service-integration.html)을 참조하세요. AWS KMS에 대한 내용은 [AWS Key Management Service이란 무엇입니까?](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)를 참조하세요.