기존 및 새 Amazon EBS 볼륨 자동 암호화 - AWS 권장 가이드

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

기존 및 새 Amazon EBS 볼륨 자동 암호화

작성자: Tony DeMarco (AWS) 및 Josh Joy(AWS)

코드 리포지토리: https://github.com/aws-samples/aws-system-manager-automation-unencrypted-to-encrypted-resources/tree/main/ebs

환경: 프로덕션

기술: 스토리지 및 백업, 보안, 자격 증명, 규정 준수, 관리 및 거버넌스

AWS 서비스: AWS Config, Amazon EBS, AWS KMS, AWS Organizations, AWS Systems Manager

요약

Amazon Elastic Block Store(Amazon EBS) 볼륨의 암호화는 조직의 데이터 보호 전략에 중요합니다. 이는 잘 설계된 환경을 구축하는 데 있어 중요한 단계입니다. 암호화되지 않은 기존 EBS 볼륨 또는 스냅샷을 암호화하는 직접적인 방법은 없지만 새 볼륨 또는 스냅샷을 생성하여 암호화할 수 있습니다. 자세한 내용은 Amazon EC2 설명서의 EBS 리소스 암호화를 참조하세요. 이 패턴은 신규 및 기존 EBS 볼륨을 모두 암호화하기 위한 예방 및 탐지 제어를 제공합니다. 이 패턴에서는 계정 설정을 구성하고, 자동화된 수정 프로세스를 만들고, 액세스 제어를 구현합니다.

사전 조건 및 제한 사항

사전 조건 

  • 활성 Amazon Web Services(AWS) 계정

  • macOS , Linux 또는 Windows에 설치 및 구성된AWS 명령줄 인터페이스(AWS CLI)

  • jq, macOS, Linux 또는 Windows에 설치 및 구성됨

  • AWS Identity and Access Management(IAM) 권한은 AWS CloudFormation, Amazon Elastic Compute Cloud(Amazon EC2), AWS Systems Manager, AWS Config 및 AWS Key Management Service(AWS KMS)에 대한 읽기 및 쓰기 액세스를 갖도록 프로비저닝됩니다.

  • AWS 조직은 서비스 제어 정책에 대한 요구 사항인 모든 기능이 활성화된 상태로 구성됩니다.

  • AWS 대상 계정에서 Config가 활성화됨

제한 사항

  • 대상 AWS 계정에는 encrypted-volumes라는 AWS Config 규칙이 없어야 합니다. 이 솔루션은 이 이름을 가진 규칙을 배포합니다. 이 이름을 가진 기존 규칙을 사용하면 배포가 실패하고, 동일한 규칙을 두 번 이상 처리하는 것과 관련된 불필요한 요금이 부과될 수 있습니다.

  • 이 솔루션은 동일한 AWS KMS 키로 모든 EBS 볼륨을 암호화합니다.

  • 계정에 대한 EBS 볼륨 암호화를 활성화하면 이 설정은 리전별로 다릅니다. AWS 리전에 대해 활성화하면 해당 리전의 개별 볼륨 또는 스냅샷에 대해 비활성화할 수 없습니다. 자세한 내용은 Amazon EC2 설명서의 기본적으로 암호화를 참조하세요.

  • 암호화되지 않은 기존 EBS 볼륨을 수정할 때는 EC2 인스턴스가 사용 중이 아닌지 확인합니다. 이 자동화는 암호화되지 않은 볼륨을 분리하고 암호화된 볼륨을 연결하기 위해 인스턴스를 종료합니다. 수정이 진행되는 동안에는 다운타임이 있습니다. 이것이 조직의 중요한 인프라인 경우, 인스턴스에서 실행되는 애플리케이션의 가용성에 영향을 미치지 않도록 수동 또는 자동 고가용성 구성을 마련해야 합니다. 중요한 리소스는 표준 유지 관리 기간에만 수정하는 것이 좋습니다.

아키텍처

자동화 워크플로

자동화 프로세스 및 서비스를 보여주는 상위 아키텍처 다이어그램
  1. AWS Config는 암호화되지 않은 EBS 볼륨을 감지합니다.

  2. 관리자는 AWS Config를 사용하여 Systems Manager에 수정 명령을 보냅니다.

  3. Systems Manager 자동화는 암호화되지 않은 EBS 볼륨의 스냅샷을 생성합니다.

  4. Systems Manager 자동화는 AWSKMS를 사용하여 스냅샷의 암호화된 사본을 생성합니다.

  5. Systems Manager 자동화는 다음 작업을 수행합니다.

    1. 영향을 받는 EC2 인스턴스가 실행 중인 경우 중지합니다.

    2. 암호화된 볼륨의 새 복사본을 EC2 인스턴스에 연결합니다.

    3. EC2 인스턴스를 원래 상태로 되돌립니다.

