

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

# Amazon Neptune 데이터베이스의 저장 데이터 암호화
<a name="encrypt"></a>

Neptune 암호화 인스턴스는 기본 스토리지에 대한 무단 액세스로부터 데이터의 보안을 유지할 수 있도록 지원함으로써 데이터 보호 추가 계층을 제공합니다. 클라우드에 배포된 애플리케이션의 데이터 보안을 향상하기 위해 Neptune 암호화를 사용할 수 있습니다. 또한 이를 통해 저장 데이터의 암호화에 대한 규정 준수 요구 사항을 충족할 수 있습니다.

Neptune 리소스를 암호화하고 복호화하는 데 사용되는 키를 관리하려면 [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/). AWS KMS combines를 사용하여 클라우드에 맞게 조정된 키 관리 시스템을 제공합니다. 를 사용하면 암호화 키를 AWS KMS생성하고 이러한 키를 사용할 수 있는 방법을 제어하는 정책을 정의할 수 있습니다.는를 AWS KMS 지원 AWS CloudTrail하므로 키 사용을 감사하여 키가 적절하게 사용되고 있는지 확인할 수 있습니다. AWS KMS 키를 Neptune 및 Amazon Simple Storage Service(Amazon S3), Amazon Elastic Block Store(Amazon EBS) 및 Amazon Redshift와 같은 지원되는 AWS 서비스와 함께 사용할 수 있습니다. 가 지원하는 서비스 목록은 *AWS Key Management Service 개발자 안내서*의 [AWS 서비스 사용 방법을 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services.html) AWS KMS참조하세요.

암호화된 Neptune 인스턴스에 대해 모든 로그, 백업, 스냅샷이 암호화됩니다.

## Neptune DB 인스턴스에 대해 암호화 활성화
<a name="encrypt-enable"></a>

새 Neptune DB 인스턴스에 대한 암호화를 활성화하려면 Neptune 콘솔의 **암호화 활성화** 섹션에서 **예**를 선택합니다. Neptune DB 인스턴스 생성에 대한 자세한 내용은 [Amazon Neptune 클러스터 생성](get-started-create-cluster.md) 섹션을 참조하세요.

암호화된 Neptune DB 인스턴스를 생성할 때 암호화 AWS KMS 키의 키 식별자를 제공할 수도 있습니다. AWS KMS 키 식별자를 지정하지 않으면 Neptune은 새 Neptune DB 인스턴스에 기본 Amazon RDS 암호화 키(`aws/rds`)를 사용합니다.는 AWS 계정의 Neptune에 대한 기본 암호화 키를 AWS KMS 생성합니다. AWS 계정에는 AWS 리전마다 다른 기본 암호화 키가 있습니다.

암호화된 Neptune DB 인스턴스를 생성한 후에는 해당 인스턴스의 암호화 키를 변경할 수 없습니다. 따라서 암호화된 Neptune DB 인스턴스를 생성하기 전에 암호화 키 요구 사항을 결정해야 합니다.

다른 계정에 있는 키의 Amazon 리소스 이름(ARN)을 사용하여 Neptune DB 인스턴스를 암호화할 수 있습니다. 새 Neptune DB 인스턴스를 AWS KMS 암호화하는 데 사용되는 암호화 키를 소유한 동일한 AWS 계정으로 Neptune DB 인스턴스를 생성하는 경우 전달하는 AWS KMS 키 ID는 키의 ARN 대신 AWS KMS 키 별칭이 될 수 있습니다.

**중요**  
가령 키에 대한 Neptune 액세스 권한이 취소된 경우처럼, Neptune DB 인스턴스의 암호화 키에 대한 Neptune의 액세스 권한이 손실되면 암호화된 DB 인스턴스는 터미널 상태로 전환되며 백업에서만 복원할 수 있습니다. 데이터베이스에서 암호화된 데이터가 손실되지 않도록 보호하려면 암호화된 Neptune DB 인스턴스에 대해 항상 백업을 활성화하는 것이 좋습니다.

## 암호화를 활성화할 때 필요한 키 권한
<a name="encrypt-key-permissions"></a>

암호화된 Neptune DB 인스턴스를 만드는 IAM 사용자 또는 역할은 KMS 키에 대해 최소한 다음과 같은 권한을 가지고 있어야 합니다.
+ `"kms:Encrypt"`
+ `"kms:Decrypt"`
+ `"kms:GenerateDataKey"`
+ `"kms:ReEncryptTo"`
+ `"kms:GenerateDataKeyWithoutPlaintext"`
+ `"kms:CreateGrant"`
+ `"kms:ReEncryptFrom"`
+ `"kms:DescribeKey"`

다음은 필요한 권한이 포함된 키 정책의 예입니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "key-consolepolicy-3",
  "Statement": [
    {
      "Sid": "Allow use of the key for Neptune",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::{{123456789012}}:role/NeptuneFullAccess"
      },
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:ReEncryptTo",
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:CreateGrant",
        "kms:ReEncryptFrom",
        "kms:DescribeKey"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "rds.us-east-1.amazonaws.com"
        }
      }
    },
    {
      "Sid": "Deny use of the key for non Neptune",
      "Effect": "Deny",
      "Principal": {
        "AWS": "arn:aws:iam::{{123456789012}}:role/NeptuneFullAccess"
      },
      "Action": [
        "kms:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "kms:ViaService": "rds.us-east-1.amazonaws.com"
        }
      }
    }
  ]
}
```

------
+ 첫 번째 문은 RDS 서비스 보안 주체로 범위가 지정된이 역할에 필요한 모든 AWS KMS APIs에 대한 액세스를 제공합니다.
+ 두 번째 명령문은 다른 AWS 서비스에 대해이 역할에서이 키를 사용할 수 없도록 하여 보안을 강화합니다.

다음을 추가하여 `createGrant` 권한 범위를 더 좁힐 수도 있습니다.

```
"Condition": {
  "Bool": {
    "kms:GrantIsForAWSResource": true
  }
}
```

## Neptune 암호화의 제한 사항
<a name="encrypt-limitations"></a>

Neptune 클러스터 암호화에는 다음과 같은 제한 사항이 있습니다.
+ 암호화되지 않은 DB 클러스터를 암호화된 DB 클러스터로 변환할 수 없습니다.

  하지만 암호화되지 않은 DB 클러스터 스냅샷을 암호화된 DB 클러스터로 복원할 수 있습니다. 암호화되지 않은 DB 클러스터 스냅샷에서 복원할 때 KMS 암호화 키를 지정하면 가능합니다.
+ 암호화되지 않은 DB 인스턴스를 암호화된 DB 인스턴스로 변환할 수 없습니다. DB 인스턴스에 대한 암호화는 DB 인스턴스를 생성할 때만 활성화할 수 있습니다.
+ 암호화된 DB 인스턴스는 암호화를 비활성화하도록 수정할 수 없습니다.
+ 암호화되지 않은 DB 인스턴스의 암호화된 읽기 전용 복제본이나 암호화된 DB 인스턴스의 암호화되지 않은 읽기 전용 복제본은 보유할 수 없습니다.
+ 암호화된 읽기 전용 복제본은 소스 DB 인스턴스와 동일한 키를 사용해 암호화해야 합니다.