암호화되지 않은 Amazon RDS DB 인스턴스 및 클러스터 자동 해결 - AWS 권장 가이드

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

암호화되지 않은 Amazon RDS DB 인스턴스 및 클러스터 자동 해결

작성자: Ajay Rawat(AWS) 및 Josh Joy(AWS)

환경: PoC 또는 파일럿

기술: 보안, 자격 증명, 규정 준수, 분석, 데이터베이스

AWS 서비스: AWS Config, AWS KMS, AWS Identity and Access Management, AWS Systems Manager, Amazon RDS

요약

이 패턴은 Word Config, Word AWS Systems Manager 런북 및 AWS AWS Key Management Service(AWS RDS) 키를 사용하여 Amazon Web Services(AWS)에서 암호화되지 않은 Amazon Relational Database Service(Amazon KMS) DB 인스턴스 및 클러스터를 자동으로 수정하는 방법을 설명합니다.

암호화된 RDS DB 인스턴스는 기본 스토리지에 대한 무단 액세스로부터 데이터를 보호하여 추가적인 데이터 보호 계층을 제공합니다. Amazon RDS 암호화를 사용하여 AWS Cloud에 배포된 애플리케이션의 데이터 보호를 높이고 저장 시 암호화에 대한 규정 준수 요구 사항을 충족할 수 있습니다. RDS DB 인스턴스를 생성할 때는 암호화를 활성화할 수 있지만, 생성한 후에는 활성화할 수 없습니다. 그러나 DB 인스턴스의 스냅샷을 생성한 다음 해당 스냅샷의 암호화된 사본을 생성하여 암호화되지 않은 RDS DB 인스턴스에 암호화를 추가할 수 있습니다. 그런 다음 암호화된 스냅샷에서 DB 인스턴스를 복원하여 원본 DB 인스턴스의 암호화된 사본을 얻을 수 있습니다.

이 패턴은 AWS Config 규칙을 사용하여 RDS DB 인스턴스 및 클러스터를 평가합니다. 규정 미준수 Amazon AWS RDS 리소스에 대해 수행할 작업을 정의하는 Word Systems Manager 런북과 DB 스냅샷을 암호화하는 KMS AWS 키를 사용하여 문제 해결을 적용합니다. 그런 다음 서비스 제어 정책(SCPs)을 적용하여 암호화 없이 새 DB 인스턴스 및 클러스터가 생성되지 않도록 합니다.

이 패턴의 코드는 GitHub로 제공됩니다.

사전 조건 및 제한 사항

사전 조건 

  • 활성 AWS 계정

  • 컴퓨터에 다운로드된이 패턴에 대한 GitHub 소스 코드 리포지토리의 파일

  • 암호화되지 않은 RDS DB 인스턴스 또는 클러스터

  • KMS AWS DB 인스턴스 및 클러스터를 암호화하기 위한 기존 RDS 키

  • KMS 키 리소스 정책 업데이트 액세스

  • AWS 계정에서 AWS Config 활성화(AWS 설명서의 AWS Config 시작하기 참조)

제한 사항

  • RDS DB 인스턴스는 생성한 후에만 암호화를 활성화할 수 있습니다.

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

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

  • Amazon RDS 암호화는 대부분의 DB 인스턴스 클래스에서 사용할 수 있습니다. 예외 목록은 Amazon RDS 설명서의 Amazon Word 리소스 암호화를 참조하세요. RDS

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

  • 소스 스냅샷은 복사 프로세스 전체에서 암호화를 유지합니다. Amazon RDS는 엔벨로프 암호화를 사용하여 복사 프로세스 중에 데이터를 보호합니다. 자세한 내용은 KMS AWS 설명서의 봉투 암호화를 참조하세요.

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

  • 더 이상 사용할 필요가 없다고 확신하는 경우에만 KMS 키를 삭제해야 합니다. 확실하지 않은 경우 KMS 키를 삭제하는 대신 비활성화하는 것이 좋습니다. 나중에 다시 사용해야 하지만 삭제된 KMS 키를 복구할 수 없는 경우 비활성화된 KMS 키를 다시 활성화할 수 있습니다. 

  • 자동 백업을 보존하지 않으면 DB 인스턴스와 동일한 AWS 리전에 있는 자동 백업이 삭제됩니다. DB 인스턴스를 삭제한 후에는 복구할 수 없습니다.

  • 자동 백업은 삭제 시점에 DB 인스턴스에 설정된 보존 기간 동안 보존됩니다. 설정된 이 보존 기간은 최종 DB 스냅샷을 생성할지 여부와 상관없이 적용됩니다.

  • 자동 수정이 활성화된 경우이 솔루션은 동일한 KMS 키가 있는 모든 데이터베이스를 암호화합니다.