도구

AWS 서비스

  • AWS CLI – AWS 명령줄 인터페이스(AWS CLI)는 AWS 서비스의 퍼블릭 애플리케이션 프로그래밍 인터페이스(APIs)에 대한 직접 액세스를 제공합니다. 를 사용하여 서비스의 기능을 탐색AWSCLI하고 쉘 스크립트를 개발하여 리소스를 관리할 수 있습니다. 하위 수준 API등가 명령 외에도 여러 AWS 서비스가 AWS 에 대한 사용자 지정을 제공합니다CLI. 사용자 지정에는 복잡한 에서 서비스 사용을 단순화하는 상위 수준 명령이 포함될 수 있습니다API.

  • AWS CloudFormation – AWS CloudFormation 는 AWS 리소스를 모델링하고 설정하는 데 도움이 되는 서비스입니다. 원하는 모든 AWS 리소스(예: Amazon EC2 인스턴스)를 설명하는 템플릿을 생성하고 해당 리소스를 CloudFormation 프로비저닝하고 구성합니다.

  • AWS Config – AWS Config는 AWS 계정의 AWS 리소스 구성에 대한 세부 보기를 제공합니다. 이러한 보기에는 리소스 간에 어떤 관계가 있는지와 리소스가 과거에 어떻게 구성되었는지도 포함되므로, 시간이 지나면서 구성과 관계가 어떻게 변하는지 확인할 수 있습니다.

  • Amazon EC2 - Amazon Elastic Compute Cloud(Amazon EC2)는 소프트웨어 시스템을 구축하고 호스팅하는 데 사용하는 크기 조정 가능한 컴퓨팅 용량을 제공하는 웹 서비스입니다.

  • AWS KMS – AWS Key Management Service(AWS KMS)는 클라우드에 맞게 조정된 암호화 및 키 관리 서비스입니다. AWS KMS 키와 기능은 다른 AWS 서비스에서 사용하며 이를 사용하여 AWS 환경의 데이터를 보호할 수 있습니다.

  • AWS Organizations – AWS Organizations는 여러 계정을 생성하여 중앙에서 관리하는 조직으로 통합할 수 있는 AWS 계정 관리 서비스입니다.

  • AWS Systems Manager Automation – Systems Manager Automation은 Amazon EC2 인스턴스 및 기타 AWS 리소스에 대한 일반적인 유지 관리 및 배포 작업을 간소화합니다.

기타 서비스

  • jq – jq는 가볍고 유연한 명령줄 JSON 프로세서입니다. 이 도구를 사용하여 AWS CLI 출력에서 키 정보를 추출합니다.

코드

에픽

작업설명필요한 기술

스크립트 및 CloudFormation 템플릿을 다운로드합니다.

GitHub 고객 KMS 키 리포지토리를 사용하여 암호화되지 않은 EBS 볼륨 자동 수정에서 쉘 스크립트, JSON 파일 및 CloudFormation 템플릿을 다운로드합니다.

AWS 관리자, 일반 AWS

AWS KMS 키의 관리자를 식별합니다.

  1. AWS 관리 콘솔에 로그인하고 에서 IAM 콘솔을 엽니다https://console.aws.amazon.com/iam/.

  2. AWS KMS 키 관리자가 될 사용자 또는 역할을 식별합니다. 이러한 목적으로 새 사용자 또는 역할을 생성해야 하는 경우 지금 생성하십시오. 자세한 내용은 IAM 설명서의 IAM 자격 증명을 참조하세요. 이 자동화는 새 AWS KMS 키를 생성합니다.

  3. 식별되면 사용자 또는 역할의 Amazon 리소스 이름()을 복사합니다ARN. 자세한 내용은 IAM 설명서의 IAM ARNs 섹션을 참조하세요. ARN 다음 단계에서 이를 사용합니다.

AWS 관리자, 일반 AWS

Stack1 CloudFormation template를 배포합니다.

  1. 에서 AWS CloudFormation 콘솔을 엽니다https://console.aws.amazon.com/cloudformation/.

  2. 에서 Stack1.yaml 템플릿을 CloudFormation배포합니다. 아래의 배포 세부 정보에 주의합니다.

    • 스택에 명확한 서술식 이름을 지정합니다. 이 값은 다음 단계에서 필요하므로 스택 이름을 적어 둡니다.

    • 키 관리자의 를 Stack1ARN의 유일한 파라미터 필드에 붙여 넣습니다. 이 사용자 또는 역할은 스택에서 생성된 AWS KMS 키의 관리자가 됩니다.

CloudFormation 템플릿 배포에 대한 자세한 내용은 CloudFormation 설명서의 AWS CloudFormation 템플릿 작업을 참조하세요.

AWS 관리자, 일반 AWS

