Amazon EC2의 데이터 보호
Amazon EC2의 데이터 보호 (Data protection)
AWS의 공동 책임 모델(shared responsibility model)이 Amazon Elastic Compute Cloud의 데이터 보호에 적용됩니다. 이 모델에 설명된 대로 AWS는 AWS Cloud를 실행하는 글로벌 인프라를 보호할 책임이 있고, 사용자는 이 인프라에 호스팅된 콘텐츠에 대한 제어를 유지할 책임이 있습니다. 또한 사용자가 사용하는 AWS 서비스의 보안 구성과 관리 작업에도 책임이 있습니다.
출처: 문서
본문
AWS 공동 책임 모델이 Amazon Elastic Compute Cloud의 데이터 보호에 적용됩니다. 이 모델에 설명된 대로 AWS는 AWS Cloud를 실행하는 글로벌 인프라를 보호할 책임이 있고, 사용자는 이 인프라에 호스팅된 콘텐츠에 대한 제어를 유지할 책임이 있습니다. 또한 사용자가 사용하는 AWS 서비스의 보안 구성과 관리 작업에도 책임이 있습니다.
데이터 프라이버시에 대한 자세한 내용은 Data Privacy FAQ를 참고하세요. 유럽의 데이터 보호에 대한 정보는 General Data Protection Regulation (GDPR) Center를 참고하세요.
데이터 보호를 위해 AWS 계정 자격 증명을 보호하고 AWS IAM Identity Center 또는 AWS Identity and Access Management(IAM)로 개별 사용자를 설정할 것을 권장합니다. 그렇게 하면 각 사용자에게 업무 수행에 필요한 권한만 부여됩니다. 또한 다음과 같은 방식으로 데이터를 보호할 것을 권장합니다.
- 각 계정에 **멀티 팩터 인증(MFA)**을 사용해요.
- AWS 리소스와 통신할 때 SSL/TLS를 사용해요. TLS 1.2를 요구하고 TLS 1.3을 권장합니다.
- AWS CloudTrail로 API 및 사용자 활동 로깅을 설정해요. CloudTrail trail을 사용한 AWS 활동 캡처에 대한 정보는 AWS CloudTrail User Guide의 Working with CloudTrail trails를 참고하세요.
- AWS 서비스의 모든 기본 보안 제어와 함께 AWS 암호화 솔루션을 사용해요.
- Amazon S3에 저장된 민감한 데이터를 발견하고 보호하는 데 도움이 되는 Amazon Macie 같은 고급 관리형 보안 서비스를 사용해요.
- 명령줄 인터페이스나 API로 AWS에 액세스할 때 FIPS 140-3 검증 암호화 모듈이 필요하다면 FIPS 엔드포인트를 사용해요. 사용 가능한 FIPS 엔드포인트에 대한 자세한 내용은 FIPS 140-3을 참고하세요.
고객의 이메일 주소 같은 기밀 또는 민감한 정보를 태그나 Name 필드 같은 자유 형식 텍스트 필드에 넣지 말 것을 강력히 권장합니다. 이는 콘솔, API, AWS CLI, AWS SDK로 Amazon EC2 또는 다른 AWS 서비스로 작업할 때도 마찬가지입니다. 이름에 사용하는 태그나 자유 형식 텍스트 필드에 입력한 모든 데이터는 청구 또는 진단 로그에 사용될 수 있어요. 외부 서버에 URL을 제공한다면 서버에 대한 요청을 검증하기 위해 URL에 자격 증명 정보를 포함하지 않을 것을 강력히 권장합니다.
Amazon EBS 데이터 보안
Amazon EBS 볼륨은 원시(raw)·미포맷 블록 디바이스로 표시됩니다. 이 디바이스는 EBS 인프라에 생성되는 논리 디바이스이며, Amazon EBS 서비스는 고객이 사용하거나 재사용하기 전에 디바이스가 논리적으로 비어 있도록(즉 원시 블록이 0으로 설정되거나 암호화된 의사 난수 데이터가 포함되도록) 보장합니다.
DoD 5220.22-M(National Industrial Security Program Operating Manual)이나 NIST 800-88(Guidelines for Media Sanitization)에 상세히 나와 있는 것처럼, 사용 전 또는 후(또는 둘 다)에 특정 방법으로 모든 데이터를 지워야 하는 절차가 있다면 Amazon EBS에서 그렇게 할 수 있습니다. 이 블록 수준 활동은 Amazon EBS 서비스 내의 기본 스토리지 미디어까지 반영됩니다.
저장 데이터 암호화 (Encryption at rest)
EBS 볼륨
Amazon EBS 암호화는 EBS 볼륨과 스냅샷을 위한 암호화 솔루션이에요. AWS KMS 키를 사용합니다. 자세한 내용은 Amazon EBS User Guide의 Amazon EBS encryption을 참고하세요.
[Windows 인스턴스] 폴더·파일 수준 암호화에는 Microsoft EFS 및 NTFS 권한을 사용할 수도 있어요.
인스턴스 스토어 볼륨
NVMe 인스턴스 스토어 볼륨의 데이터는 인스턴스의 하드웨어 모듈에 구현된 XTS-AES-256 암호로 암호화됩니다. 로컬로 연결된 NVMe 스토리지 디바이스에 기록되는 데이터를 암호화하는 키는 고객별·볼륨별입니다. 키는 하드웨어 모듈에 의해 생성되고 하드웨어 모듈 안에만 존재하며, AWS 직원이 접근할 수 없습니다. 암호화 키는 인스턴스가 중지되거나 종료될 때 파괴되며 복구할 수 없어요. 이 암호화는 비활성화할 수 없고 직접 암호화 키를 제공할 수도 없습니다.
H1, D3, D3en 인스턴스의 HDD 인스턴스 스토어 볼륨 데이터는 XTS-AES-256과 일회용 키(one-time keys)로 암호화됩니다.
인스턴스를 중지, 최대 절전, 종료하면 인스턴스 스토어 볼륨의 모든 스토리지 블록이 초기화됩니다. 따라서 다른 인스턴스의 인스턴스 스토어를 통해 내 데이터에 액세스할 수 없습니다.
메모리 (Memory)
다음 인스턴스에서 메모리 암호화가 활성화됩니다.
- AWS Graviton2 이상 AWS Graviton 프로세서가 있는 인스턴스는 상시 메모리 암호화를 지원합니다. 암호화 키는 호스트 시스템 내에서 안전하게 생성되며 호스트 시스템 밖으로 나가지 않고, 호스트가 재부팅되거나 전원이 꺼지면 파괴됩니다. 자세한 내용은 AWS Graviton Processors를 참고하세요.
- 3세대 Intel Xeon Scalable 프로세서(Ice Lake)(예: M6i 인스턴스)와 4세대 Intel Xeon Scalable 프로세서(Sapphire Rapids)(예: M7i 인스턴스)가 있는 인스턴스. 이 프로세서는 Intel Total Memory Encryption(TME)을 사용한 상시 메모리 암호화를 지원합니다.
- 3세대 AMD EPYC 프로세서(Milan)(예: M6a 인스턴스)와 4세대 AMD EPYC 프로세서(Genoa)(예: M7a 인스턴스)가 있는 인스턴스. 이 프로세서는 AMD Secure Memory Encryption(SME)을 사용한 상시 메모리 암호화를 지원합니다.
- 일부 AMD 기반 인스턴스 유형에서 **AMD SEV-SNP(Secure Encrypted Virtualization-Secure Nested Paging)**가 지원됩니다. 자세한 내용은 Find EC2 instance types that support AMD SEV-SNP를 참고하세요.
전송 중 데이터 암호화 (Encryption in transit)
물리 계층에서의 암호화
AWS 글로벌 네트워크를 통해 AWS 리전 간을 이동하는 모든 데이터는 AWS 보안 시설을 떠나기 전에 물리 계층에서 자동으로 암호화됩니다. 가용 영역(AZ) 간의 모든 트래픽은 암호화됩니다. 이 섹션에 나열된 것을 포함한 추가 암호화 계층이 추가 보호를 제공할 수 있어요.
Amazon VPC 피어링 및 Transit Gateway 리전 간 피어링이 제공하는 암호화
Amazon VPC 피어링과 Transit Gateway 피어링을 사용하는 모든 리전 간 트래픽은 리전을 나갈 때 자동으로 벌크 암호화됩니다. 이 섹션에서 앞서 언급했듯 모든 트래픽은 AWS 보안 시설을 떠나기 전에 물리 계층에서 추가 암호화 계층이 자동으로 제공됩니다.
인스턴스 간 암호화
AWS는 모든 유형의 EC2 인스턴스 간에 안전하고 프라이빗한 연결을 제공합니다. 또한 일부 인스턴스 유형은 기본 Nitro System 하드웨어의 오프로드 기능을 사용해 인스턴스 간 전송 중 트래픽을 자동으로 암호화합니다. 이 암호화는 256비트 암호화의 AEAD(Authenticated Encryption with Associated Data) 알고리즘을 사용합니다. 네트워크 성능에는 영향이 없습니다. 인스턴스 간 추가 전송 중 트래픽 암호화를 지원하려면 다음 요구사항이 충족되어야 해요.
-
범용(General purpose): M5dn, M5n, M5zn, M6a, M6i, M6id, M6idn, M6in, M7a, M7g, M7gd, M7i, M7i-flex, M8a, M8azn, M8g, M8gb, M8gd, M8gn, M8i, M8id, M8i-flex, M8in, M8idn, M8ine, M8ib, M8idb, M9g, M9gd, Mac-m4, Mac-m4pro, T8i
-
컴퓨팅 최적화(Compute optimized): C5n, C6a, C6gn, C6i, C6id, C6in, C7a, C7g, C7gd, C7gn, C7i, C7i-flex, C8a, C8g, C8gb, C8gd, C8gn, C8i, C8id, C8i-flex, C8in, C8ine, C8ib, C9g, C9gd
-
메모리 최적화(Memory optimized): R5dn, R5n, R6a, R6i, R6id, R6idn, R6in, R7a, R7g, R7gd, R7i, R7iz, R8a, R8g, R8gb, R8gd, R8gn, R8i, R8id, R8i-flex, R8in, R8idn, R8ib, R8idb, R9g, R9gd, U-3tb1, U-6tb1, U-9tb1, U-12tb1, U-18tb1, U-24tb1, U7i-6tb, U7i-8tb, U7i-12tb, U7in-16tb, U7in-24tb, U7in-32tb, U7inh-32tb, X2idn, X2iedn, X2iezn, X8g, X8aedz, X8i
-
스토리지 최적화(Storage optimized): D3, D3en, I3en, I4g, I4i, I7i, I7ie, I8g, I8ge, Im4gn, Is4gen
-
가속 컴퓨팅(Accelerated computing): DL1, DL2q, F2, G4ad, G4dn, G5, G6, G6e, G6f, Gr6, Gr6f, G7, G7e, Inf1, Inf2, P3dn, P4d, P4de, P5, P5e, P5en, P6-B200, P6-B300, P6e-GB200, Trn1, Trn1n, Trn2, Trn2u, VT1
-
고성능 컴퓨팅(High-performance computing): Hpc6a, Hpc6id, Hpc7a, Hpc7g, Hpc8a
-
인스턴스가 같은 리전에 있어야 해요.
-
인스턴스가 같은 VPC 또는 피어링된 VPC에 있고, 트래픽이 로드 밸런서나 트랜짓 게이트웨이 같은 가상 네트워크 디바이스나 서비스를 통과하지 않아야 해요.
이 섹션에서 앞서 언급했듯 모든 트래픽은 AWS 보안 시설을 떠나기 전에 물리 계층에서 추가 암호화 계층이 자동으로 제공됩니다.
AWS CLI로 인스턴스 간 전송 중 트래픽을 암호화하는 인스턴스 유형 보기
다음 describe-instance-types 명령을 사용해요.
aws ec2 describe-instance-types \
--filters Name=network-info.encryption-in-transit-supported,Values=true \
--query "InstanceTypes[*].[InstanceType]" \
--output text | sort
AWS Outposts와의 암호화
Outpost는 AWS 홈 리전으로 가는 *서비스 링크(service links)*라는 특수 네트워크 연결과, 선택적으로 지정한 VPC 서브넷으로의 프라이빗 연결을 만듭니다. 이러한 연결을 통한 모든 트래픽은 완전히 암호화됩니다. 자세한 내용은 AWS Outposts User Guide의 Connectivity through service links와 Encryption in transit을 참고하세요.
원격 액세스 암호화
SSH 및 RDP 프로토콜은 직접 또는 EC2 Instance Connect를 통해 인스턴스에 원격 액세스하기 위한 안전한 통신 채널을 제공해요. AWS Systems Manager Session Manager나 Run Command를 사용한 인스턴스 원격 액세스는 TLS 1.2로 암호화되며, 연결 생성 요청은 SigV4로 서명되고 AWS Identity and Access Management로 인증·권한 부여됩니다.
클라이언트와 Amazon EC2 인스턴스 간 전송 중 민감한 데이터를 암호화하는 것은 Transport Layer Security(TLS) 같은 암호화 프로토콜을 사용하는 사용자의 책임입니다.
(Windows 인스턴스) EC2 인스턴스와 AWS API 엔드포인트 또는 다른 민감한 원격 네트워크 서비스 사이에서는 암호화된 연결만 허용하도록 하세요. 이는 아웃바운드 보안 그룹이나 Windows Firewall 규칙으로 강제할 수 있습니다.