Amazon RDS 리소스 암호화 - Amazon Relational Database Service

Amazon RDS 리소스 암호화

Amazon RDSAmazon RDS DB 인스턴스를 암호화할 수 있습니다. 유휴 시 암호화되는 데이터로는 DB 인스턴스에 대한 기본 스토리지, 자동 백업 파일, 읽기 전용 복제본 및 스냅샷이 포함됩니다.

Amazon RDS 암호화된 DB 인스턴스Amazon RDS DB 인스턴스를 호스팅하는 서버의 데이터를 업계 표준 AES-256 암호화 알고리즘을 사용하여 암호화합니다. 데이터가 암호화된 이후 Amazon RDS가 성능에 미치는 영향을 최소화한 상태에서 데이터 액세스 및 암호 해독의 인증을 투명하게 처리합니다. 암호화를 사용하도록 데이터베이스 클라이언트 애플리케이션을 수정하지 않아도 됩니다.

참고

암호화/비암호화 DB 인스턴스의 경우에는 AWS 리전 간 복제에서도 원본과 읽기 전용 복제본 사이에 전송되는 데이터가 암호화됩니다.

Amazon RDS 리소스 암호화 개요

Amazon RDS 암호화된 DB 인스턴스는 기본 스토리지에 대한 무단 액세스로부터 데이터의 보안을 유지해 추가 계층의 데이터 보호를 제공합니다. 클라우드에 배포된 애플리케이션의 데이터 보호를 강화하고 저장된 데이터 암호화를 위한 규정 준수 요구 사항을 만족하기 위해 Amazon RDS 암호화를 사용할 수 있습니다.

Amazon RDS 암호화된 DB 인스턴스의 경우 모든 로그, 백업 및 스냅샷이 암호화됩니다. Amazon RDS는 AWS Key Management Service 키를 사용하여 이러한 리소스를 암호화합니다. KMS 키에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 AWS KMS keys 섹션 및 AWS KMS key 관리 섹션을 참조하세요. 암호화된 스냅샷을 복사하는 경우 소스 스냅샷을 암호화하는 데 사용된 것과 다른 KMS 키를 사용하여 대상 스냅샷을 암호화할 수 있습니다.

동일한 AWS 리전에 있는 경우, Amazon RDS 암호화된 인스턴스의 읽기 전용 복제본은 기본 DB 인스턴스와 동일한 KMS 키를 사용하여 암호화되어야 합니다. 기본 DB 인스턴스와 읽기 전용 복제본이 서로 다른 AWS 리전에 있을 경우 해당 AWS 리전의 KMS 키를 사용하여 읽기 전용 복제본을 암호화합니다.

AWS 관리형 키을(를) 사용하거나 고객 관리형 키를 생성할 수 있습니다. Amazon RDS 리소스의 암호화 및 복호화에 사용되는 고객 관리형 키를 관리하려면 AWS Key Management Service(AWS KMS)을(를) 사용합니다. AWS KMS은(는) 클라우드에 맞게 크기 조정된 키 관리 시스템을 제공하기 위해 안전하고 가용성이 높은 하드웨어 및 소프트웨어를 결합합니다. AWS KMS을(를) 사용하면 고객 관리형 키를 생성하고 이 키를 사용할 수 있는 방법을 제어하는 정책을 정의할 수 있습니다. AWS KMS은(는) CloudTrail을 지원하므로 고객 관리형 키가 적절하게 사용되고 있는지 확인하기 위해 KMS 키 사용을 감사할 수 있습니다. 고객 관리형 키는 Amazon Aurora를 비롯해 Amazon S3, Amazon EBS, Amazon Redshift 등 지원되는 AWS 서비스에서 사용할 수 있습니다. AWS KMS와 통합되는 서비스 목록은 AWS 서비스 통합을 참조하세요.

또한 Amazon RDS에서는 TDE(Transparent Data Encryption)를 사용하여 Oracle 또는 SQL Server DB 인스턴스 암호화를 지원합니다. TDE를 RDS 저장 데이터 암호화와 함께 사용하면 데이터베이스의 성능에 약간의 영향을 미칠 수 있지만, TDE를 RDS 저장 데이터 암호화와 함께 사용할 수 있습니다. 암호화 방법별로 다른 키를 관리해야 합니다. TDE에 대한 자세한 내용은 Oracle Transparent Data Encryption 또는 SQL Server에서 TDE(투명한 데이터 암호화) 지원 단원을 참조하십시오.

DB 인스턴스 암호화

새로운 DB 인스턴스를 암호화하려면 Amazon RDS 콘솔에서 암호화 활성화(Enable encryption)를 선택합니다. DB 인스턴스 생성에 대한 자세한 내용은 Amazon RDS DB 인스턴스 생성 단원을 참조하십시오.

create-db-instance AWS CLI 명령을 사용하여 암호화된 DB 인스턴스를 생성할 경우 --storage-encrypted 파라미터를 설정합니다. CreateDBInstance API 작업을 사용할 경우 StorageEncrypted 파라미터를 true로 설정하십시오.