아키텍처

다음 다이어그램은 AWS CloudFormation Word 구현을 위한 아키텍처를 보여줍니다. Word 클라우드 개발 키트(AWS AWS)를 사용하여이 패턴을 구현할 수도 있습니다CDK.

암호화되지 않은 Amazon AWS 인스턴스를 해결하기 위한 RDS CloudFormation Word구현.

도구

도구

  • AWS CloudFormationWord는 AWS 리소스를 자동으로 설정하는 데 도움이 됩니다. 이를 통해 템플릿 파일을 사용하여 리소스 모음을 단일 유닛으로 생성 및 구성할 수 있습니다.

  • AWS Cloud Development Kit(AWS CDK)는 코드에서 클라우드 인프라를 정의하고 익숙한 프로그래밍 언어를 사용하여 프로비저닝하기 위한 소프트웨어 개발 프레임워크입니다.

AWS 서비스 및 기능

  • AWS Config는 AWS 리소스의 구성과 다른 리소스와의 관계를 추적합니다. 또한 이러한 AWS 리소스의 규정 준수를 평가할 수 있습니다. 이 서비스는 원하는 구성에 대해 AWS 리소스를 평가하도록 구성할 수 있는 규칙을 사용합니다. 일반적인 규정 준수 시나리오에 AWS Config 관리형 규칙 세트를 사용하거나 사용자 지정 시나리오에 대한 자체 규칙을 생성할 수 있습니다. AWS 리소스가 규정을 준수하지 않는 것으로 확인되면 AWS Systems Manager 실행서를 통해 수정 작업을 지정하고 선택적으로 Amazon Simple Notification Service(Amazon SNS) 주제를 통해 알림을 보낼 수 있습니다. 즉, 문제 해결 작업을 AWS Config 규칙과 연결하고 이를 자동으로 실행하여 수동 개입 없이 규정 미준수 리소스를 처리할 수 있습니다. 자동 문제 해결 후에도 리소스가 계속 규정을 준수하지 않는 경우, 자동 문제 해결을 다시 시도하도록 규칙을 설정할 수 있습니다.

  • Amazon Relational Database Service(Amazon RDS)를 사용하면 클라우드에서 관계형 데이터베이스를 더 쉽게 설정, 운영 및 확장할 수 있습니다. Amazon RDS의 기본 구성 요소는 AWS Cloud의 격리된 데이터베이스 환경인 DB 인스턴스입니다. Amazon RDS는 다양한 관계형 데이터베이스 사용 사례에 맞게 최적화된 인스턴스 유형 선택을 제공합니다. 인스턴스 유형은 CPU, 메모리, 스토리지 및 네트워킹 용량의 다양한 조합으로 구성되며 데이터베이스에 적합한 리소스 조합을 선택할 수 있는 유연성을 제공합니다. 각 인스턴스 유형에는 하나 이상의 인스턴스 크기가 포함되므로 대상 워크로드의 요구 사항에 맞게 리소스를 확장할 수 있습니다.

  • AWS Key Management Service(AWS KMS)는 데이터를 암호화하는 AWS KMS 키를 쉽게 생성하고 제어할 수 있는 관리형 서비스입니다. KMS 키는 루트 키의 논리적 표현입니다. KMS 키에는 키 ID, 생성 날짜, 설명 및 키 상태와 같은 메타데이터가 포함됩니다.

  • AWS Identity and Access Management(IAM)를 사용하면 인증되고 사용할 권한이 있는 사용자를 제어하여 AWS 리소스에 대한 액세스를 안전하게 관리할 수 있습니다.

  • 서비스 제어 정책(SCPs)은 조직의 모든 계정에 대해 사용 가능한 최대 권한을 중앙에서 제어합니다. SCPs는 계정이 조직의 액세스 제어 지침 내에 있도록 하는 데 도움이 됩니다. SCPs는 관리 계정의 사용자 또는 역할에 영향을 주지 않습니다. 조직의 멤버 계정에만 영향을 줍니다. 정책이 계정에 미치는 영향을 철저히 테스트하지 않고 조직의 루트에 SCPs를 연결하지 않는 것이 좋습니다. 대신 한 번에 하나씩, 또는 소량 단위로 계정을 옮길 수 있는 조직 단위(OU)를 만들어 사용자가 주요 서비스를 이용하지 못하는 일이 없게 하십시오.

