클라우드에서 데이터와 애플리케이션을 안전하게 유지하는 것은 2020년 클라우드 팀이 직면한 가장 두드러진 도전 중 하나입니다. 데이터가 위치한 클라우드 저장 서비스는 종종 서비스 자체가 약점이 있는 것이 아니라 자주 부적절하게 구성되어 해커의 공격 대상이 됩니다.
1. EBS 볼륨을 왜 암호화해야 하나요?
데이터를 안전하게 보호하기 위해 암호화는 어떠한 저장 서비스를 사용하는 조직의 가장 중요한 우선 순위여야 합니다. AWS에서는 Elastic Block Store (EBS) 서비스가 Amazon EC2 인스턴스에 대한 지속적인 블록 레벨 저장 볼륨을 제공합니다. EBS 볼륨은 인스턴스에 연결되어 빠르게 변하는 데이터나 특정 입출력 작업(입출력 작업 수, IOPS)이 필요한 데이터에 주로 사용됩니다. 이러한 볼륨은 인스턴스에 지속적인 수준의 저장 공간을 제공하므로 중요한 데이터를 보관하고 개인 식별 정보 (PII)를 저장하는 데 이상적입니다. 이 경우 데이터를 암호화하여 악의적인 활동으로부터 보호하는 것이 중요합니다.
2. EBS 볼륨 암호화하는 방법
EBS 암호화 메커니즘을 사용하면 암호화를 직접 수행할 필요가 없어 키를 관리하는 데 걱정할 필요가 없습니다. 모든 것이 EBS에서 관리 및 구현됩니다. 그러나 새로운 EBS 볼륨을 어떻게 생성하느냐에 따라 암호화를 적용하는 여러 가지 다른 방법이 있습니다. 각 프로세스를 차례로 안내하겠습니다.
- EBS가 Key Management Service (KMS)와 함께 작동하는 방법
AWS는 EBS 서비스가 암호화를 수행하기 위해 다른 AWS 서비스인 Key Management Service (KMS)와 상호 작용하도록 설정합니다. KMS는 고객 마스터 키 (CMK)를 사용하여 데이터 암호화 키 (DEK)를 생성하며, 이를 통해 EBS 및 다양한 AWS 서비스에서 데이터 암호화가 가능합니다.
- 볼륨을 '암호화됨'으로 정의
- EBS는 KMS에 데이터 암호화 키를 요청
- KMS는 지정된 고객 마스터 키에서 DEK를 생성
- CMK가 DEK를 암호화
- 암호화된 DEK는 EBS 볼륨의 메타데이터에 저장됨
- EBS 볼륨이 EC2 인스턴스에 연결됨
- EC2는 EBS 볼륨에서 암호화된 DEK와 함께 '해독' 요청을 KMS에 전송
- KMS는 DEK를 평문 DEK로 해독하여 EC2 인스턴스에 다시 보냄
- EC2는 EBS 볼륨이 인스턴스에 연결된 동안 평문 DEK을 하이퍼바이저 메모리에 저장
- EC2는 AES-256 (고급 암호화 표준 - 256 비트) 알고리즘을 사용하여 볼륨에 대한 I/O 암호화를 수행
- 새로운 EBS 볼륨을 암호화하는 방법
- AWS 관리 콘솔에서 EC2를 선택
- 'Elastic Block Store'에서 'Volumes'를 선택
- 'Create Volume'을 선택
- 볼륨의 필요한 구성을 입력
- 'Encrypt this volume'의 확인란을 선택
- 'Master Key' 아래에서 사용할 KMS 고객 마스터 키 (CMK)를 선택
- 'Create Volume'을 선택
이제 볼륨이 생성되었으며, 이 볼륨에 저장된 모든 데이터는 EC2 인스턴스에 연결될 때 암호화됩니다.
- 새로운 EBS 볼륨을 생성하는 동안 EC2 인스턴스를 시작할 때 볼륨을 암호화하는 방법
- AWS 관리 콘솔에서 EC2를 선택
- 'Launch Instance'를 선택
- AMI 유형을 선택
- 인스턴스 유형을 선택
- 'Next: Configure Instance Details'를 클릭
- 필요한 대로 인스턴스를 구성
- 'Next: Add Storage'를 선택
- 'Add New Volume'를 선택
- 볼륨 유형이 'EBS'이고 저장소 요구 사항을 구성
- 'Encryption' 아래의 드롭다운 목록에서 사용할 KMS CMK 키를 선택
- EC2 인스턴스 시작 프로세스를 계속 진행
이제 해당 인스턴스에 연결된 EBS 볼륨이 암호화됩니다. 또한 이러한 암호화된 볼륨에서 생성된 스냅샷 (및 해당 스냅샷에서 생성된 볼륨) 또한 암호화됩니다.
- 기존 EBS 볼륨을 암호화하는 방법
기존에 암호화되지 않은 볼륨 및 해당 데이터는 암호화되어 있지 않을 수 있습니다. 대신에 아래의 다른 프로세스를 따라야 합니다.
- 암호화되지 않은 볼륨을 선택
- 'Actions' - 'Create Snapshot'을 선택
- 스냅샷이 완료되면 'Elastic Block Store' 아래에서 'Snapshots'를 선택하고 새로 생성된 스냅샷을 선택
- 'Actions' - 'Copy'를 선택
- 'Encryption' 확인란을 선택
- 필요한 대로 KMS를 사용할 CMK를 선택
- 'Copy'를 선택
- 새로 생성된 스냅샷을 선택
- 'Actions' - 'Create Volume'을 선택
- 'Encryption' 옵션이 'True'로 설정되어 있음에 유의하세요. 이 스냅샷 자체가 암호화되어 있기 때문에 이를 수정할 수 없습니다. 따라서 이 스냅샷에서 생성된 볼륨은 암호화됩니다.
- 새로운 EBS 볼륨에 대한 기본 암호화에 가입하는 방법
AWS는 사용자 (특히 관리자에게 특히 가치가 있는)가 특정 지역에서 생성되는 모든 EBS 볼륨에 자동으로 암호화를
활성화할 수 있는 기능을 도입했습니다. 참고: 이 기능은 널리 사용되지만 지역당으로 작동하며, 따라서 기본 암호화에 가입할 결정은 개별적으로 각 지역에서 활성화해야 합니다.
이 기능의 이점은 다음과 같습니다:
- 새로 생성된 모든 볼륨이 암호화됨을 보장
- 암호화된 EBS 볼륨이 필요한 IAM 정책을 기반으로 한 인스턴스 시작 실패 방지
- 추가 비용 없음
- AWS 콘솔뿐만 아니라 EC2 CLI 및 API를 통해 액세스 가능
- 규정 준수 목표를 달성하는 간단한 단계 제공
기본 암호화에 가입하는 단계:
- EC2 Console 대시 보드로 이동 > Settings (계정 속성 하위에서)
- 'Always encrypt new EBS volumes'를 선택
- 암호화 지원 인스턴스 유형
모든 EBS 볼륨 유형이 암호화를 지원하지만 모든 인스턴스 유형이 지원되지는 않습니다.
다음은 EBS 암호화를 지원하는 AWS 인스턴스 유형입니다:
- General purpose: A1, M3, M4, M5, M5a, M5ad, M5d, M5dn, M5n, T2, T3, T3a
- Compute optimized: C3, C4, C5, C5d, C5n
- Memory optimized: cr1.8xlarge, R3, R4, R5, R5a, R5ad, R5d, R5dn, R5n, u-6tb1.metal, u-9tb1.metal, u-12tb1.metal, u-18tb1.metal, u-24tb1.metal, X1, X1e, z1d
- Storage optimized: D2, h1.2xlarge, h1.4xlarge, I2, I3, I3en
- Accelerated computing: F1, G2, G3, G4, Inf1, P2, P3