암호화된 DB 인스턴스를 생성할 때 Amazon RDS에 사용할 고객 관리형 키 또는 AWS 관리형 키을(를) 선택하여 DB 인스턴스를 암호화할 수 있습니다. 고객 관리형 키의 키 식별자를 지정하지 않으면 Amazon RDS는 새 DB 인스턴스에 AWS 관리형 키을(를) 사용합니다. Amazon RDS는 AWS 계정에 대해 Amazon RDS용 AWS 관리형 키을(를) 생성합니다. AWS 계정에 각 AWS 리전의 Amazon RDS에 대한 다른 AWS 관리형 키이(가) 있습니다.

KMS 키에 대한 자세한 내용은 AWS Key Management Service 개발자 가이드AWS KMS keys 섹션을 참조하십시오.

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

AWS CLI create-db-instance 명령을 사용하여 고객 관리형 키로 암호화된 DB 인스턴스를 생성하는 경우 --kms-key-id 파라미터를 KMS 키의 키 식별자로 설정합니다. Amazon RDS API CreateDBInstance 작업을 사용하는 경우 KmsKeyId 파라미터를 KMS 키의 키 식별자로 설정합니다. 다른 AWS 계정에서 고객 관리형 키를 사용하려면 키 ARN 또는 별칭 ARN을 지정합니다.

중요

Amazon RDS는 KMS 키를 비활성화하면 DB 인스턴스의 KMS 키에 대한 액세스 권한을 잃을 수 있습니다. 이 경우 암호화된 DB 인스턴스는 곧 inaccessible-encryption-credentials-recoverable 상태가 됩니다. DB 인스턴스는 7일 동안 이 상태로 유지되며, 이 기간 동안 인스턴스가 중지됩니다. 이 기간 동안 DB 인스턴스에 대한 API 호출은 성공하지 못할 수 있습니다. DB 인스턴스를 복구하려면 KMS 키를 활성화하고 이 DB 인스턴스를 다시 시작하세요. AWS Management Console에서 KMS 키를 활성화합니다. AWS CLI 명령 start-db-instance 또는 AWS Management Console을 사용하여 DB 인스턴스를 다시 시작합니다.

7일 이내에 DB 인스턴스가 복구되지 않으면 터미널 inaccessible-encryption-credentials 상태가 됩니다. 이 상태에서는 DB 인스턴스를 더 이상 사용할 수 없으며 백업에서 DB 인스턴스를 복원할 수만 있습니다. 데이터베이스에서 암호화된 데이터가 손실되지 않도록 보호하려면 암호화된 DB 인스턴스에 대해 항상 백업을 활성화하는 것이 좋습니다.

DB 인스턴스를 생성하는 동안 Amazon RDS는 호출 주체가 KMS 키에 대한 액세스 권한이 있는지 확인하고 DB 인스턴스의 전체 수명 기간 동안 사용하는 KMS 키에서 부여를 생성합니다. MS 키에 대한 호출 주체의 액세스 권한을 취소해도 실행 중인 데이터베이스에는 영향을 미치지 않습니다. 스냅샷을 다른 계정으로 복사하는 등 계정 간 시나리오에서 KMS 키를 사용하는 경우, KMS 키를 다른 계정과 공유해야 합니다. 다른 KMS 키를 지정하지 않고 스냅샷에서 DB 인스턴스를 만들면 새 인스턴스는 소스 계정의 KMS 키를 사용합니다. DB 인스턴스를 생성한 후 키에 대한 액세스 권한을 취소해도 인스턴스에는 영향을 미치지 않습니다. 그러나 키를 비활성화하면 해당 키로 암호화된 모든 DB 인스턴스에 영향을 미칩니다. 이를 방지하려면 스냅샷 복사 작업 중에 다른 키를 지정하세요.

DB 인스턴스에 대해 암호화가 켜져 있는지 확인

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 DB 인스턴스에 대해 저장 데이터 암호화가 켜져 있는지 확인합니다.

DB 인스턴스에 대해 저장 데이터 암호화가 켜져 있는지 확인하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 Databases(데이터베이스)를 선택합니다.

  3. 세부 정보를 보기 위해 확인하려는 DB 인스턴스의 이름을 선택합니다.

  4. 구성(Configuration) 탭을 선택하고 스토리지(Storage)에서 암호화(Encryption) 값을 확인합니다.

    그러면 활성화(Enabled) 또는 비활성화(Not enabled) 중 하나가 표시됩니다.

    DB 인스턴스에 대해 저장 데이터 암호화 확인

AWS CLI를 사용하여 DB 인스턴스에 대해 저장 데이터 암호화가 켜져 있는지 확인하려면 다음 옵션을 사용하여 describe-db-instances 명령을 호출합니다.

  • --db-instance-identifier – DB 인스턴스의 이름입니다.

다음 예에서는 쿼리를 사용하여 mydb DB 인스턴스의 저장 데이터 암호화에 대해 TRUE 또는 FALSE 중 하나를 반환합니다.

aws rds describe-db-instances --db-instance-identifier mydb --query "*[].{StorageEncrypted:StorageEncrypted}" --output text