코드

이 패턴의 소스 코드와 템플릿은 GitHub 리포지토리에서 사용할 수 있습니다. 이 패턴은 두 가지 구현 옵션을 제공합니다. AWS CloudFormation Word 템플릿을 배포하여 RDS DB 인스턴스 및 클러스터를 암호화하는 수정 역할을 생성하거나 AWS CDK를 사용할 수 있습니다. 리포지토리에는 이 두 옵션에 대한 별도의 폴더가 있습니다.

에픽 섹션에서는 step-by-step 템플릿을 배포하기 위한 CloudFormation 지침을 제공합니다. AWS CDK를 사용하려면 Word GitHub 리포지토리의 README.md 파일의 지침을 따릅니다.

모범 사례

  • 저장 및 전송 중에 데이터 암호화를 활성화합니다.

  • 모든 계정 및 AWS 리전에서 AWS Config를 활성화합니다.

  • 모든 리소스 유형에 대한 구성 변경 사항을 기록합니다.

  • IAM 자격 증명을 정기적으로 교체합니다.

  • AWS Config에 대한 태그 지정을 활용하면 리소스를 더 쉽게 관리, 검색 및 필터링할 수 있습니다.

에픽

작업설명필요한 기술

CloudFormation 템플릿을 다운로드합니다.

워드 리포지토리에서 unencrypted-to-encrypted-rds.template.json 파일을 다운로드합니다.GitHub

DevOps 엔지니어

CloudFormation 스택을 생성합니다.

  1. AWS Management Console에 로그인하고 CloudFormation 에서 https://console.aws.amazon.com/cloudformation/ 콘솔을 엽니다. 

  2. unencrypted-to-encrypted-rds.template.json 템플릿을 실행하여 새 스택을 생성합니다.

템플릿 배포에 대한 자세한 내용은 AWS CloudFormation Word 설명서를 참조하세요.

DevOps 엔지니어

Review CloudFormation 파라미터 및 값.

  1. 스택 세부 정보를 검토하고 환경 요구 사항에 따라 값을 업데이트합니다.

  2. 스택 생성을 선택하여 템플릿을 배포합니다.

DevOps 엔지니어

리소스를 검토합니다.

스택이 생성되면 상태가 CREATE_COMPLETE로 변경됩니다. IAM 콘솔에서 생성된 리소스( CloudFormation 역할, AWS Systems Manager 런북)를 검토합니다.

DevOps 엔지니어
작업설명필요한 기술

KMS 키 정책을 업데이트합니다.

  1. 키 별칭 alias/RDSEncryptionAtRestKMSAlias가 존재하는지 확인합니다. 

  2. 주요 정책 설명에는 IAM 수정 역할이 포함되어야 합니다. (이전 에픽에서 배포한 CloudFormation 템플릿에서 생성한 리소스를 확인합니다.) 

  3. 다음 키 정책에서 계정 및 생성된 IAM 역할과 일치하도록 굵게 표시된 부분을 업데이트합니다.

{ "Sid": "Allow access through RDS for all principals in the account that are authorized to use RDS", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam:: <your-AWS-account-ID>”:role/<your-IAM-remediation-role>" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:ListGrants", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "rds.us-east-1.amazonaws.com", "kms:CallerAccount": "<your-AWS-account-ID>" } } }
DevOps 엔지니어
작업설명필요한 기술

규정을 준수하지 않는 리소스를 확인합니다.

  1. 규정을 준수하지 않는 리소스 목록을 보려면 AWS에서 https://console.aws.amazon.com/config/ Config 콘솔을 엽니다. 

  2. 탐색 창에서 규칙을 선택한 후 rds-storage-encrypted 규칙을 선택합니다.

