본문 바로가기
Cloud 보안/AWS

Amazon Redshift 클러스터의 유휴 데이터 암호화

by 바른_자세 2021. 11. 22.

Amazon Redshift 클러스터의 유휴 데이터 암호화

■ Amazon Redshift 개념

 

데이터웨어하우스 시스템 아키텍처 / 출처: AWS Amazon Redshift 안내서

 

Amazon Redshift는 AWS 클라우드에서 관리되는 페타바이트급 데이터 웨어하우스 서비스입니다.

Amazon Redshift는 Node라는 컴퓨팅 리소스의 모음으로 Node는 Cluster라는 그룹을 구성합니다.

각 클러스터는 Amazon Redshift 엔진을 실행하며, 하나 이상의 데이터베이스를 포함합니다.

클러스터마다 Leader Node 1개와 Compute Node 1개 이상이 있습니다.

Leader Node는 Client Applications에서 Query를 수신하여 구문을 분석 후 Query 실행 계획을 작성합니다.

그리고 Leader Node는 실행 계획의 병렬 실행을 Compute Node에 맞춰 조정하고 중간 결과를 집계 후 최종적으로 결과를 다시 Client Applications에 반환합니다.

 

■ Amazon Redshift 데이터 암호화

1. 유휴시 암호화(데이터베이스 암호화)

Amazon Redshift는 클러스터의 데이터베이스 암호화를 통해 저장된 데이터를 보호합니다.

Amazon Redshift에서 암호화가 선택적 설정이지만 클러스터에 민감한 데이터가 저장되어 있다면 사용하는 것이 바람직합니다.

클러스터에서 암호화를 활성화하면 해당 클러스터와 스냅샷의 데이터 블록 및 시스템 메타 데이터가 암호화됩니다.

클러스터를 시작할 때 암호화를 활성화 하거나, AWS Key Management Service 암호화 사용, HSM(하드웨어 보안 모듈) 사용 중 선택하여 클러스터의 모든 데이터를 암호화 할 수 있습니다.

 

1-1. AWS KMS를 사용한 Amazon Redshift의 데이터베이스 암호화

 

Amazon Reddshift에서 AWS KMS를 선택하여 키를 관리할 때는 4개 티어의 암호화 키 계층으로 구성됩니다.

계층 순서에 따라 마스터 키, 클러스터 암호화 키(CEK), 데이터베이스 암호화 키(DEK), 데이터 암호화 키 입니다.

 

① 마스터 키

클러스터를 시작하면 Amazon Redshift가 AWS 계정에서 생성되었거나 AWS KMS에서 사용 권한이 있는 고객 마스터 키(CMK) 목록을 반환하고 이 중 암호화 계층의 마스터 키를 선택합니다.

기본적으로 기본 키를 마스터 키로 선택하는데 기본 키는 AWS 계정이 Amazon Redshift에서 사용할 목적으로 생성되는 AWS 관리형 키입니다.

이 키는 사용자가 AWS 리전에서 암호화된 클러스터를 처음 시작하여 기본 키를 선택할 때 AWS KMS에서 생성됩니다.

만약 기본 키를 사용하지 않으려면 클러스터를 시작하기 전 AWS KMS에서 고객 관리형 CMK를 별도로 가지고 있거나 생성해야 합니다.

고객 관리형 CMK는 액세스 제어 권한에 대한 생성, 순환, 비활성화 및 정의 기능 등 데이터 보호에 사용되는 암호화 키에 대한 감사 기능까지 포함되어 유연성을 높여주는 효과가 있습니다.

 

② 클러스터 암호화 키(CEK)

마스터 키를 선택하면 Amazon Redshift가 AWS KMS에 데이터 키를 생성한 후 선택한 마스터 키를 사용해 데이터 키를 암호화하도록 요청합니다.

이 데이터 키는 Amazon Redshift에서 클러스터 암호화 키(CEK)로 사용됩니다.