Amazon RDS API를 사용하여 DB 인스턴스에 대해 저장 데이터 암호화가 켜져 있는지 확인하려면 다음 파라미터를 사용하여 DescribeDBInstances를 호출합니다.

  • DBInstanceIdentifier – DB 인스턴스의 이름입니다.

Amazon RDS 암호화 가용성

Amazon RDS 암호화는 현재 SQL Server Express Edition을 제외한 모든 데이터베이스 엔진과 스토리지 유형에 사용할 수 있습니다.

Amazon RDS 암호화는 대부분의 DB 인스턴스 클래스에서 사용 가능합니다. 다음 테이블에는 Amazon RDS 암호화를 지원하지 않는 DB 인스턴스 클래스가 열거되어 있습니다.

인스턴스 유형 인스턴스 클래스

범용(M1)

db.m1.small

db.m1.medium

db.m1.large

db.m1.xlarge

메모리 최적화(M2)

db.m2.xlarge

db.m2.2xlarge

db.m2.4xlarge

버스트 가능(T2)

db.t2.micro

전송 중 암호화

AWS는 모든 유형의 DB 인스턴스 간 보안 프라이빗 연결을 제공합니다. 또한 일부 인스턴스 유형은 기본 Nitro 시스템 하드웨어의 오프로드 기능을 사용하여 인스턴스 간 전송 중 트래픽을 자동으로 암호화합니다. 이 암호화는 256비트 암호화와 함께 관련 데이터로 인증된 암호화(AEAD) 알고리즘을 사용합니다. 네트워크 성능에는 영향을 미치지 않습니다. 인스턴스 간에 이러한 전송 중 트래픽 암호화를 추가로 지원하려면 다음 요구 사항을 충족해야 합니다.

  • 이러한 인스턴스는 다음 인스턴스 유형을 사용합니다.

    • 범용: M6i, M6id, M6in, M6idn, M7g

    • 메모리 최적화: R6i, R6id, R6in, R6idn, R7g, X2idn, X2iedn, X2iezn

  • 인스턴스가 동일한 AWS 리전에 있습니다.

  • 인스턴스가 동일한 VPC 또는 피어링된 VPC에 있으며, 트래픽이 로드 밸런서나 전송 게이트웨이 같은 가상 네트워크 디바이스 또는 서비스를 통과하지 않습니다.

Amazon RDS 암호화된 DB 인스턴스의 제한

Amazon RDS 암호화된 DB 인스턴스에는 다음과 같은 제한이 있습니다.

  • Amazon RDS DB 인스턴스의 암호화는 인스턴스를 생성할 때에만 가능하며 DB 인스턴스가 생성된 후에는 불가능합니다.

    다만 암호화되지 않은 스냅샷의 사본을 암호화할 수 있기 때문에 암호화되지 않은 DB 인스턴스에 실질적으로 암호화를 추가할 수 있습니다. 즉, DB 인스턴스의 스냅샷을 만든 다음 해당 스냅샷의 암호화된 사본을 만들 수 있습니다. 그런 다음 암호화된 스냅샷에서 DB 인스턴스를 복구할 수 있고, 원본 DB 인스턴스의 암호화된 사본이 생깁니다. 자세한 내용은 Amazon RDS용 DB 스냅샷 복사 단원을 참조하십시오.

  • 암호화된 DB 인스턴스의 암호화를 비활성화할 수 없습니다.

  • 암호화되지 않은 DB 인스턴스의 암호화된 스냅샷은 생성할 수 없습니다.

  • 암호화된 DB 인스턴스의 스냅샷은 DB 인스턴스와 동일한 KMS 키를 사용하여 암호화해야 합니다.

  • 암호화되지 않은 DB 인스턴스의 암호화된 읽기 전용 복제본이나 암호화된 DB 인스턴스의 암호화되지 않은 읽기 전용 복제본은 보유할 수 없습니다.

  • 암호화된 읽기 전용 복제본이 소스 DB 인스턴스와 동일한 AWS 리전에 있는 경우 해당 인스턴스와 동일한 KMS 키를 사용하여 암호화해야 합니다.

  • 암호화되지 않은 백업 또는 스냅샷을 암호화된 DB 인스턴스로 복원할 수 없습니다.

  • 암호화된 스냅샷을 한 AWS 리전에서 다른 리전으로 복사하려면 대상 AWS 리전에 KMS 키를 지정해야 합니다. 이는 KMS 키가 생성된 AWS 리전에만 해당하기 때문입니다.

    소스 스냅샷은 복사 프로세스 전체에서 암호화를 유지합니다. Amazon RDS는 봉투 암호화를 사용하여 복사 프로세스 중에 데이터를 보호합니다. 봉투 암호화에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서에서 봉투 암호화를 참조하세요.

  • 암호화된 DB 인스턴스의 암호화를 해제할 수 없습니다. 하지만 암호화된 DB 인스턴스에서 데이터를 내보내고 암호화되지 않은 DB 인스턴스로 해당 데이터를 가져올 수 있습니다.