AWS Config 콘솔에 나열된 비준수 리소스는 클러스터가 아닌 인스턴스입니다. 수정 자동화는 인스턴스와 클러스터를 암호화하고 새로 암호화된 인스턴스 또는 새로 생성된 클러스터를 생성합니다. 그러나 동일한 클러스터에 속하는 여러 인스턴스에 동시에 업데이트를 적용하지 않도록 주의하십시오.

RDS DB 인스턴스 또는 볼륨을 수정하기 전에 RDS DB 인스턴스가 사용되지 않는지 확인하세요. 스냅샷을 생성하는 동안 쓰기 작업이 발생하지 않는지 확인하여 스냅샷에 원본 데이터가 포함되어 있는지 확인하십시오. 수정 작업이 실행되는 동안 유지 관리 기간을 적용하는 것을 고려해 보십시오.

DevOps 엔지니어

규정을 준수하지 않는 리소스를 찾아 수정합니다.

  1. 사용자가 준비를 마친 상태이고 유지 관리 기간이 적용되면 수정할 리소스를 선택한 다음 해결을 선택합니다.

    이제 작업 상태 열에 작업 실행 대기 중으로 표시되어야 합니다.

  2. Systems Manager에서 수정 진행 상황과 상태를 확인합니다. AWS에서 https://console.aws.amazon.com/systems-manager/ Systems Manager 콘솔을 엽니다. 탐색 창에서 자동화를 선택한 후, 해당 자동화의 실행 ID를 선택하면 자세한 내용을 볼 수 있습니다.

DevOps 엔지니어

RDS DB 인스턴스를 사용할 수 있는지 확인합니다.

자동화가 완료되면 새로 암호화된 RDS DB 인스턴스를 사용할 수 있게 됩니다. 암호화된 RDS DB 인스턴스에는 접두사 encrypted 뒤에 원래 이름이 붙습니다. 예를 들어 암호화되지 않은 RDS DB 인스턴스 이름이 인 경우 새로 암호화된 RDS DB 인스턴스database-1는 입니다encrypted-database-1.

DevOps 엔지니어

암호화되지 않은 인스턴스를 종료합니다.

수정이 완료되고 새로 암호화된 리소스가 검증되면, 암호화되지 않은 인스턴스를 종료할 수 있습니다. 리소스를 종료하기 전에 새로 암호화된 리소스가 암호화되지 않은 리소스와 일치하는지 확인하십시오.

DevOps 엔지니어
작업설명필요한 기술

SCPs를 적용합니다.

향후 암호화 없이 DB 인스턴스 및 클러스터가 생성되지 않도록 SCPs를 적용합니다. 이를 위해 GitHub 리포지토리에 제공된 rds_encrypted.json 파일을 사용하고 AWS 설명서의 지침을 따릅니다. 

보안 엔지니어

관련 리소스

참조

도구

가이드 및 패턴

추가 정보

FAQ

Q. AWS Config는 어떻게 작동하나요?

A. AWS Config를 켜면 먼저 계정에 있는 지원되는 AWS 리소스를 검색하고 각 리소스에 대한 구성 항목을 생성합니다. AWS Config는 리소스 구성이 변경될 때 구성 항목을 생성하고 구성 레코더를 시작한 시점부터 리소스의 구성 항목에 대한 기록 레코드를 유지합니다. 기본적으로 AWS Config는 AWS 리전에서 지원되는 모든 리소스에 대한 구성 항목을 생성합니다. AWS Config가 지원되는 모든 리소스에 대한 구성 항목을 생성하지 않도록 하려면 추적할 리소스 유형을 지정할 수 있습니다.

Q. AWS Config 및 AWS Config 규칙은 AWS Security Hub와 어떤 관련이 있나요?

A. AWS Security Hub는 보안 및 규정 준수 태세 관리를 서비스로 제공하는 보안 및 규정 준수 서비스입니다. AWS Config 및 AWS Config 규칙을 기본 메커니즘으로 사용하여 AWS 리소스의 구성을 평가합니다. AWS Config 규칙을 사용하여 리소스 구성을 직접 평가할 수도 있습니다. 구성 규칙은 AWS Control Tower 및 AWS Firewall Manager와 같은 다른 AWS 서비스에서도 사용됩니다.