

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

# Amazon Neptune 데이터베이스의 데이터 보호
<a name="data-protection"></a>

 AWS [공동 책임 모델](https://aws.amazon.com/compliance/shared-responsibility-model/) Amazon Neptune의 데이터 보호에 적용됩니다. 이 모델에 설명된 대로 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을 권장합니다.
+ 를 사용하여 API 및 사용자 활동 로깅을 설정합니다 AWS CloudTrail. CloudTrail 추적을 사용하여 AWS 활동을 캡처하는 방법에 대한 자세한 내용은 *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 엔드포인트에 대한 자세한 내용은 [연방 정보 처리 표준(FIPS) 140-3](https://aws.amazon.com/compliance/fips/)을 참조하세요.

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

**중요**  
 TLS 1.3은 Neptune 엔진 버전 1.3.2.0 이상에서만 지원됩니다.

 AWS 게시된 API 호출을 사용하여 네트워크를 통해 Neptune을 관리합니다. 클라이언트는 [Neptune 데이터베이스에 대한 연결 암호화](security-ssl.md)에 설명되어 있듯이 강력한 암호 제품군을 사용하여 전송 계층 보안(TLS) 1.2 이상을 지원해야 합니다. Java 7 이상의 최신 시스템은 대부분 이러한 모드를 지원합니다.

다음 섹션에서는 Neptune 데이터를 보호하는 방식을 추가로 설명합니다.

**Topics**
+ [Amazon VPC를 사용하여 Amazon Neptune 데이터베이스 보호](security-vpc.md)
+ [SSL/HTTPS를 사용하여 Amazon Neptune 데이터베이스에 대한 연결 암호화](security-ssl.md)
+ [Amazon Neptune 데이터베이스의 저장 데이터 암호화](encrypt.md)

# Amazon VPC를 사용하여 Amazon Neptune 데이터베이스 보호
<a name="security-vpc"></a>

Amazon Neptune 클러스터는 Amazon Virtual Private Cloud(Amazon VPC) *내에서만* 생성할 수 있으며, 해당 엔드포인트는 일반적으로 해당 VPC 내에서 실행 중인 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 액세스할 수 있습니다. 또는 퍼블릭 엔드포인트를 사용하여 액세스할 수 있습니다. 퍼블릭 엔드포인트에 대한 자세한 내용은 [Neptune 퍼블릭 엔드포인트](neptune-public-endpoints.md)를 참조하세요.

[Amazon Neptune 클러스터에 연결](get-started-connecting.md)에 설명된 대로 Neptune DB 클러스터가 위치한 VPC에 대한 액세스를 제한하여 Neptune 데이터를 보호할 수 있습니다.

# SSL/HTTPS를 사용하여 Amazon Neptune 데이터베이스에 대한 연결 암호화
<a name="security-ssl"></a>

Amazon Neptune은 HTTPS를 통해 모든 인스턴스 또는 클러스터 엔드포인트에 대한 SSL(Secure Sockets Layer) 연결만 허용합니다.

Neptune에는 다음과 같은 강력한 암호 제품군을 사용하는 TLS 버전 1.2가 필요합니다.
+ `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`
+ `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384`
+ `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`
+ `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384`

Neptune 엔진 버전 1.3.2.0부터 Neptune은 다음 암호 제품군을 사용하여 TLS 버전 1.3을 지원합니다.
+ TLS\$1AES\$1128\$1GCM\$1SHA256
+ TLS\$1AES\$1256\$1GCM\$1SHA384

이전 엔진 버전에서 HTTP 연결이 허용된 경우에도 새 DB 클러스터 파라미터 그룹을 사용하는 모든 DB 클러스터는 기본적으로 SSL을 사용해야 합니다. *데이터를 보호하기 위해 엔진 버전 `1.0.4.0` 이상의 Neptune 엔드포인트는 HTTPS 요청만 지원합니다.* 자세한 정보는 [HTTP REST 엔드포인트를 사용하여 Neptune DB 인스턴스에 연결](access-graph-sparql-http-rest.md)을 참조하세요.

Neptune은 Neptune DB 인스턴스에 대한 SSL 인증서를 자동으로 제공합니다. 인증서를 요청할 필요가 없습니다. 새 인스턴스를 생성할 때 인증서가 제공됩니다.

Neptune은 각 AWS 리전에 대해 계정의 인스턴스에 단일 와일드카드 SSL 인증서를 할당합니다. 인증서는 클러스터 엔드포인트, 클러스터 읽기 전용 엔드포인트 및 인스턴스 엔드포인트에 대한 항목을 제공합니다.

**인증서 세부 정보**  
다음 항목이 제공된 인증서에 포함됩니다.
+ 클러스터 엔드포인트 — `*.cluster-a1b2c3d4wxyz.region.neptune.amazonaws.com`
+ 읽기 전용 엔드포인트 — `*.cluster-ro-a1b2c3d4wxyz.region.neptune.amazonaws.com`
+ 인스턴스 엔드포인트 — `*.a1b2c3d4wxyz.region.neptune.amazonaws.com`

여기에 나열된 항목만 지원됩니다.

**프록시 연결**  
인증서는 이전 단원에 나열된 호스트 이름만 지원합니다.

로드 밸런서 또는 프록시 서버(예: HAProxy)를 사용하는 경우 SSL 종료를 사용하고 프록시 서버에 자체 SSL 인증서가 있어야 합니다.

제공된 SSL 인증서가 프록시 서버 호스트 이름과 일치하지 않으므로 SSL 패스스루가 작동하지 않습니다.

**루트 CA 인증서**  
Neptune 인스턴스의 인증서는 일반적으로 운영 체제 또는 SDK의 로컬 트러스트 스토어(예: Java SDK)를 사용하여 유효성을 검사합니다.

루트 인증서를 수동으로 제공해야 하는 경우 [Amazon Trust Services 정책 리포지토리](https://www.amazontrust.com/repository/)에서 PEM 형식의 [Amazon 루트 CA 인증서](https://www.amazontrust.com/repository/AmazonRootCA1.pem)를 다운로드할 수 있습니다.

**추가 정보**  
SSL로 Neptune 엔드포인트에 연결하는 방법에 대한 자세한 내용은 [Gremlin 콘솔에서 Neptune DB 인스턴스에 연결하도록 설정](access-graph-gremlin-console.md) 및 [HTTP REST 엔드포인트를 사용하여 Neptune DB 인스턴스에 연결](access-graph-sparql-http-rest.md)을 참조하세요.

# 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 인스턴스와 동일한 키를 사용해 암호화해야 합니다.