AWS KMS가 암호화된 CEK를 Amazon Redshift로 내보내면 여기에서 CEK의 암호화 컨텍스트와 CMK에 대한 권한이 부여되어 클러스터와 분리되어 있는 네트워크 디스크에 저장됩니다.

암호화된 CEK만 Amazon Redshift로 내보내지고, CMK는 AWS KMS에 남아 있습니다.

또한 Amaozn Redshift는 암호화된 CEK를 보안 채널을 통해 클러스터로 전달하고 이를 메모리에 로드합니다.

그 다음 Amazon Redshift는 AWS KMS를 호출하여 CEK를 복호화한 후 복호화된 CEK를 메모리에 로드합니다.

 

③ 데이터베이스 암호화 키(DEK)

Amazon Redshift가 DEK로 사용할 키를 무작위로 생성하여 클러스터의 메모리에 로드합니다.

복호화된 CEK는 DEK를 암호화하는 데 사용되며, 이후 암호화된 DEK는 클러스터에서 보안 채널을 통해 전송되어 Amazon Redshift에서 내부적으로 클러스터와 분리되어 있는 네트워크 디스크에 저장됩니다.

CEK와 마찬가지로 암호화 버전과 복호화 버전의 DEK 모두 클러스터의 메모리에 로드됩니다.

 

④ 데이터 암호화 키

이후 복호화 버전의 DEK는 데이터베이스의 데이터 블록마다 무작위로 생성되는 개별 암호화 키를 암호화하는 데 사용됩니다.

 

클러스터가 재부팅되면 Amazon Redshift가 내부에 저장된 암호화 버전의 CEK와 DEK를 통해 시작되면서 두 키를 메모리에 다시 로드합니다.

그런 다음 AWS KMS를 호출하여 다시 CMK를 사용해 메모리에 로드할 수 있도록 CEK를 복호화합니다.

복호화된 CEK가 다시 DEK를 복호화하고 복호화된 DEK는 메모리에 로드되어 필요할 때마다 데이터 블록 키를 암호화 하거나 복호화합니다.

 

AWS KMS는 AWS CloudTrail을 지원하므로 키가 적절하게 사용되고 있는지 키 사용을 감사할 수 있습니다.

 

1-2. 하드웨어 보안 모듈을 사용한 Amazon Redshift 암호화

 

HSM을 사용하도록 클러스터를 구성하면 Amazon Redshift가 CEK로 사용할 키를 생성하여 저장하라는 요청을 HSM으로 보냅니다. 

Amazon Redshift가 클러스터에서 무작위로 DEK를 생성한 후 CEK로 암호화 할 수 있도록 HSM으로 전송합니다.

HSM은 암호화된 DEK를 Amazon Redshift로 반환하며, 여기에서 무작위로 생성된 내부 마스터 키를 사용하여 추가로 암호화되고, 클러스터와 별도의 네트워크에 있는 디스크에 내부적으로 저장됩니다.

Amazon Redshift는 DEK의 복호화된 버전을 클러스터의 메모리에 로드하므로 DEK를 사용하여 데이터 블록의 개별 키를 암호화하고 복호화할 수 있습니다.

 

※ 주의사항

  • HSM 암호화는 DC2 및 RA3 노드 유형 미지원
  • Amazon Redshift는 AWS CloudHSM Classic만 지원
  • 신규 고객은 AWS CloudHSM Classic 이용 불가

* AQUA(Advanced Query Accelerator)는 Amazon Redshift에서 데이터 스냅샷을 Amazon S3에 저장하는 데 사용하는 것과 동일한 데이터베이스 암호화 키(DEK)를 수신하고 사용합니다.

 

* AQUA(Advanced Query Accelerator)란?

  • Amazon Redshift의 스토리지 계층에 컴퓨팅을 제공하고 다른 엔터프라이즈 클라우드 데이터 웨어하우스보다 최대 10배 빠른 쿼리 성능을 제공하는 새로운 분산형 및 하드웨어 가속 캐시 제공
  • 2021년 4월 14일 출시 기준, 미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(오레곤), 유럽(아일랜드) 및 아시아 태평양(도쿄) 리전에서 사용 가능