Stack2 CloudFormation template를 배포합니다.

에서 Stack2.yaml 템플릿을 CloudFormation배포합니다. 아래의 배포 세부 정보에 주의합니다.

  • 스택에 명확한 서술식 이름을 지정합니다.

  • Stack2의 유일한 매개변수에는 이전 단계에서 생성한 스택의 이름을 입력합니다. 이렇게 하면 Stack2가 이전 단계에서 스택에 의해 배포된 새 AWS KMS 키와 역할을 참조할 수 있습니다.

AWS 관리자, 일반 AWS

테스트용으로 암호화되지 않은 볼륨을 생성합니다.

암호화되지 않은 EBS 볼륨으로 EC2 인스턴스를 생성합니다. 지침은 Amazon 설명서의 Amazon EBS 볼륨 생성을 참조하세요. EC2 인스턴스 유형은 중요하지 않으며 인스턴스에 액세스할 필요가 없습니다. t2.micro 인스턴스를 생성하여 프리 티어를 유지할 수 있으며, 키 페어를 생성할 필요가 없습니다.

AWS 관리자, 일반 AWS

AWS Config 규칙을 테스트합니다.

  1. 에서 AWS Config 콘솔을 엽니다https://console.aws.amazon.com/config/. 규칙 페이지에서 암호화된 볼륨 규칙을 선택합니다.

  2. 암호화되지 않은 새 테스트 인스턴스가 비준수 리소스 목록에 나타나는지 확인합니다. 볼륨이 즉시 표시되지 않는 경우, 몇 분 더 기다렸다가 결과를 새로 고칩니다. AWS Config 규칙은 인스턴스와 볼륨이 생성된 직후 리소스 변경 사항을 감지합니다.

  3. 리소스를 선택한 다음 해결을 선택합니다.

Systems Manager에서 다음과 같이 수정 진행 상황과 상태를 볼 수 있습니다.

  1. 에서 AWS Systems Manager 콘솔을 엽니다https://console.aws.amazon.com/systems-manager/.

  2. 왼쪽 탐색 창에서 자동화를 선택합니다.

  3. 실행 ID 링크를 선택하면 단계와 상태를 볼 수 있습니다. 

AWS 관리자, 일반 AWS

추가 계정 또는 AWS 리전을 구성합니다.

사용 사례에 필요한 경우 추가 계정 또는 AWS 리전에 대해 이 에픽을 반복합니다.

AWS 관리자, 일반 AWS
작업설명필요한 기술

Enable 스크립트를 실행합니다.

  1. bash 쉘에서 cd 명령을 사용하여 복제된 리포지토리로 이동합니다.

  2. 다음 명령을 입력하여 enable-ebs-encryption-for-account 스크립트를 실행합니다.

    ./Bash/enable-ebs-encryption-for-account.sh
AWS 관리자, 일반 AWS, bash

설정이 업데이트되었는지 확인합니다.

  1. 에서 Amazon EC2 콘솔을 엽니다https://console.aws.amazon.com/ec2/.

  2. 화면 오른쪽의 설정에서 데이터 보호 및 보안 을 선택합니다.

  3. EBS 암호화 섹션에서 항상 새 EBS 볼륨 암호화가 켜져 있고 기본 암호화 키가 이전에 지정한 로 설정되어 ARN 있는지 확인합니다.

    참고: 항상 새 EBS 볼륨 암호화 설정이 꺼져 있거나 키가 여전히 별칭/aws/ebs로 설정된 경우 쉘 스크립트를 실행한 동일한 계정 및 AWS 리전에 로그인되어 있는지 확인하고 쉘에 오류 메시지가 있는지 확인합니다.

AWS 관리자, 일반 AWS

추가 계정 또는 AWS 리전을 구성합니다.

사용 사례에 필요한 경우 추가 계정 또는 AWS 리전에 대해 이 에픽을 반복합니다.

AWS 관리자, 일반 AWS
작업설명필요한 기술

서비스 제어 정책을 생성합니다.

  1. https://console.aws.amazon.com/organizations/v2/에서 AWS Organizations 콘솔을 엽니다.

  2. 새 서비스 제어 정책을 생성합니다. 자세한 내용은 AWS Organizations 설명서의 서비스 제어 정책 생성을 참조하세요.

  3. DenyUnencryptedEC2.json 내용을 정책에 추가하고 저장합니다. 첫 번째 에픽의 GitHub 리포지토리에서 이 JSON 파일을 다운로드했습니다.

  4. 이 정책을 조직 루트 또는 필요한 조직 단위()에 연결합니다OUs. 자세한 내용은 AWS Organizations 설명서의 서비스 제어 정책 연결 및 분리를 참조하세요.

AWS 관리자, 일반 AWS

관련 리소스

AWS 서비스 설명서

기타 리소스